Exemplo n.º 1
0
async def login(
    user: PostUserLoginModel = Body(..., embed=True),
    user_db_repo: UsersDBRepository = Depends(
        get_database_repo(UsersDBRepository)),
) -> PublicUserInDB:
    user = await user_db_repo.authenticate_user(username=user.username,
                                                password=user.password)
    if not user:
        raise HTTPException(
            status_code=HTTP_401_UNAUTHORIZED,
            detail="Authentication was unsuccessful.",
            headers={"WWW-Authenticate": "Beared"},
        )

    access_token = AccessToken(
        access_token=auth_service.create_access_token_for_user(user=user),
        token_type="bearer")

    # TODO: Blacklist old token and add new
    await user_db_repo.update_token(user_id=user.id,
                                    token=access_token.access_token)

    user.jwt = access_token

    return PublicUserInDB(**user.dict())
Exemplo n.º 2
0
async def register_new_user(
    new_user: UserCreate = Body(..., embed=True),
    user_repo: UsersRepository = Depends(get_repository(UsersRepository)),
) -> UserPublic:
    created_user = await user_repo.register_new_user(new_user=new_user)
    access_token = AccessToken(
        access_token=auth_service.create_access_token_for_user(user=created_user), token_type="bearer"
    )
    return UserPublic(**created_user.dict(), access_token=access_token)
Exemplo n.º 3
0
async def register_new_user(
    new_user: UserCreate = Body(..., embed=True),
    user_repo: UsersRepository = Depends(get_repository(UsersRepository)),
) -> UserPublic:
    created_user = await user_repo.register_new_user(new_user=new_user)
    access_token = AccessToken(
        access_token=auth_service.create_access_token_for_user(user=created_user), token_type="bearer"
    )
    # we can return the access_token because we added it as
    # an optional property in UserPublic
    return created_user.copy(update={"access_token": access_token})
Exemplo n.º 4
0
async def register_new_user(
    new_user: UserCreate = Body(..., embed=False),
    user_repo: UsersRepository = Depends(get_repository(UsersRepository)),
) -> UserPublic:
    created_user = await user_repo.register_new_user(new_user=new_user)

    access_token = AccessToken(
        access_token=auth_service.create_access_token_for_user(
            user=created_user),
        token_type="bearer")

    return created_user.copy(update={"access_token": access_token})
Exemplo n.º 5
0
async def user_login_with_email_and_password(
    user_repo: UsersRepository = Depends(get_repository(UsersRepository)),
    form_data: OAuth2PasswordRequestForm = Depends(OAuth2PasswordRequestForm),
) -> AccessToken:
    user = await user_repo.authenticate_user(email=form_data.username, password=form_data.password)
    if not user:
        raise HTTPException(
            status_code=HTTP_401_UNAUTHORIZED,
            detail="Authentication was unsuccessful.",
            headers={"WWW-Authenticate": "Bearer"},
        )
    access_token = AccessToken(access_token=auth_service.create_access_token_for_user(user=user), token_type="bearer")
    return access_token
Exemplo n.º 6
0
async def register_new_user(
    new_user: UserCreate = Body(..., embed=True),
    user_repo: UsersRepository = Depends(get_repository(UsersRepository)),
) -> UserPublic:
    created_user = await user_repo.register_new_user(new_user=new_user)

    access_token = AccessToken(
        access_token=auth_service.create_access_token_for_user(
            user=created_user),
        token_type="bearer",
    )

    # Since we're now returning a UserPublic model upon registration,
    # we can simply update the access_token attribute with our
    # new token and return that user. Simple enough.
    return created_user.copy(update={"access_token": access_token})