Autenticación

Se utiliza Json Web Token (JWT) para usuarios autenticados. Tras el login, se obtiene un JWT para identificar el usuario en los request posteriores al API. El token debe ser agregado como header para los endpoints que lo necesiten.

Logout

Cuando se realiza un logout el token se invalida pero aun puede seguir usandose por 2 minutos para prevenir cualquier problema de concurrencia.

Expiration

Cuando se envia un token expirado (Time To Live 60 minute) se invalida el expirado y en el header del response Authorization: Bearer <token> se enviara un nuevo token para las nuevos request. La regla de expiración es la misma que la del logout para evitar problemas de concurrencia.

{info} Agregar el header Authorization: Bearer <token> en los request que necesiten autenticación.


Routes

Method Route Action
POST /login Genera y retorna un access_token
POST /logout Invalida el access_token del usuario autenticado. Se da un periodo de gracia de 2 minuto de uso de el token invalidado. Luego de eso se tomara como blacklisted.
POST /refresh-jwt Autentica el usuario desde un Jwt activo, invalida el token actual y refresca a uno nuevo. Se da un periodo de gracia de 2 minuto de uso de el token invalidado. Luego de eso se tomara como blacklisted
POST /confirm-account
POST /password-reset/{email} Envia un correo de recuperación de contraseña.
POST /recover-password Confirma la recuperacion de la contraseña
POST /confirm-email Confirma un cambio de correo

Login

Route POST /login

Request Body

{
  "email" : "required|email",
  "password": "required|string"
}

{primary} El objecto user contendra la relacipon correspondiente al tipo de usuario si tiene alguna.

Response 200

{
  "user": {
      // User Model Attributes
   },
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
  "token_type": "bearer",
  "expires_in": 3600,
  "expires_in_datetime": "2020-10-30 11:23:34"
}

Logout

Inhabilita el Json Web Token actual del usuario

Route POST /logout

Response 204 No Content


Refresh JWT

Route POST /refresh-jwt

Response 200

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
  "token_type": "bearer",
  "expires_in": 3600,
  "expires_in_datetime": "2019-11-13 12:13:50"
}

{info} El header Authorization tambien viene actualizado con el token refrescado.

Confirm Account

Marca el usuario como confirmado y se reemplaza la contraseña generada

{info} Este proceso se realiza una sola vez

Route POST /confirm-account

Request Body

{
  "token": "required|string",
  "password": "required|string"
}

Response 204 No Content


Password Reset

Envia una solicitud de restablecimiento de contraseña por correo.

Route POST /password-reset/{email}

Response 204 No Content


Recover Password

Confirma la solicitud de restablecimiento de contraseña

{primary} el token tiene un una duracion de 24 horas, si se pasa se tendra que enviar un nuevo password reset

Route POST /recover-password

Body

{
  "email": "required|email",
  "token": "required|string", // token enviado al correo de recuperación
  "password": "required|string" // nueva contraseña
}

Response 204 No Content


Confirm Email

Route POST /confirm-email

Request Body

{
  "email": "required|email",
  "token": "required|string" // token enviado al correo de confirmación
}

Response 204 No Content