Exemplo n.º 1
0
    def user_login(self, username, password):
        try:
            user_result = db.session.query(User).filter(
                User.username == username).first()

            if not user_result:
                return None, ResultCode.ValueError

            user_hash = user_result.user_hash

            result = db.session.query(
                Authentication.hmac_key,
                Authentication.encrypted_password).filter(
                    Authentication.user_hash == user_hash).first()

        except Exception as exc:
            current_app.logger.critical("user_login: Unknown error: %s" % exc)
            return None, ResultCode.DBError

        if result is None:
            return None, ResultCode.ValueError

        hmac_key = result.hmac_key
        encrypted_password = Util.getEncryptedPassword(hmac_key, password)

        if result.encrypted_password == encrypted_password:
            return FlaskUser(user_hash, username), ResultCode.Success
        else:
            return None, ResultCode.ValueError
Exemplo n.º 2
0
    def user_register(self, username, password):

        hmac_key = Util.generateRandomBytes(32)
        encrypted_password = Util.getEncryptedPassword(hmac_key, password)
        user_hash = Util.generateUserHash(username)

        try:
            db.session.add(User(username, user_hash, email=None))
            db.session.add(
                Authentication(user_hash, encrypted_password, hmac_key))
            db.session.commit()
        except sqlalchemy.exc.IntegrityError as exc:
            current_app.logger.critical("user_register: Integrity error: %s" %
                                        exc)
            return None, ResultCode.FormatError
        except Exception as exc:
            current_app.logger.critical("user_register: Unknown error: %s" %
                                        exc)
            return None, ResultCode.DBError

        return "ok", ResultCode.Success