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())
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)
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})
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})
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
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})