Exemple #1
0
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
    }
Exemple #2
0
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()}
Exemple #4
0
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
    )
Exemple #5
0
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))