Skip to content

r3ing/users-service

Repository files navigation

User Microservice (Spring Boot 2.5.14, Java 11, Gradle 7.4)

Servicio para creación y consulta de usuarios.

Requisitos

  • Java 11.
  • Spring Boot 2.5.14 + Gradle 7.4.
  • Persistencia H2 con Spring Data JPA.
  • JWT para token y rotación en /login.
  • Validaciones con regex para email y password.

Cómo compilar y ejecutar

Necesitas Java 11 y Gradle 7.4 instalados localmente (o usa el wrapper de tu entorno).

# Compilar + tests + reporte de cobertura
gradle clean build

# Ejecutar
gradle bootRun

La app levanta en http://localhost:8080.

Variables

Configura (opcional) por entorno:

  • JWT_SECRET (default: very-secret-key-for-dev-only)
  • JWT_EXPIRATION_MILLIS (default: 3600000)

Endpoints

1) POST /api/v1/users/sign-up

Request (JSON)

{
  "name": "Julio Gonzalez",
  "email": "[email protected]",
  "password": "a2asfGfdfdf4",
  "phones": [
    {"number": 87650009, "citycode": 7, "contrycode": "25"}
  ]
}

Response 200

{
  "id": "uuid",
  "created": "2025-09-06T16:43:00.000Z",
  "lastLogin": "2025-09-06T16:43:00.000Z",
  "token": "eyJhbGciOiJIUzI1NiJ9...",
  "isActive": true,
  "name": "Julio Gonzalez",
  "email": "[email protected]",
  "phones": [
    {"number": 87650009, "citycode": 7, "contrycode": "25"}
  ]
}

Errores JSON

  • 400 cuando el email tiene un formato invalido
{
  "error": [{
    "timestamp": "2025-09-06T16:43:00.000Z",
    "codigo": 400,
    "detail": "Email format is invalid."
  }]
}
  • 400 cuando el password tiene un formato invalido
{
  "error": [{
    "timestamp": "2025-09-06T16:43:00.000Z",
    "codigo": 400,
    "detail": "Password must be 8-12 chars, contain exactly one uppercase letter and exactly two digits; only letters and digits are allowed."
  }]
}
  • 409 cuando el usuario ya existe.
{
  "error": [{
    "timestamp": "2025-09-06T16:43:00.000Z",
    "codigo": 409,
    "detail": "User with email already exists: [email protected]"
  }]
}

2) GET /api/v1/users/login

Debes enviar el token previo en Authorization: Bearer <token>.

Response 200 (token rotado)

{
  "id": "uuid",
  "created": "Nov 16, 2021 12:51:43 PM",
  "lastLogin": "Nov 16, 2021 12:51:43 PM",
  "token": "eyJhbGciOiJIUzI1NiJ9...",
  "isActive": true,
  "name": "Julio Gonzalez",
  "email": "[email protected]",
  "phones": [
    {"number": 87650009, "citycode": 7, "contrycode": "25"}
  ]
}

Curl rápido

curl -s -X POST http://localhost:8080/api/v1/users/sign-up   -H 'Content-Type: application/json'   -d '{"name":"Julio","email":"[email protected]","password":"abCdef12","phones":[{"number":12345678,"citycode":2,"contrycode":"56"}]}'

# Usar el token devuelto arriba
curl -s -X GET http://localhost:8080/api/v1/users/login -H "Authorization: Bearer <TOKEN>"

Diagramas (UML)

En la carpeta diagrams/

  • Component Diagram: component.png
  • Sequence Diagram: sequence-signup-login.png

About

Services for manage users

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages