{"id":20122619,"url":"https://github.com/mspilari/spring_login","last_synced_at":"2026-04-29T10:03:34.892Z","repository":{"id":261309714,"uuid":"883921035","full_name":"MSpilari/spring_login","owner":"MSpilari","description":"Login application with user authentication and password recovery features. Includes modules for user management, email notifications, and error handling to ensure secure login and account recovery.","archived":false,"fork":false,"pushed_at":"2025-02-15T15:28:10.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T16:28:09.467Z","etag":null,"topics":["java","jwt-token","mailtrap","spring-boot","spring-data-jpa","spring-security"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MSpilari.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-05T20:10:56.000Z","updated_at":"2025-02-15T15:28:13.000Z","dependencies_parsed_at":"2025-02-15T16:33:40.100Z","dependency_job_id":null,"html_url":"https://github.com/MSpilari/spring_login","commit_stats":null,"previous_names":["mspilari/spring_login"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSpilari%2Fspring_login","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSpilari%2Fspring_login/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSpilari%2Fspring_login/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MSpilari%2Fspring_login/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MSpilari","download_url":"https://codeload.github.com/MSpilari/spring_login/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241566005,"owners_count":19983223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","jwt-token","mailtrap","spring-boot","spring-data-jpa","spring-security"],"created_at":"2024-11-13T19:39:25.251Z","updated_at":"2026-04-29T10:03:34.828Z","avatar_url":"https://github.com/MSpilari.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🇺🇸 Login Application API\n\nThis application is an authentication API for user management with password recovery via email, built using Spring Boot and JWT for authentication. Its goal is to provide a secure system for user registration, login, password recovery, and reset.\n\n## Features\n\n- User registration with email and password validation\n- Login with JWT authentication\n- Password recovery with email link delivery\n- Password reset via link with a temporary token\n- Field validation and error handling\n\n## Technologies and Dependencies\n\n- **Java 17**\n- **Spring Boot 3** (Spring Security, Spring Data JPA, Spring Mail)\n- **PostgreSQL** (relational database)\n- **JWT** for authentication\n- **Mailtrap** (for email testing)\n- **BCrypt** for password hashing\n- **Maven** for dependency management\n\n## Project Structure\n\n```plaintext\nlogin_app/\n├── .mvn/                       # Maven folder (Maven configurations)\n├── src/\n│   ├── main/\n│   │   ├── java/\n│   │   │   └── dev/\n│   │   │       └── mspilari/\n│   │   │           └── login_app/\n│   │   │               ├── configs/           # Security, authentication, etc., configurations\n│   │   │               ├── domains/           # Application's main domains\n│   │   │               │   ├── email/         # Email-related logic\n│   │   │               │   └── user/          # User-related logic\n│   │   │               ├── exceptions/        # Custom exceptions and error handling\n│   │   │               └── utils/             # Utilities and helpers\n│   │   └── resources/                         # Resources (e.g., configuration files)\n│   └── test/                                  # Application tests\n├── target/                                    # Compilation output folder generated by Maven\n├── .gitattributes                             # Git attributes configuration\n├── .gitignore                                 # Git ignore file\n├── docker-compose.yaml                        # Docker Compose configuration\n├── HELP.md                                    # Project help documentation\n├── mvnw                                       # Maven Wrapper script for Linux\n├── mvnw.cmd                                   # Maven Wrapper script for Windows\n└── pom.xml                                    # Maven configuration file\n```\n\n### Main Folder Descriptions\n\n- **`configs/`**: Contains project configurations, likely related to security (e.g., JWT, authentication).\n- **`domains/`**: Application domain logic, including classes for `email` and `user` functionalities.\n- **`exceptions/`**: Handles custom exceptions for better error management.\n- **`utils/`**: General utilities to support various functionalities.\n\n## Prerequisites\n\n- **Java 17+**\n- **PostgreSQL** (create a database for the application and configure credentials in `application.properties`)\n- **Mailtrap** for capturing emails in the development environment (or another SMTP service)\n\n## Configuration\n\n### Database\n\nConfigure your database credentials in the `application.properties` file:\n\n```properties\nspring.datasource.url=jdbc:postgresql://localhost:5432/\u003cDATABASE_NAME\u003e\nspring.datasource.username=\u003cUSERNAME\u003e\nspring.datasource.password=\u003cPASSWORD\u003e\n```\n\n### SMTP (Mailtrap)\n\nSet your Mailtrap or other SMTP service credentials in the `env.properties` file:\n\n```properties\nspring.mail.username=\u003cMAILTRAP_USERNAME\u003e\nspring.mail.password=\u003cMAILTRAP_PASSWORD\u003e\n```\n\n**Note:** The `env.properties` file is imported in `application.properties` using the line `spring.config.import=classpath:env.properties`.\n\n### JWT\n\nJWT public and private keys are loaded in `application.properties`. Place your keys in the `resources` folder as `public.key` and `private.key`, and configure the properties:\n\n```properties\njwt.public.key=classpath:public.key\njwt.private.key=classpath:private.key\n```\n\n### Expiration Settings\n\nDefine the expiration time for the JWT token and the password reset token (in seconds):\n\n```properties\njwt.expiration=300\ntoken.expiration.seconds=300\n```\n\n## Running the Project\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/MSpilari/spring_login.git\n   cd login_app\n   ```\n\n2. Compile and run the application with Maven:\n\n   ```bash\n   ./mvnw spring-boot:run\n   ```\n\n3. The application will be available at `http://localhost:8080`.\n\n## API Endpoints\n\n### Authentication\n\n- **POST** `/user/register`: Creates a new user. **Body:** `{ \"email\": \"user@example.com\", \"password\": \"password\" }`\n- **POST** `/user/login`: Logs in and returns a JWT token. **Body:** `{ \"email\": \"user@example.com\", \"password\": \"password\" }`\n\n### Password Recovery\n\n- **POST** `/user/redeem-password`: Sends an email for password reset. **Body:** `{ \"email\": \"user@example.com\" }`\n- **POST** `/user/reset-password`: Resets the password using a reset token. **Body:** `{ \"token\": \"reset_token\", \"password\": \"newPassword\" }`\n\n### Example Responses\n\n- **Success**\n\n  ```json\n  { \"message\": \"User created successfully\" }\n  ```\n\n- **Error**\n  ```json\n  {\n    \"errorMessage\": \"Invalid login credentials\",\n    \"errorStatusCode\": \"400 BAD_REQUEST\"\n  }\n  ```\n\n## Exceptions and Error Handling\n\nThe system handles specific exceptions for validation and authentication, providing user-friendly messages with the appropriate HTTP status code.\n\n## Future Improvements\n\n- Implementation of differentiated roles and more granular access permissions\n- Detailed logging for auditing and security analysis\n- Integration with a secret management system for sensitive variables in production\n\n## Contribution\n\nContributions are welcome! Follow the steps for creating pull requests and review.\n\n---\n\n# 🇧🇷 Login Application API\n\nEsta aplicação é uma API de autenticação para gerenciamento de usuários com recuperação de senha via email, utilizando Spring Boot e JWT para autenticação. O objetivo é fornecer um sistema seguro de registro, login, recuperação e redefinição de senha.\n\n## Funcionalidades\n\n- Registro de usuários com validação de email e senha\n- Login com autenticação JWT\n- Recuperação de senha com envio de link por email\n- Redefinição de senha via link com token temporário\n- Validação de campos e manipulação de erros\n\n## Tecnologias e Dependências\n\n- **Java 17**\n- **Spring Boot 3** (Spring Security, Spring Data JPA, Spring Mail)\n- **PostgreSQL** (banco de dados relacional)\n- **JWT** para autenticação\n- **Mailtrap** (para simulação de envio de emails)\n- **BCrypt** para hashing de senhas\n- **Maven** para gerenciamento de dependências\n\n## Estrutura do Projeto\n\n```plaintext\nlogin_app/\n├── .mvn/                       # Pasta do Maven (configurações do Maven)\n├── src/\n│   ├── main/\n│   │   ├── java/\n│   │   │   └── dev/\n│   │   │       └── mspilari/\n│   │   │           └── login_app/\n│   │   │               ├── configs/           # Configurações de segurança, autenticação, etc.\n│   │   │               ├── domains/           # Domínios principais da aplicação\n│   │   │               │   ├── email/         # Lógica relacionada a email\n│   │   │               │   └── user/          # Lógica relacionada ao usuário\n│   │   │               ├── exceptions/        # Exceções personalizadas e tratamento de erros\n│   │   │               └── utils/             # Utilitários e helpers\n│   │   └── resources/                         # Recursos (ex: arquivos de configuração)\n│   └── test/                                  # Testes da aplicação\n├── target/                                    # Pasta de compilação gerada pelo Maven\n├── .gitattributes                             # Configurações de atributos Git\n├── .gitignore                                 # Arquivo para ignorar arquivos no Git\n├── docker-compose.yaml                        # Configuração Docker Compose\n├── HELP.md                                    # Documentação de ajuda do projeto\n├── mvnw                                       # Script Maven Wrapper para Linux\n├── mvnw.cmd                                   # Script Maven Wrapper para Windows\n└── pom.xml                                    # Arquivo de configuração Maven\n```\n\n### Descrição das Pastas Principais\n\n- **`configs/`**: Contém configurações do projeto, provavelmente relacionadas à segurança (ex.: JWT, autenticação).\n- **`domains/`**: Estrutura de domínio da aplicação, onde estão as classes e lógicas específicas para `email` e `user` (usuário).\n- **`exceptions/`**: Contém classes para tratamento de exceções personalizadas, melhorando o controle de erros.\n- **`utils/`**: Utilitários gerais que auxiliam em diversas funcionalidades.\n\n## Pré-requisitos\n\n- **Java 17+**\n- **PostgreSQL** (crie um banco de dados para a aplicação e configure as credenciais em `application.properties`)\n- **Mailtrap** para captura de emails em ambiente de desenvolvimento (ou outro serviço SMTP)\n\n## Configuração\n\n### Banco de Dados\n\nConfigure as credenciais do banco de dados no arquivo `application.properties`:\n\n```properties\nspring.datasource.url=jdbc:postgresql://localhost:5432/\u003cNOME_DO_BANCO\u003e\nspring.datasource.username=\u003cUSUARIO\u003e\nspring.datasource.password=\u003cSENHA\u003e\n```\n\n### SMTP (Mailtrap)\n\nUtilize suas credenciais do Mailtrap ou outro serviço de SMTP no arquivo `env.properties`:\n\n```properties\nspring.mail.username=\u003cUSUARIO_MAILTRAP\u003e\nspring.mail.password=\u003cSENHA_MAILTRAP\u003e\n```\n\n**Obs:** `env.properties` é importado no `application.properties` com a linha `spring.config.import=classpath:env.properties`.\n\n### JWT\n\nAs chaves públicas e privadas do JWT são carregadas no `application.properties`. Coloque suas chaves nos arquivos `public.key` e `private.key` na pasta `resources`, e assegure-se de configurar as propriedades:\n\n```properties\njwt.public.key=classpath:public.key\njwt.private.key=classpath:private.key\n```\n\n### Configuração do Tempo de Expiração\n\nDefina o tempo de expiração do token JWT e o tempo de expiração do token de redefinição de senha (em segundos):\n\n```properties\njwt.expiration=300\ntoken.expiration.seconds=300\n```\n\n## Executando o Projeto\n\n1. Clone o repositório:\n\n   ```bash\n   git clone https://github.com/MSpilari/spring_login.git\n   cd login_app\n   ```\n\n2. Compile e execute a aplicação com o Maven:\n\n   ```bash\n   ./mvnw spring-boot:run\n   ```\n\n3. A aplicação estará disponível em `http://localhost:8080`.\n\n## Endpoints da API\n\n### Autenticação\n\n- **POST** `/user/register`: Cria um novo usuário. **Corpo:** `{ \"email\": \"user@example.com\", \"password\": \"password\" }`\n- **POST** `/user/login`: Faz login e retorna um token JWT. **Corpo:** `{ \"email\": \"user@example.com\", \"password\": \"password\" }`\n\n### Recuperação de Senha\n\n- **POST** `/user/redeem-password`: Envia um email para redefinição de senha. **Corpo:** `{ \"email\": \"user@example.com\" }`\n- **POST** `/user/reset-password`: Redefine a senha com base em um token de redefinição. **Corpo:** `{ \"token\": \"token_redefinicao\", \"password\": \"novaSenha\" }`\n\n### Exemplo de Respostas\n\n- **Sucesso**\n\n  ```json\n  { \"message\": \"User created successfully\" }\n  ```\n\n- **Erro**\n  ```json\n  {\n    \"errorMessage\": \"Invalid login credentials\",\n    \"errorStatusCode\": \"400 BAD_REQUEST\"\n  }\n  ```\n\n## Exceções e Tratamento de Erros\n\nO sistema lida com exceções específicas para validação e autenticação, lançando mensagens amigáveis com o código de status HTTP correspondente.\n\n## Melhorias Futuras\n\n- Implementação de roles diferenciadas e permissões de acesso mais granulares\n- Logging detalhado para auditoria e análise de segurança\n- Integração com um sistema de gerenciamento de segredos para variáveis sensíveis em produção\n\n## Contribuição\n\nContribuições são bem-vindas! Siga os passos para criação de pull requests e revisão.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmspilari%2Fspring_login","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmspilari%2Fspring_login","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmspilari%2Fspring_login/lists"}