def login( user_schema: UserSchema = Body(..., embed=True, alias="user"), session: Session = Depends(get_session), ): user_service = UserService(session) auth_service = AuthenticationService(session) if not user_service.get_by_email(user_schema.email): raise HTTPException( status_code=HTTP_404_NOT_FOUND, detail='E-mail não encontrado' ) try: token = auth_service.get_token( user_schema.email, user_schema.password ) except EmailOrPasswordInvalid: raise HTTPException( status_code=HTTP_401_UNAUTHORIZED, detail='E-mail ou senha inválido' ) return { 'message': 'Login efetuado', 'token': token }
def post_favorite_tourist_spot( id: int, session: Session = Depends(get_session), authorization: str = Depends(api_key_authorization), ) -> Success: try: token = JWT().validate(authorization) except JWTExceptionExpired: raise HTTPException( status_code=HTTP_401_UNAUTHORIZED, detail='Recurso não autorizado' ) user_service = UserService(session) user = user_service.get_by_email(token['email']) tourist_spot_service = TouristSpotService(session) try: tourist_spot = tourist_spot_service.get_by_id(id) except NoResultFound: raise HTTPException( status_code=HTTP_404_NOT_FOUND, detail='Ponto turistico não encontrado' ) favorite_service = FavoriteTouristSpotService(session) favorite_service.insert({ 'user_id': user.id, 'tourist_spot_id': tourist_spot.id }) return Success( message='Ponto turistico favoritado com sucesso' )
def post(self): body = json_body_validator(SignInSchema) username = body.get("username", "Guest") email = body["email"] if UserService.exists_by_email(email): user = UserService.get_by_email(email) session["id"] = user.id return {"data": user.to_dict()} user = UserService.add(username, email) session["id"] = user.id return {"data": user.to_dict()}
def signup( user_schema: UserSchema = Body(..., embed=True, alias="user"), session: Session = Depends(get_session), ) -> ObjectCreate: user_service = UserService(session) if user_service.get_by_email(user_schema.email): raise HTTPException( status_code=HTTP_401_UNAUTHORIZED, detail='Usuário já criado' ) user = user_service.insert(user_schema.dict()) return ObjectCreate( message='Usuário criado com sucesso', object_id=user.id )
def get_favorite_tourist_spot( offset: int = 0, limit: int = 100, session: Session = Depends(get_session), authorization: str = Depends(api_key_authorization), ) -> FavoriteTouristSpotPagedSchema: try: token = JWT().validate(authorization) except JWTExceptionExpired: raise HTTPException(status_code=HTTP_401_UNAUTHORIZED, detail='Recurso não autorizado') user_service = UserService(session) user = user_service.get_by_email(token['email']) favorites = user_service.get_favorite_tourist_spots(offset, limit, user.id) return FavoriteTouristSpotPagedSchema(items=favorites, total=len(favorites))