Corcava logoLa única herramienta empresarial que necesitasCorcava
Menú

Permisos y Control de Acceso

Resumen

Corcava implementa un sistema integral de control de acceso basado en roles que asegura que los miembros del equipo tengan acceso apropiado a proyectos, tableros y tareas mientras mantiene seguridad y aislamiento de datos. Basado en análisis del código, el sistema usa una combinación de roles de usuario, verificación de permisos y aislamiento basado en equipos para controlar el acceso a las características de gestión de proyectos.

Entender el sistema de permisos te ayudará a configurar correctamente el acceso del equipo y mantener la seguridad apropiada para tus proyectos y datos de clientes.


Acceso Basado en Roles - Diferentes Roles de Usuario y Capacidades

Sistema de Roles de Usuario

Roles Disponibles: Basado en análisis del código, el sistema implementa 7 roles de usuario distintos:

1. SUPERADMIN

  • Acceso Completo al Sistema - Control completo sobre todos los datos y configuraciones organizacionales
  • isShowAllAndOwnProjectCRUD() - Puede ver y gestionar todos los proyectos
  • isShowAllAndOwnTaskCRUD() - Puede ver y gestionar todas las tareas
  • Gestión de Equipos - Puede gestionar todos los miembros del equipo y roles
  • Control Financiero - Acceso a todas las características de facturación y financieras

2. ORGANIZATION_MANAGER

  • Liderazgo del Equipo - Gestionar equipos, proyectos y configuraciones organizacionales
  • isShowAllAndOwnProjectCRUD() - Puede ver y gestionar todos los proyectos del equipo
  • isShowAllAndOwnTaskCRUD() - Puede ver y gestionar todas las tareas del equipo
  • Gestión de Clientes - Acceso completo a relaciones y datos de clientes
  • Acceso Financiero - Puede gestionar facturación y gastos

3. SALES_MANAGER

  • Operaciones de Ventas - Supervisar actividades de ventas y gestionar equipo de ventas
  • isShowAllAndOwnTaskCRUD() - Puede ver y gestionar todas las tareas
  • isShowAllAndOwnContactCRUD() - Puede gestionar todos los contactos y leads
  • isShowAllAndOwnDealCRUD() - Puede gestionar todas las oportunidades y tratos
  • Creación de Proyectos - Puede crear proyectos para clientes
  • Financiero Limitado - Puede crear facturas pero acceso financiero limitado

4. SALES_REPRESENTATIVE

  • Acceso de Ventas Enfocado - Acceso solo a leads y tratos asignados
  • isShowAllAndOwnDealCRUD() - Puede gestionar tratos y oportunidades
  • Creación de Proyectos - Puede crear proyectos para sus clientes
  • Alcance Limitado - No puede acceder a datos de otros miembros del equipo
  • Interacción con Clientes - Puede gestionar relaciones con clientes asignados

5. PROJECT_MANAGER

  • Rol Definido - El enum existe pero la implementación no se encontró en el código analizado
  • Uso Limitado - El rol puede no estar activamente implementado en el sistema actual

6. USER

  • Ejecución de Tareas - Puede trabajar en tareas y proyectos asignados
  • Asignación de Proyecto Requerida - Debe estar asignado a proyectos para acceder
  • Acceso de Colaboración - Puede comentar, asignar usuarios y rastrear tiempo
  • Administración Limitada - No puede crear proyectos o gestionar configuraciones del equipo

7. PROJECT_VIEWER

  • Rol de Acceso de Cliente - Diseñado para acceso al portal del cliente
  • Dos Sub-Tipos - Variantes 'viewer' y 'manager'
  • Asignación de Proyecto Requerida - Debe estar asignado a proyectos específicos
  • Acceso de Lectura/Escritura - Puede ver e interactuar con proyectos asignados
  • Rol Gratuito - Agregar usuarios en este rol es gratuito

Detalles de Implementación de Roles

Métodos de Verificación de Roles: Basado en análisis del modelo User:

  • hasRole(RoleName $role) - Verificar si el usuario tiene un rol específico
  • Métodos específicos de rol - isSuperAdmin(), isOrganizationManager(), etc.
  • Verificación de permisos - hasPermission(string $permission)
  • Grupos de permisos CRUD - isShowAllAndOwnProjectCRUD(), etc.

Sub-Tipos de Visualizador de Proyecto:

  • isViewer() - Rol PROJECT_VIEWER con valor project_viewer 'viewer'
  • isViewerManager() - Rol PROJECT_VIEWER con valor project_viewer 'manager'
  • isProjectViewer() - Cualquier rol PROJECT_VIEWER independientemente del sub-tipo

