예제 #1
0
    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
예제 #2
0
    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()
예제 #3
0
    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()