Skip to main content

Información General

Los endpoints de usuarios permiten gestionar cuentas de usuario, asignar roles y configurar permisos para controlar el acceso a diferentes funcionalidades del sistema. Todos los usuarios están asociados a una empresa y tienen un rol que define sus permisos.

Listar Usuarios

Obtiene la lista de todos los usuarios del sistema con sus relaciones de rol y empresa.

Respuesta

{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Juan Pérez",
      "email": "[email protected]",
      "rol_id": 1,
      "id_empresa": 1,
      "created_at": "2024-01-15T10:30:00.000000Z",
      "updated_at": "2024-03-01T14:20:00.000000Z",
      "rol": {
        "rol_id": 1,
        "nombre": "Administrador"
      },
      "empresa": {
        "id_empresa": 1,
        "comercial": "J.V.C. SAC",
        "ruc": "20612706702"
      }
    },
    {
      "id": 2,
      "name": "María García",
      "email": "[email protected]",
      "rol_id": 2,
      "id_empresa": 1,
      "created_at": "2024-02-10T08:15:00.000000Z",
      "updated_at": "2024-02-10T08:15:00.000000Z",
      "rol": {
        "rol_id": 2,
        "nombre": "Vendedor"
      },
      "empresa": {
        "id_empresa": 1,
        "comercial": "J.V.C. SAC",
        "ruc": "20612706702"
      }
    }
  ]
}

Crear Usuario

Crea un nuevo usuario en el sistema con un rol y empresa asignados.

Parámetros del Body

Ejemplo de Solicitud

{
  "name": "Carlos Rodríguez",
  "email": "[email protected]",
  "password": "segura123",
  "password_confirmation": "segura123",
  "rol_id": 3,
  "id_empresa": 1
}

Respuesta Exitosa

{
  "success": true,
  "message": "Usuario creado exitosamente",
  "data": {
    "id": 3,
    "name": "Carlos Rodríguez",
    "email": "[email protected]",
    "rol_id": 3,
    "id_empresa": 1,
    "created_at": "2024-03-04T10:30:00.000000Z",
    "updated_at": "2024-03-04T10:30:00.000000Z"
  }
}

Errores de Validación

{
  "success": false,
  "message": "Error de validación",
  "errors": {
    "email": [
      "El campo email ya ha sido tomado."
    ],
    "password": [
      "El campo password debe tener al menos 6 caracteres."
    ]
  }
}

Obtener Usuario

Obtiene los detalles de un usuario específico con sus relaciones.

Parámetros de Ruta

Respuesta

{
  "success": true,
  "data": {
    "id": 2,
    "name": "María García",
    "email": "[email protected]",
    "rol_id": 2,
    "id_empresa": 1,
    "created_at": "2024-02-10T08:15:00.000000Z",
    "updated_at": "2024-02-10T08:15:00.000000Z",
    "rol": {
      "rol_id": 2,
      "nombre": "Vendedor"
    },
    "empresa": {
      "id_empresa": 1,
      "comercial": "J.V.C. SAC",
      "ruc": "20612706702"
    }
  }
}

Actualizar Usuario

Actualiza los datos de un usuario existente. Todos los campos son opcionales.

Parámetros de Ruta

Parámetros del Body

Ejemplo de Solicitud

{
  "name": "María García Sánchez",
  "rol_id": 3
}

Respuesta Exitosa

{
  "success": true,
  "message": "Usuario actualizado exitosamente",
  "data": {
    "id": 2,
    "name": "María García Sánchez",
    "email": "[email protected]",
    "rol_id": 3,
    "id_empresa": 1,
    "updated_at": "2024-03-04T11:45:00.000000Z"
  }
}

Eliminar Usuario

Elimina un usuario del sistema.

Parámetros de Ruta

Respuesta Exitosa

{
  "success": true,
  "message": "Usuario eliminado exitosamente"
}

Errores

Obtener Roles

Obtiene la lista de roles disponibles en el sistema para asignar a usuarios.

Respuesta

{
  "success": true,
  "data": [
    {
      "rol_id": 1,
      "nombre": "Administrador"
    },
    {
      "rol_id": 2,
      "nombre": "Vendedor"
    },
    {
      "rol_id": 3,
      "nombre": "Almacenero"
    },
    {
      "rol_id": 4,
      "nombre": "Contador"
    }
  ]
}