Permisos a Nivel de Proyecto - Quién Puede Acceder a Qué Proyectos

Control de Acceso a Proyectos

Implementación de Permisos de Proyecto: Basado en análisis de ProjectPolicy:

Visualización de Proyectos (viewAny):

  • Verificación de Permisos - Usuarios con permiso 'project.viewAny'
  • Acceso de Visualizador - Los visualizadores de proyecto pueden ver proyectos asignados
  • Aislamiento del Equipo - Los usuarios solo ven proyectos de su equipo

Creación de Proyectos (create):

  • Roles de Administrador - isShowAllAndOwnProjectCRUD() (Superadmin, OrgManager)
  • Roles de Ventas - Los Gerentes de Ventas y Representantes de Ventas pueden crear proyectos
  • Restricción de Usuario - Los usuarios regulares no pueden crear proyectos

Edición de Proyectos (edit/update):

  • Basado en Permisos - Usuarios con permiso 'project.update'
  • Excepción de Visualizador - Los visualizadores de proyecto pueden editar si están asignados al proyecto
  • Basado en Propiedad - Los usuarios de ventas pueden editar sus propios proyectos
  • Validación del Equipo - Todas las ediciones requieren membresía del mismo equipo

Eliminación/Archivado de Proyectos:

  • Control de Administrador - Principalmente roles de administrador y gerente
  • Derechos de Propiedad - Los usuarios de ventas pueden eliminar sus propios proyectos
  • Aislamiento del Equipo - Solo se pueden eliminar proyectos dentro del mismo equipo

Sistema de Asignación de Proyectos

Relaciones Usuario-Proyecto:

  • Sistema de Asignación de Usuarios - Asignación explícita de usuarios a proyectos
  • belongsToProject() - Método para verificar si el usuario pertenece al proyecto
  • Validación del Equipo - La asignación de proyecto requiere membresía del mismo equipo
  • Cascada de Permisos - La asignación de proyecto afecta el acceso a tableros y tareas

Beneficios de Asignación:Control Granular - Asignar usuarios específicos a proyectos específicos
Aislamiento de Seguridad - Los usuarios solo acceden a proyectos asignados
Gestión Flexible - Fácil agregar/eliminar usuarios de proyectos
Herencia de Permisos - La asignación de proyecto habilita acceso a tableros y tareas


Seguridad a Nivel de Tablero - Controles de Acceso Específicos del Tablero

Sistema de Permisos de Tablero

Control de Acceso a Tableros: Basado en análisis de ProjectBoardPolicy:

Visualización de Tableros:

  • Dependencia de Permisos de Tareas - Requiere permiso 'task.viewAny'
  • Asignación de Proyecto - Debe estar asignado al proyecto que contiene el tablero
  • Membresía del Equipo - Debe ser miembro del mismo equipo que el tablero
  • Acceso Basado en Roles - Diferentes niveles de acceso basados en el rol del usuario

Creación de Tableros:

  • Roles de Administrador - Los usuarios isShowAllAndOwnTaskCRUD() pueden crear tableros
  • Usuarios Regulares - Los usuarios pueden crear tableros en proyectos asignados
  • Gerentes Visualizadores - Pueden crear tableros en proyectos asignados
  • Restricción de Visualizador - Los visualizadores regulares no pueden crear tableros

Gestión de Tableros:

  • Permiso de Actualización - Requiere permiso 'task.update'
  • Basado en Propiedad - Los usuarios pueden gestionar tableros que poseen
  • Anulación de Administrador - Los administradores pueden gestionar todos los tableros del equipo
  • Validación del Equipo - Todas las operaciones requieren membresía del mismo equipo

Características de Seguridad del Tablero

Validación de Acceso:

  • Verificación Multi-capa - Verificaciones de permisos, roles, equipo y asignación de proyecto
  • Unión de Usuario de Proyecto - Consulta compleja uniendo tablas de proyectos y project_users
  • Aislamiento del Equipo - Acceso al tablero estrictamente limitado a miembros del equipo
  • Cascada de Permisos - El acceso al tablero habilita acceso a columnas y tareas

Beneficios de Seguridad:Seguridad Basada en Proyectos - Acceso al tablero vinculado a asignación de proyecto
Aislamiento del Equipo - Separación completa entre diferentes equipos
Respeto de Roles - Diferentes capacidades basadas en roles de usuario
Reconocimiento de Propiedad - Los propietarios de tableros tienen permisos mejorados


Permisos a Nivel de Tarea - Acceso Granular a Tareas

