async def create_user( user: UserModel, enforcer: casbin.Enforcer = Depends(get_enforcer), db: Session = Depends(get_db), current_user: Auth0ClaimsPatched = Depends(get_current_user)): user_dict = user.dict() # Drop the roles field if it was provided. user_dict.pop('roles', None) new_user = User(id=current_user.username if current_user.username else 42) new_user_version = UserVersion(data=strip_metadata(user_dict), server_version=settings.server_version) new_user_version.user = new_user new_user.current = new_user_version add_owner(new_user, current_user.username) db.add_all([new_user, new_user_version]) db.commit() add_policy(enforcer, user=current_user.username, path=f"/user/{str(new_user.id)}", method="GET") add_policy(enforcer, user=current_user.username, path=f"/user/{str(new_user.id)}", method="PUT") return add_role(enforcer, versioned_row_to_dict(new_user, new_user_version))
def register(user_in: UserModel): if User.select().where(User.username == user_in.username).count() > 0: log.info( f'Tried to register existing username {user_in.username} (returned 409)' ) raise HTTPException(409, 'Username already exists.') # Calculamos o hash a partir da senha e criamos o usuário no banco de dados password_hash = pw_hasher.hash(user_in.password.get_secret_value()) new_user = User.create(username=user_in.username, password_hash=password_hash) assert new_user is not None log.info(f'Registered user {user_in.username}') return user_in.dict(exclude={'password'})
async def update_user( user_id: str, user: UserModel, enforcer: casbin.Enforcer = Depends(get_enforcer), db: Session = Depends(get_db), current_user: Auth0ClaimsPatched = Depends(get_current_user)): user_id = urllib.parse.unquote(user_id) user_dict = user.dict() # Drop the roles field if it was provided. user_dict.pop('roles', None) new_user = db.query(User).get(user_id) if not new_user or new_user.is_deleted: raise HTTPException(status_code=404, detail='User Not Found') new_user_version = UserVersion(data=strip_metadata(user_dict), server_version=settings.server_version) new_user_version.user = new_user add_updator(new_user_version, current_user.username) new_user.current = new_user_version db.add(new_user_version) db.commit() return add_role(enforcer, versioned_row_to_dict(new_user, new_user.current))