Sistema de Permisos

Listar Todos los Permisos

Obtiene todos los permisos del sistema agrupados por módulo.

Respuesta

{
  "success": true,
  "data": [
    {
      "module": "ventas",
      "module_name": "Ventas",
      "permissions": [
        {
          "id": 1,
          "name": "ventas.view",
          "display_name": "Ver ventas",
          "action": "view"
        },
        {
          "id": 2,
          "name": "ventas.create",
          "display_name": "Crear ventas",
          "action": "create"
        },
        {
          "id": 3,
          "name": "ventas.edit",
          "display_name": "Editar ventas",
          "action": "edit"
        },
        {
          "id": 4,
          "name": "ventas.delete",
          "display_name": "Eliminar ventas",
          "action": "delete"
        }
      ]
    },
    {
      "module": "productos",
      "module_name": "Productos",
      "permissions": [
        {
          "id": 5,
          "name": "productos.view",
          "display_name": "Ver productos",
          "action": "view"
        },
        {
          "id": 6,
          "name": "productos.create",
          "display_name": "Crear productos",
          "action": "create"
        }
      ]
    }
  ]
}

Obtener Permisos del Usuario Actual

Obtiene la lista de permisos del usuario autenticado.

Respuesta

{
  "success": true,
  "permissions": [
    "ventas.view",
    "ventas.create",
    "ventas.edit",
    "productos.view",
    "clientes.view",
    "clientes.create"
  ]
}

Obtener Permisos de un Rol

Obtiene los permisos asignados a un rol específico.

Parámetros de Ruta

Respuesta

{
  "success": true,
  "data": {
    "rol_id": 2,
    "rol_name": "Vendedor",
    "permissions": [1, 2, 3, 5, 9, 10, 11]
  }
}

Actualizar Permisos de un Rol

Actualiza los permisos asignados a un rol específico.

Parámetros de Ruta

Parámetros del Body

Ejemplo de Solicitud

{
  "permissions": [1, 2, 3, 5, 6, 9, 10]
}

Respuesta Exitosa

{
  "success": true,
  "message": "Permisos actualizados correctamente",
  "should_reload": true
}

Middleware de Permisos

Los endpoints protegidos usan el middleware permission con el formato recurso.accion:
// Ejemplo en routes/api.php
Route::get('productos', [ProductoController::class, 'index'])
    ->middleware('permission:productos.view');

Route::post('ventas', [VentasController::class, 'store'])
    ->middleware('permission:ventas.create');

Formato de Permisos

  • ventas.view - Ver ventas
  • ventas.create - Crear ventas
  • ventas.edit - Editar ventas
  • ventas.delete - Eliminar ventas
  • productos.view - Ver productos
  • clientes.create - Crear clientes
  • cotizaciones.view - Ver cotizaciones

Bypass para Administradores

Modelo de Datos

Tabla: users

CampoTipoDescripción
idBIGINTPrimary key
nameVARCHAR(255)Nombre del usuario
emailVARCHAR(255)Email único
passwordVARCHAR(255)Hash bcrypt de la contraseña
rol_idINTFK a tabla roles
id_empresaINTFK a tabla empresas
num_docVARCHAR(20)Número de documento
nombresVARCHAR(100)Nombres
apellidosVARCHAR(100)Apellidos
telefonoVARCHAR(30)Teléfono
estadoCHAR(1)1=Activo, 0=Inactivo
foto_perfilVARCHAR(255)Ruta de foto
created_atTIMESTAMPFecha de creación
updated_atTIMESTAMPFecha de actualización

Tabla: roles

CampoTipoDescripción
rol_idINTPrimary key
nombreVARCHAR(100)Nombre del rol
descripcionTEXTDescripción del rol

Tabla: permissions

CampoTipoDescripción
permission_idINTPrimary key
nameVARCHAR(100)Nombre técnico (ej: ventas.view)
display_nameVARCHAR(255)Nombre para mostrar
moduleVARCHAR(50)Módulo al que pertenece
actionVARCHAR(50)Acción (view, create, edit, delete)

Relación: permission_rol (Pivot)

CampoTipoDescripción
idBIGINTPrimary key
rol_idINTFK a roles
permission_idINTFK a permissions

Build docs developers (and LLMs) love