Sistema de Permisos de Tareas

Control de Acceso a Tareas: Basado en análisis de TaskPolicy:

Visualización de Tareas:

  • Validación del Equipo - Debe ser miembro del mismo equipo que la tarea
  • Verificación de Equipo de Columna - Valida que el equipo del usuario coincida con el equipo de la columna de la tarea
  • Todos los Roles Permitidos - Todos los tipos de roles pueden ver tareas (con validación del equipo)
  • Acceso Universal - viewAny() devuelve true (con otras validaciones)

Creación de Tareas:

  • Acceso Amplio - La mayoría de los roles pueden crear tareas (administrador, usuario, visualizador, gerente visualizador)
  • Asignación de Proyecto - Debe tener acceso al proyecto objetivo
  • Verificación de Permisos - Algunos roles requieren permiso 'task.update'
  • Validación del Equipo - La creación de tareas limitada a miembros del equipo

Gestión de Tareas:

  • Actualizar Tareas - Permisos similares a la creación de tareas
  • Eliminar Tareas - Requiere rol apropiado y membresía del equipo
  • Asignar Usuarios - Puede asignar usuarios a tareas con permisos apropiados
  • Agregar Comentarios - Acceso amplio para colaboración del equipo

Permisos Especiales de Tareas:

  • moveToBoard - Puede mover tareas entre tableros dentro del mismo equipo
  • Seguimiento de Tiempo - Los visualizadores de proyecto con tipo 'viewer' no pueden rastrear tiempo
  • Acceso a Archivos - El acceso a adjuntos de tareas sigue permisos de tareas

Implementación de Seguridad de Tareas

Patrón de Validación de Permisos: Todas las operaciones de tareas siguen un patrón de validación similar:

  1. Validación del Equipo - Verificar que el equipo del usuario coincida con el equipo de la columna de la tarea
  2. Verificación de Rol - Verificar que el rol del usuario tenga permisos apropiados
  3. Asignación de Proyecto - Asegurar que el usuario esté asignado al proyecto (para visualizadores)
  4. Cadena de Permisos - Verificar cadenas de permisos específicas donde se requiera

Beneficios de Seguridad de Tareas:Aislamiento del Equipo - Tareas completamente aisladas entre equipos
Acceso Basado en Proyectos - Acceso a tareas vinculado a asignación de proyecto
Permisos Apropiados por Rol - Diferentes capacidades basadas en el rol del usuario
Control Granular - Permisos específicos para diferentes operaciones de tareas


Acceso al Portal del Cliente - Qué Pueden Ver y Hacer los Clientes

Implementación del Portal del Cliente

Sistema de Usuarios Cliente: Basado en análisis del código, el acceso al portal del cliente usa el rol PROJECT_VIEWER:

Características del Portal del Cliente:

  • Vista DashboardClient - Panel especial para usuarios cliente
  • Detección isViewer() - El sistema detecta usuarios cliente y los enruta a la interfaz del cliente
  • Integración de Chat - Creación automática de chat para comunicación con clientes
  • Integración de Widget - Widget del portal del cliente para comunicación

Permisos de Acceso del Cliente:

  • Asignación de Proyecto Requerida - Los clientes deben estar asignados a proyectos específicos
  • Validación del Equipo - Acceso del cliente limitado a su contexto del equipo
  • Alcance Limitado - Los clientes solo ven proyectos asignados y datos relacionados
  • Interfaz Profesional - Interfaz separada orientada al cliente

Seguridad del Portal del Cliente

Control de Acceso para Clientes:

  • Enrutamiento Basado en Roles - Los usuarios isViewer() enrutados automáticamente al portal del cliente
  • Aislamiento de Proyectos - Los clientes solo ven proyectos a los que están asignados
  • Filtrado de Datos - Todas las consultas filtradas por asignación y permisos del cliente
  • Límite del Equipo - Acceso del cliente estrictamente limitado a su equipo

Beneficios del Portal del Cliente:Acceso Seguro - Los clientes solo ven información relevante del proyecto
Interfaz Profesional - Interfaz limpia y apropiada para clientes
Transparencia del Proyecto - Los clientes pueden ver progreso y estado del proyecto
Comunicación Controlada - Canales de comunicación gestionados con el equipo


Arquitectura del Sistema de Permisos

Implementación Técnica

Almacenamiento de Permisos:

  • Sistema de Roles - Almacena roles de usuario disponibles y capacidades
  • Asignación de Roles de Usuario - Vincula usuarios a roles con contexto del equipo
  • Permisos Individuales - Permisos específicos dentro de cada rol
  • Aislamiento del Equipo - Todos los permisos con alcance a nivel de equipo

