133 lines
No EOL
4.5 KiB
Python
133 lines
No EOL
4.5 KiB
Python
# Importação de bibliotecas
|
|
from typing import Optional
|
|
from fastapi import APIRouter, Body, Depends, status
|
|
from actions.jwt.get_current_user import get_current_user
|
|
from packages.v1.administrativo.controllers.user_controller import UserController
|
|
from packages.v1.administrativo.schemas.user_schema import (
|
|
UserSchema,
|
|
UserAuthenticateSchema,
|
|
UserSaveSchema,
|
|
UserUpdateSchema,
|
|
UserEmailSchema,
|
|
UserIdSchema
|
|
)
|
|
|
|
# Inicializa o roteador para as rotas de usuário
|
|
router = APIRouter()
|
|
|
|
# Instânciamento do controller desejado
|
|
user_controller = UserController()
|
|
|
|
# Autenticação de usuário
|
|
@router.post('/authenticate',
|
|
status_code=status.HTTP_200_OK,
|
|
summary='Cria o token de acesso do usuário',
|
|
response_description='Retorna o token de acesso do usuário')
|
|
async def index(user_authenticate_schema : UserAuthenticateSchema):
|
|
|
|
# Efetua a autenticação de um usuário junto ao sistema
|
|
response = user_controller.authenticate(user_authenticate_schema)
|
|
|
|
# Retorna os dados localizados
|
|
return response
|
|
|
|
# Dados do usuário logado
|
|
@router.get('/me',
|
|
status_code=status.HTTP_200_OK,
|
|
summary='Retorna os dados do usuário que efetuou o login',
|
|
response_description='Dados do usuário que efetuou o login' )
|
|
async def me(current_user: dict = Depends(get_current_user)):
|
|
|
|
# Busca os dados do usuário logado
|
|
response = user_controller.me(current_user)
|
|
|
|
# Retorna os dados localizados
|
|
return response
|
|
|
|
# Lista todos os usuários
|
|
@router.get('/',
|
|
status_code=status.HTTP_200_OK,
|
|
summary='Lista todos os usuário cadastrados',
|
|
response_description='Lista todos os usuário cadastrados')
|
|
async def index(current_user: dict = Depends(get_current_user)):
|
|
|
|
# Busca todos os usuários cadastrados
|
|
response = user_controller.index()
|
|
|
|
# Retorna os dados localizados
|
|
return response
|
|
|
|
# Localiza um usuário pelo email
|
|
@router.get('/email',
|
|
status_code=status.HTTP_200_OK,
|
|
summary='Busca um registro em especifico por e-mail informado',
|
|
response_description='Busca um registro em especifico')
|
|
async def getEmail(email : str, current_user: dict = Depends(get_current_user)):
|
|
|
|
# Cria o schema com os dados recebidos
|
|
usuario_schema = UserEmailSchema(email=email)
|
|
|
|
# Busca um usuário especifico pelo e-mail
|
|
response = user_controller.getEmail(usuario_schema)
|
|
|
|
# Retorna os dados localizados
|
|
return response
|
|
|
|
# Localiza um usuário pelo ID
|
|
@router.get('/{user_id}',
|
|
status_code=status.HTTP_200_OK,
|
|
summary='Busca um registro em especifico pelo ID do usuário',
|
|
response_description='Busca um registro em especifico')
|
|
async def show(user_id : int, current_user: dict = Depends(get_current_user)):
|
|
|
|
# Cria o schema com os dados recebidos
|
|
usuario_schema = UserIdSchema(user_id=user_id)
|
|
|
|
# Busca um usuário especifico pelo ID
|
|
response = user_controller.show(usuario_schema)
|
|
|
|
# Retorna os dados localizados
|
|
return response
|
|
|
|
|
|
# Cadastro de usuários
|
|
@router.post('/',
|
|
status_code=status.HTTP_200_OK,
|
|
summary='Cadastra um usuário',
|
|
response_description='Cadastra um usuário')
|
|
async def save(usuario_schema : UserSaveSchema, current_user: dict = Depends(get_current_user)):
|
|
|
|
# Efetua o cadastro do usuário junto ao banco de dados
|
|
response = user_controller.save(usuario_schema)
|
|
|
|
# Retorna os dados localizados
|
|
return response
|
|
|
|
# Atualiza os dados de usuário
|
|
@router.put('/{user_id}',
|
|
status_code=status.HTTP_200_OK,
|
|
summary='Atualiza um usuário',
|
|
response_description='Atualiza um usuário')
|
|
async def update(user_id : int, usuario_schema : UserUpdateSchema, current_user: dict = Depends(get_current_user)):
|
|
|
|
# Efetua a atualização dos dados de usuário
|
|
response = user_controller.update(user_id, usuario_schema)
|
|
|
|
# Retorna os dados localizados
|
|
return response
|
|
|
|
# Exclui um determinado usuário
|
|
@router.delete('/{user_id}',
|
|
status_code=status.HTTP_200_OK,
|
|
summary='Remove um usuário',
|
|
response_description='Remove um usuário')
|
|
async def delete(user_id : int, current_user: dict = Depends(get_current_user)):
|
|
|
|
# Cria o schema com os dados recebidos
|
|
usuario_schema = UserIdSchema(user_id=user_id)
|
|
|
|
# Efetua a exclusão de um determinado usuário
|
|
response = user_controller.delete(usuario_schema)
|
|
|
|
# Retorna os dados localizados
|
|
return response |