def _add_one_user(db: directives.PeeweeSession, username: hug.types.text, password: hug.types.text = None, role: hug.types.one_of(UserRoles.user_roles()) = UserRoles.USER, coupons: hug.types.number = 10): with db.atomic(): name = username.lower() salt = get_random_string(2) secret_password = password or get_random_string(12) hashed_password = hash_pw(name, salt, secret_password) user = User.create(user_name=name, role=role, salt=salt, password=hashed_password, coupons=coupons) user.save() return {"name": user.user_name, "password": secret_password}
def get_or_create_anon_user(context: PeeweeContext): name = "unregistered_user" with context.db.atomic(): try: user = User.get(User.user_name == name) return user except DoesNotExist: user = User.create(user_name=name, role=UserRoles.ANON, salt="", password="", coupons=4) user.save() return user
def get_or_create_auto_user(db: PeeweeSession, role: str, name: str): coupons = 4 if ( role == UserRoles.ANON ) else config.Ldap.user_coupon_number if role == UserRoles.USER else 1 with db.atomic(): try: user = User.get(User.user_name == name) return user except DoesNotExist: user = User.create(user_name=name, role=role, salt="", password="", coupons=coupons) user.save() return user
def put_user(db: PeeweeSession, newUserName: hug.types.text, newUserPassword: hug.types.text, newUserPasswordConfirm: hug.types.text): if newUserPassword != newUserPasswordConfirm: raise hug.HTTPBadRequest with db.atomic(): try: name = newUserName.lower() salt = get_random_string(2) secret_password = newUserPassword hashed_password = hash_pw(name, salt, secret_password) user = User.create(user_name=name, role=UserRoles.USER, salt=salt, password=hashed_password, coupons=10) user.save() return { "username": user.user_name } except IntegrityError: raise hug.HTTPConflict('User already exists.')