Verificación de Permisos:

  • hasPermission() - Verificación de permisos basada en cadenas
  • Métodos de Rol - Métodos específicos de verificación de roles
  • Clases de Política - Clases de política dedicadas para cada modelo
  • Registro de Puertas - Registro automático de puertas para todos los permisos

Capas de Seguridad:

  1. Autenticación - El usuario debe estar conectado
  2. Membresía del Equipo - El usuario debe ser miembro del equipo relevante
  3. Validación de Rol - El usuario debe tener rol apropiado
  4. Verificación de Permisos - El usuario debe tener permiso específico
  5. Asignación de Proyecto - El usuario debe estar asignado al proyecto (donde sea aplicable)

Beneficios de Permisos

Seguridad Multi-capa - Múltiples capas de validación previenen acceso no autorizado
Aislamiento del Equipo - Separación completa entre diferentes equipos
Acceso Apropiado por Rol - Los permisos coinciden con las responsabilidades del usuario
Control Específico del Proyecto - Control granular sobre el acceso al proyecto
Seguridad del Cliente - Acceso seguro y controlado para usuarios cliente


Comenzando con la Gestión de Permisos

Guía de Inicio Rápido

Paso 1: Entender tu Rol

  1. Verificar tu rol de usuario y permisos
  2. Entender qué acciones puedes realizar
  3. Saber qué proyectos y datos puedes acceder
  4. Identificar cualquier limitación en tu acceso

Paso 2: Gestionar Permisos del Equipo

  1. Revisar roles y niveles de acceso de miembros del equipo
  2. Asignar usuarios a proyectos apropiados
  3. Verificar que los miembros del equipo tengan permisos necesarios
  4. Ajustar roles según sea necesario para requisitos del proyecto

Paso 3: Configurar Acceso del Cliente

  1. Configurar usuarios cliente con rol PROJECT_VIEWER
  2. Asignar clientes a proyectos específicos
  3. Configurar acceso al portal del cliente apropiadamente
  4. Probar acceso del cliente para asegurar aislamiento apropiado

Mejores Prácticas de Permisos

Principio de Menor Privilegio - Dar a los usuarios solo el acceso que necesitan
Revisión Regular - Auditar periódicamente roles y permisos de usuarios
Definición Clara de Roles - Asegurar que el equipo entienda sus niveles de acceso
Asignación de Proyectos - Asignar correctamente usuarios a proyectos relevantes
Separación de Clientes - Mantener acceso del cliente seguro y apropiado
Aislamiento del Equipo - Mantener límites claros entre equipos


Solución de Problemas de Permisos

Problemas Comunes

No Puede Acceder a Proyectos:

  • Verificación de Rol - Verificar que tienes rol apropiado para acceso a proyectos
  • Asignación de Proyecto - Asegurar que estás asignado al proyecto específico
  • Membresía del Equipo - Confirmar que eres miembro del equipo correcto
  • Cadena de Permisos - Verificar si tienes las cadenas de permisos requeridas

No Puede Crear/Editar Tareas:

  • Permiso de Tarea - Verificar que tienes permiso 'task.update'
  • Asignación de Proyecto - Asegurar que estás asignado al proyecto
  • Validación del Equipo - Confirmar que tu equipo coincide con el equipo de la tarea
  • Limitaciones de Rol - Algunos roles tienen acceso restringido a tareas

Problemas del Portal del Cliente:

  • Configuración de Rol - Verificar que el cliente tiene rol PROJECT_VIEWER
  • Asignación de Proyecto - Asegurar que el cliente está asignado a proyectos específicos
  • Configuración del Portal - Verificar configuración del widget del portal del cliente
  • Contexto del Equipo - Verificar que el cliente está en contexto del equipo correcto

Depuración de Permisos

Verificando tus Permisos:

  1. Verificación de Rol - Confirmar tu rol asignado
  2. Lista de Permisos - Revisar tus permisos específicos
  3. Asignación de Proyecto - Verificar a qué proyectos estás asignado
  4. Contexto del Equipo - Verificar que estás en el equipo correcto
  5. Validación de Política - Entender qué reglas de política se aplican a tus acciones

Próximos Pasos

Ahora que entiendes permisos y control de acceso, estás listo para explorar:

Recuerda: El sistema de permisos en Corcava está diseñado para proporcionar seguridad mientras habilita colaboración. Entender tu rol y permisos te ayudará a trabajar efectivamente dentro del sistema mientras mantienes controles de acceso apropiados para tu equipo y clientes.

Artículos relacionados