Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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'})
Exemplo n.º 3
0
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))