Este sistema permite a gestão de usuários e comentários. Os usuários podem se cadastrar, autenticar e interagir com os comentários, com funcionalidades como edição, histórico e exclusão, além de um controle de acesso baseado em permissões.
-
Gerenciamento de Usuários:
- O sistema permite que os usuários se cadastrem e editem seu cadastro.
- A rota
/api/register
permite o cadastro de novos usuários e a rota/api/me
permite que usuários autenticados editem suas informações.
-
Autenticação via E-mail e Senha:
- O sistema permite a autenticação de usuários através de e-mail e senha.
- A rota
/api/auth
realiza o login, retornando um token de autenticação que será utilizado nas requisições subsequentes. - A autenticação é feita via token em todas as requisições após o login (utilizando
auth:sanctum
).
-
Gerenciamento de Comentários:
- Os comentários podem ser acessados por qualquer usuário (rota
/api/comments
). - Apenas usuários autenticados podem criar comentários, utilizando a rota
/api/comments
(POST). - O autor do comentário e a data e hora da postagem são retornados nas respostas.
- Os comentários podem ser acessados por qualquer usuário (rota
-
Controle de Acesso:
- Usuários autenticados podem criar, editar e excluir seus próprios comentários.
- A exclusão de todos os comentários só é permitida ao administrador.
-
Edição de Comentários:
- O sistema permite que os usuários editem seus próprios comentários.
- A data de criação e a data da última edição do comentário são exibidas.
-
Histórico de Edições de Comentários:
- O sistema mantém um histórico de edições de comentários, permitindo que o usuário veja as versões anteriores de seu comentário.
- A rota
/api/comments/{commentId}/history
exibe o histórico de edições de um comentário específico.
-
Exclusão de Comentários:
- Os usuários podem excluir seus próprios comentários.
- O administrador tem permissão para excluir todos os comentários através da rota
/api/comments
(DELETE).
-
Criptografia de Senha:
- As senhas dos usuários são criptografadas ao serem armazenadas no banco de dados, utilizando o método
Hash::make
do Laravel.
- As senhas dos usuários são criptografadas ao serem armazenadas no banco de dados, utilizando o método
-
Testes Automatizados:
- O sistema inclui testes automatizados na camada de serviço utilizando PHPUnit para validar o comportamento das funcionalidades.
- Os testes garantem que as funcionalidades de criação, edição, exclusão de comentários, bem como a autenticação de usuários, estejam funcionando corretamente.
- Os testes são executados com o comando
php artisan test
.
- POST
/api/auth
: Autentica o usuário com e-mail e senha, retornando um token de autenticação. - POST
/api/register
: Realiza o cadastro de um novo usuário.
- GET
/api/comments
: Retorna todos os comentários disponíveis. - GET
/api/comments/{commentId}
: Retorna um comentário específico pelo seu ID. - POST
/api/comments
: Permite que um usuário autenticado crie um novo comentário. - GET
/api/comments/{commentId}/history
: Exibe o histórico de edições de um comentário. - PUT
/api/comments/{commentId}
: Permite que um usuário autenticado edite seu próprio comentário. - DELETE
/api/comments
: Permite que um administrador exclua todos os comentários. - DELETE
/api/comments/{commentId}
: Permite que um usuário exclua seu próprio comentário.
- GET
/api/me
: Retorna as informações do usuário autenticado. - PUT
/api/me
: Permite que o usuário autenticado edite suas informações. - PATCH
/api/change-password
: Permite que o usuário altere sua senha. - POST
/api/logout
: Realiza o logout do usuário autenticado.
- Laravel 8: Framework PHP para desenvolvimento da API.
- Sanctum: Para autenticação de tokens.
- MySQL: Banco de dados utilizado para armazenar os dados dos usuários e comentários.
- PHPUnit: Framework para testes automatizados.
- PHP 8.0
- Composer
- MySQL ou outro banco de dados configurado
- Clone o repositório:
git clone https://github.com/iFHA/Selecao-Back-End.git
- Instale as dependências do projeto:
composer install
- Renomeie o arquivo .env.example para .env e configure-o com suas credenciais do banco de dados:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nome_do_banco
DB_USERNAME=usuario
DB_PASSWORD=senha
- Gere a chave do projeto
php artisan key:generate
- Execute as migrações para criar as tabelas necessárias:
php artisan migrate
- Também pode ser feito um seed após executar as migrations, que irá gerar um usuário admin(email "admin@gmail.com" e senha "password") e alguns comentários gerados pela biblioteca faker
php artisan db:seed
- Para rodar os testes automatizados com PHPUnit:
php artisan test
- Inicie o servidor de desenvolvimento:
php artisan serve
Agora, basta acessar alguma das rotas listadas anteriormente, através do endereço informado pela saída do comando acima, como por exemplo: verbo HTTP GET, header "Accept: application/json" e endereço: http://127.0.0.1:8000/api/comments.
Foram disponibilidados na raiz desse projeto arquivos de "collection" e "environment" do postman, contendo informações mais detalhadas sobre as rotas, e que podem ser importados no postman para mais facilidade no momento de fazer as requisições.
Este sistema foi desenvolvido com foco em segurança e desempenho, utilizando boas práticas como a criptografia de senhas e a autenticação via token. A implementação de testes automatizados garante que as funcionalidades sejam validadas de forma contínua. A estrutura modular do código facilita a manutenção e a expansão do sistema.
- Clone o projeto
git clone https://github.com/iFHA/Selecao-Back-End.git
- Acesse a pasta do projeto
cd Selecao-Back-End/
- Crie o Arquivo .env
cp .env.example .env
- Atualize as variáveis de ambiente no arquivo .env
APP_NAME="Sistema de Comentários"
APP_URL=http://localhost:8989
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
- Suba os containers do projeto
docker-compose up -d
- Acesse o container
docker-compose exec app bash
- Instale as dependências do projeto
composer install
- Gere a chave do projeto Laravel
php artisan key:generate
- Rode as migrações
php artisan migrate
- Também pode ser feito um seed após executar as migrations, que irá gerar um usuário admin(email "admin@gmail.com" e senha "password") e alguns comentários gerados pela biblioteca faker
php artisan db:seed
- Para rodar os testes automatizados com PHPUnit:
php artisan test
O servidor de desenvolvimento poderá ser acessado por meio do endereço http://127.0.0.1:8989
E a api por meio do endereço http://127.0.0.1:8989/api