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
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