- Baixe este repositório.
- Escolha sua branch utilizando no terminal o seguinte comando:
git checkout nomeDaBranch
- Execute o seguinte comando para criar uma tabela no banco Mysql para a API
mysql> create database cblab
- Altere o login e senha do banco no arquivo pom.xml (localizado na raiz do projeto)
-
# PS-cblab/pom.xml spring.datasource.url=jdbc:mysql://localhost:3306/cblab spring.datasource.username=SEU LOGIN DO BANCO DE DADOS spring.datasource.password=SUA SENHA DO BANCO DE DADOS
- Na pasta raiz do projeto, rode o seguinte comando:
mvn spring-boot:run
- Caso não possua o maven em sua máquina, poderá executar na branch master, um dos 2 arquivos .jar disponíveis, apenas garanta que o login e senha do seu bando de dados seja:
login: admin
senha: 12345678
Login: admin@admin.com senha: admin
Login: usuario@usuario.com senha: usuario
Por motivos de segurança, decidi não disponibilizar o cadastro de um super usuário, imaginando a situação de um usuário mal intencionado conseguir a senha de um super usuário e assim, criar um super usuário para si.
- Um usuário deve ter nome, email, senha e se é um super usuário
- Cadastrar, listar e logar um usuário
- Somente super usuários podem listar e cadastrar usuários
- Usuários comuns só podem logar e ver seus dados
- A autenticação deve ser feita seguindo o protocolo Oauth2
Este repositório possui duas branches com duas variações do mesmo projeto. Por questões de usabilidade, recomendo utilizar a branch finalFront
para teste e utilizar a branch master
para análise de código da API REST
master
temos uma API REST sem um client, com autenticação pelo spring security, você pode testa-la utilizando um RESTClient (Postman, Insomnia, etc..) e seguindo as instruções do tópico Rotas de uso
Na branch finalFront
temos um app spring que possui autenticação com spring security e uma inferface criada utilizando HTML, CSS, Bootstrap e thymeleaf (Para mais informações sobre a escolha das tecnologias, clique aqui).
GET
/usuario/todos - Obtém um JSON com todos os usuários cadastrados no sistema, informando, ID, nome, email e se é um super usuárioPOST
/usuario - Cadastra um usuário no sistema, devem ser passados por JSON: Nome, email e senha.GET
/usuario - Mostra as informações do usuário logado.GET
/usuario/{id} - Mostra o usuário com o id informado.
- Java 11;
- Spring 2.5.6;
- Mysql;
- HTML 5;
- CSS3;
- Bootstrap;
Essas tecnologias foram escolhidas principalmente por conhecimento, afinidade e experiência com as mesmas.
Infelizmente não conhecia o OAuth2 e o tempo não foi suficiente para aprender a utilizar e implementar o mesmo no spring. Para não deixar sem nenhuma segurança, implementei o Spring security.
Por não possuir experiência, nem muitos estudos com Front-end, não consegui construir um client com algum framework (seja React, Vue ou Angular). Foram realizadas tentativas de construir um client mas sem sucesso, pois além da construção do mesmo, seria necessário implementar o OAuth2.
Primeiramente gostaria de agradecer a oportunidade de estar participando deste processo seletivo. Infelizmente não consegui atender a todos os critérios descritos no email, mas aprendi bastante tentando implementa-los. Espero conseguir ser aprovado, mas caso contrário, ser selecionado para esta fase do processo já foi bastante gratificante. Atenciosamente, Carlos Daniel Godoy.