Empleados
Exportar contenido
Ruta:
/owner/settings/usersConfigura tipos de empleados, define permisos por módulo y gestiona el acceso al sistema.
Vista de configuración
Sección titulada «Vista de configuración»La pantalla de Empleados en Configuración se divide en dos secciones principales:
Secciones:
| Sección | Descripción |
|---|---|
| Tipos de Empleado | Define roles con permisos personalizados por módulo |
| Registros de Acceso | Historial de inicios de sesión de usuarios |
Tipos de Empleado
Sección titulada «Tipos de Empleado»Cada tipo de empleado incluye:
| Campo | Descripción |
|---|---|
| Nombre | Identificador del tipo (ej: “Administrativo”, “Comercial”) |
| Descripción | Explicación del rol y responsabilidades |
| Icono | Representación visual del tipo |
| Permisos por módulo | Nivel de acceso: Ninguno, Ver o Editar |
| Estado | Activo o Inactivo |
Módulos configurables:
- Facturas
- Gastos
- Presupuestos
- Clientes
- Productos
- RRHH
- Fichaje
- Informes
- Configuración
Niveles de acceso:
| Nivel | Descripción |
|---|---|
| Ninguno | Sin acceso al módulo |
| Ver | Solo lectura, sin modificaciones |
| Editar | Lectura y escritura completa |
Funciones
Sección titulada «Funciones»| Función | Descripción | Documentación |
|---|---|---|
| Crear Tipo | Define nuevo tipo con permisos específicos | Ver |
| Editar Tipo | Modifica permisos de tipo existente | Ver |
| Eliminar Tipo | Borra tipo no utilizado | Ver |
| Invitar Empleado | Envía invitación con permisos asignados | Ver |
| Gestionar Acceso | Activa/desactiva tipos de empleado | Ver |
| Ver Registros | Consulta historial de accesos | Ver |
Flujo de asignación de permisos
Sección titulada «Flujo de asignación de permisos»┌─────────────────┐│ Crear Tipo ││ Empleado │└────────┬────────┘ │ ┌────▼────┐ │ Definir │ │ Permisos│ └────┬────┘ │┌────────▼────────┐│ Asignar a ││ Empleado │└────────┬────────┘ │ ┌────▼────┐ │ Enviar │ │Invitación│ └────┬────┘ │┌────────▼────────┐│ Empleado ││ Acepta │└────────┬────────┘ │ ┌────▼────┐ │ Acceso │ │ Activo │ └─────────┘Roles predefinidos del sistema
Sección titulada «Roles predefinidos del sistema»El sistema incluye roles base que puedes personalizar:
| Rol | Módulos incluidos | Permisos típicos |
|---|---|---|
| Administrativo | Facturas, Gastos, Clientes | Ver/Editar documentación |
| Comercial | Presupuestos, Clientes | Ver/Editar comerciales |
| RRHH | RRHH, Fichaje | Ver/Editar personal |
| Contable | Facturas, Gastos, Informes | Ver finanzas |
Referencia técnica
Sección titulada «Referencia técnica»Detalles técnicos
Tablas de base de datos
Sección titulada «Tablas de base de datos»| Tabla | Columnas principales | FK |
|---|---|---|
employee_types | id, business_id, name, description, module_permissions, hr_role, icon, is_system, is_active | businesses |
employee_invitations | id, employee_id, business_id, email, token, status, permissions, expires_at | employees, businesses |
employee_roles | id, user_id, business_id, role, assigned_by | users, businesses |
employees | id, business_id, user_id, employee_id, first_name, last_name, email, position, status | businesses, users |
Tipos y enums
Sección titulada «Tipos y enums»Tipo hr_role:
type HRRole = | 'hr_admin' // Administrador RRHH | 'hr_manager' // Gestor RRHH | 'hr_viewer' // Visualizador RRHH | 'department_manager'; // Gestor departamentoEstado de invitación:
type InvitationStatus = | 'pending' // Pendiente de aceptar | 'accepted' // Aceptada | 'expired' // Caducada | 'cancelled'; // CanceladaNiveles de acceso:
type AccessLevel = | 'none' // Sin acceso | 'read' // Solo lectura | 'edit'; // Lectura y escrituraEstructura de permisos
Sección titulada «Estructura de permisos»El campo module_permissions es un objeto JSON con la estructura:
interface ModulePermissions { invoices?: AccessLevel; expenses?: AccessLevel; quotes?: AccessLevel; customers?: AccessLevel; products?: AccessLevel; hr?: AccessLevel; time_clock?: AccessLevel; reports?: AccessLevel; settings?: AccessLevel;}Políticas RLS
Sección titulada «Políticas RLS»| Política | Regla |
|---|---|
employee_types_business_isolation | business_id = usuario autenticado |
employee_invitations_business | Acceso vía negocio del usuario |
employee_roles_business | Solo HR admins del negocio |
employees_business_isolation | business_id = usuario autenticado |
Edge Functions
Sección titulada «Edge Functions»| Función | Trigger | Descripción |
|---|---|---|
send-employee-invitation | Invitación | Genera token, guarda permisos y envía email |
accept-employee-invitation | Aceptación | Valida token, crea usuario y asigna permisos |
validate-employee-invitation | Validación | Verifica token no expirado ni usado |
Queries de diagnóstico
Sección titulada «Queries de diagnóstico»Tipos de empleado con permisos:
SELECT id, name, description, module_permissions, is_activeFROM employee_typesWHERE business_id = '<business_id>'ORDER BY name;Invitaciones pendientes:
SELECT i.*, e.first_name, e.last_name, e.emailFROM employee_invitations iJOIN employees e ON i.employee_id = e.idWHERE i.business_id = '<business_id>' AND i.status = 'pending' AND i.expires_at > NOW()ORDER BY i.sent_at DESC;Empleados con acceso activo:
SELECT e.*, er.role, u.email as user_emailFROM employees eLEFT JOIN employee_roles er ON er.user_id = e.user_id AND er.business_id = e.business_idLEFT JOIN auth.users u ON e.user_id = u.idWHERE e.business_id = '<business_id>' AND e.status = 'active' AND e.user_id IS NOT NULLORDER BY e.first_name, e.last_name;Permisos efectivos de un empleado:
SELECT e.first_name, e.last_name, et.name as tipo_empleado, et.module_permissions, ei.permissions as permisos_personalizadosFROM employees eLEFT JOIN employee_types et ON e.employee_type_id = et.idLEFT JOIN employee_invitations ei ON ei.employee_id = e.id AND ei.status = 'accepted'WHERE e.id = '<employee_id>';