Skip to main content

Descripción General

El sistema utiliza Laravel Sanctum para la autenticación basada en tokens. Los tokens se generan durante el login y deben incluirse en todas las peticiones subsecuentes a endpoints protegidos.

Login

Autentica a un usuario y genera un token de acceso.
curl -X POST https://api.example.com/api/login \
  -H "Content-Type: application/json" \
  -d '{
    "user": "[email protected]",
    "password": "password123"
  }'

Endpoint

POST
string
/api/login

Parámetros del Body

user
string
required
Nombre de usuario o email del usuario. Puede usar tanto el campo name como email de la base de datos.
password
string
required
Contraseña del usuario. Se verifica usando bcrypt hash.

Campos de Respuesta

success
boolean
Indica si la operación fue exitosa.
message
string
Mensaje descriptivo del resultado.
token
string
Token de acceso Bearer generado por Sanctum. Válido por 8 horas desde su generación.
user
object
Información del usuario autenticado.
user.id
integer
ID único del usuario.
user.name
string
Nombre del usuario.
user.email
string
Email del usuario.
user.rol_id
integer
ID del rol del usuario. El rol 1 corresponde a Administrador con acceso total.
user.id_empresa
integer
ID de la empresa activa del usuario.
empresas
array
Lista de empresas a las que el usuario tiene acceso. Los administradores (rol_id=1) ven todas las empresas activas, mientras que usuarios normales solo ven su empresa asignada.
permissions
array
Lista de permisos del usuario en formato resource.action (ej: productos.view, ventas.create). Los administradores reciben automáticamente todos los permisos disponibles.

Notas de Implementación

Duración del Token: Los tokens generados son válidos por 8 horas. Después de este tiempo, el usuario debe volver a autenticarse o usar el endpoint de refresh.
Almacenamiento del Token: Guarde el token en localStorage del navegador para uso posterior:
localStorage.setItem('auth_token', response.token);

Obtener Usuario Autenticado

Recupera la información del usuario actualmente autenticado.
curl -X GET https://api.example.com/api/me \
  -H "Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz1234567890"

Endpoint

GET
string
/api/me

Headers Requeridos

Authorization
string
required
Bearer token obtenido del endpoint de login.

Refrescar Token

Renueva el token de autenticación actual antes de que expire.
curl -X POST https://api.example.com/api/refresh \
  -H "Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz1234567890"

Endpoint

POST
string
/api/refresh

Comportamiento

  1. Revoca el token actual utilizado en la petición
  2. Genera un nuevo token válido por 8 horas adicionales
  3. Retorna el nuevo token que debe reemplazar al anterior
Token Anterior Invalidado: Después de refrescar, el token anterior queda revocado y no puede ser utilizado. Asegúrese de actualizar el token almacenado:
localStorage.setItem('auth_token', response.token);

Verificar Token

Verifica si el token actual es válido y retorna información del usuario.
curl -X GET https://api.example.com/api/verify \
  -H "Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz1234567890"

Endpoint

GET
string
/api/verify

Logout

Cierra la sesión del usuario y revoca el token actual.
curl -X POST https://api.example.com/api/logout \
  -H "Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz1234567890"

Endpoint

POST
string
/api/logout

Comportamiento

  1. Elimina el token de acceso de Sanctum de la base de datos
  2. Invalida la sesión PHP de Laravel
  3. Regenera el token CSRF
Limpieza del Cliente: Después del logout exitoso, elimine el token almacenado:
localStorage.removeItem('auth_token');

Cambiar Empresa Activa

Permite a los administradores cambiar entre diferentes empresas.
curl -X POST https://api.example.com/api/switch-empresa \
  -H "Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz1234567890" \
  -H "Content-Type: application/json" \
  -d '{
    "id_empresa": 8
  }'

Endpoint

POST
string
/api/switch-empresa

Parámetros del Body

id_empresa
integer
required
ID de la empresa a la que se desea cambiar. Debe ser una empresa activa en el sistema.
Solo Administradores: Esta funcionalidad está disponible únicamente para usuarios con rol_id = 1 (Administradores). Usuarios normales reciben un error 403.

Flujo de Autenticación Completo

Configuración de Sanctum

El sistema está configurado con los siguientes parámetros:
  • Expiración: Los tokens no expiran automáticamente en la BD, pero se generan con una validez de 8 horas mediante el método createToken()
  • Dominios con estado: localhost, localhost:3000, 127.0.0.1, 127.0.0.1:8000, ::1
  • Guard: web
  • Prefix de token: Sin prefijo configurado
La configuración completa se encuentra en config/sanctum.php

Build docs developers (and LLMs) love