Criadas as rotas GET (apenas para teste), CREATE e PUT.
A rota CREATE cadastra o usuário(apenas com id, nome e e-mail) por meio de um Token fornecido pelo Google.
A rota PUT recebe o restante das informações do usuário, são elas: apelido, gênero, endereços e telefones.
Não é possível alterar o e-mail nem o nome do usuário.
Como no momento só há login pelo Google, a lógica de autenticação e validação de Token se encontra toda dentro de UserService.
Solução encontrada
A solução implementada por eu(Matheus) e o Giovane foi a utilização de cookies, onde a cada login é gerada uma nova sessão do usuário, não é a solução mais performática pois em cada requisição será realizada uma nova consulta no banco, porém é uma solução simples e como se trata de uma poc, achamos mais interessante implementar deste modo.
Novas Classes
O userMiddleware é responsável por pegar o usuário e seus dados, e inserir dentro de cada request, para poder ser utilizado em qualquer local e momento no back;
O GoogleException e FirebaseException são somente instâncias de erros;
O @types é necessário para declarar novas variáveis dentro da session(idUser) e request(user).
Checklist
Criar UserModel, AddressModel e PhoneModel
Pegar informações do usuário pela autenticação com o Google
Criar endpoint para cadastro com informações do Google
Criar endpoint para cadastro do restante das informações do usuário