def auth_db_authenticate(self, username, password): " authenticate email/password pair in AMO database " columns = ('id', 'email', 'username', 'display_name', 'password', 'homepage') auth_cursor = get_amo_cursor() SQL = ('SELECT %s FROM %s WHERE email=%%s') % ( ','.join(columns), settings.AUTH_DATABASE['TABLE']) auth_cursor.execute(SQL, username) data = auth_cursor.fetchone() user_data = {} for i in range(len(data)): user_data[columns[i]] = data[i] if not user_data: return None if '$' not in user_data['password']: valid = (get_hexdigest('md5', '', password) == user_data['password']) else: algo, salt, hsh = user_data['password'].split('$') valid = (hsh == get_hexdigest(algo, salt, password)) if not valid: return None username = user_data['id'] self.user_data = user_data return username
def update_from_AMO(self, data=None): if not data: auth_cursor = get_amo_cursor() columns = ('id', 'email', 'username', 'display_name', 'email' , 'homepage') SQL = ('SELECT %s FROM %s WHERE id=%%s') % ( ','.join(columns), settings.AUTH_DATABASE['TABLE']) auth_cursor.execute(SQL, [self.user.username]) row = auth_cursor.fetchone() data = {} if row: for i in range(len(row)): data[columns[i]] = row[i] if 'display_name' in data: if data['display_name']: names = data['display_name'].split(' ') self.user.firstname = names[0] if len(names) > 1: self.user.lastname = names[-1] self.user.save() if 'username' in data: self.nickname = data['username'] log.debug('nickname "%s" updated from AMO by id (%s)' % ( self.nickname, self.user.username)) if 'homepage' in data: self.homepage = data['homepage'] self.save()
def update_from_AMO(self, data=None): if not data: auth_cursor = get_amo_cursor() columns = ("id", "email", "username", "display_name", "email", "homepage") SQL = ("SELECT %s FROM %s WHERE username=%s") % ( ",".join(columns), settings.AUTH_DATABASE["TABLE"], self.nickname, ) auth_cursor.execute(SQ) data = auth_cursor.fetchone() data = {} for i in range(len(data)): data[columns[i]] = data[i] if "display_name" in data: if data["display_name"]: names = data["display_name"].split(" ") self.user.firstname = names[0] if len(names) > 1: self.user.lastname = names[-1] self.user.save() if "username" in data: self.nickname = data["username"] if "homepage" in data: self.homepage = data["homepage"] self.save()