'SuperAdmin', 'style' => 'dark' ], [ 'name' => 'Admin', 'style' => 'primary' ], [ 'name' => 'Administrador Web', 'style' => 'primary' ], [ 'name' => 'Editor', 'style' => 'primary' ], [ 'name' => 'Productos y servicios', 'style' => 'info' ], [ 'name' => 'Recursos humanos', 'style' => 'success' ], [ 'name' => 'Nómina', 'style' => 'success' ], [ 'name' => 'Activos fijos', 'style' => 'secondary' ], [ 'name' => 'Compras y gastos', 'style' => 'info' ], [ 'name' => 'CRM', 'style' => 'warning' ], [ 'name' => 'Vendedor', 'style' => 'info' ], [ 'name' => 'Gerente', 'style' => 'danger' ], [ 'name' => 'Facturación', 'style' => 'info' ], [ 'name' => 'Facturación avanzado', 'style' => 'danger' ], [ 'name' => 'Finanzas', 'style' => 'info' ], [ 'name' => 'Auditor', 'style' => 'dark' ], ]; private $permissions = [ // Aplicación 'webapp' => [ 'name' => 'Aplicación', 'sub_groups' => [ 'general-settings' => [ 'name' => 'Ajustes generales', 'actions' => [ 'allow' => [], ] ], 'cache-manager' => [ 'name' => 'Ajuests de caché', 'actions' => [ 'view' => [], 'edit' => [], ] ], 'session-settings' => [ 'name' => 'Ajustes de sesión', 'actions' => [ 'view' => [], 'edit' => [], ] ], 'catalogs' => [ 'name' => 'Catálogos', 'actions' => [ 'view' => [ 'Gerente', ], 'create' => [ 'Gerente', ], 'edit' => [ 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'api-banxico' => [ 'name' => 'API BANXICO (Tipos de cambio)', 'actions' => [ 'allow' => [ 'Gerente', ], ] ], 'smtp-settings' => [ 'name' => 'Servidor de correo SMTP', 'actions' => [ 'allow' => [], ] ], ] ], // Sitio Web 'website' => [ 'name' => 'Sitio Web', 'sub_groups' => [ 'general-settings' => [ 'name' => 'Ajustes generales', 'actions' => [ 'allow' => [ 'Administrador Web', ], ] ], 'slider' => [ 'name' => 'Slider', 'actions' => [ 'view' => [ 'Administrador Web', ], 'create' => [ 'Administrador Web', ], 'edit' => [ 'Administrador Web', ], 'delete' => [ 'Administrador Web', ] ] ], 'cmagazine' => [ 'name' => 'Concierge Magazine', 'actions' => [ 'view' => [ 'Administrador Web', ], 'create' => [ 'Administrador Web', ], 'edit' => [ 'Administrador Web', ], 'delete' => [ 'Administrador Web', ] ] ], 'faq' => [ 'name' => 'Preguntas frecuentes', 'actions' => [ 'view' => [ 'Administrador Web', ], 'create' => [ 'Administrador Web', ], 'edit' => [ 'Administrador Web', ], 'delete' => [ 'Administrador Web', ] ] ], 'legal' => [ 'name' => 'Avisos legales', 'actions' => [ 'view' => [ 'Administrador Web', ], 'edit' => [ 'Administrador Web', ], ] ], ] ], // Empresa 'company' => [ 'name' => 'Empresa', 'sub_groups' => [ 'general-settings' => [ 'name' => 'Ajustes generales', 'actions' => [ 'allow' => [ 'Gerente', ], ] ], 'stores' => [ 'name' => 'Sucursales', 'actions' => [ 'view' => [], 'create' => [], 'edit' => [], 'delete' => [], ] ], 'catalogs' => [ 'name' => 'Catálogos', 'actions' => [ 'view' => [ 'Gerente', ], 'create' => [ 'Gerente', ], 'edit' => [ 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], ] ], // Recursos humanos 'human-resources' => [ 'name' => 'Recursos Humanos', 'sub_groups' => [ 'dashboard' => [ 'name' => 'Tablero', 'actions' => [ 'allow' => [ 'Recursos humanos', 'Gerente', ] ] ], 'employees' => [ 'name' => 'Empleados', 'actions' => [ 'view' => [ 'Recursos humanos', 'Gerente', ], 'create' => [ 'Recursos humanos', 'Gerente', ], 'edit' => [ 'Recursos humanos', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'jobs' => [ 'name' => 'Puestos de trabajo', 'actions' => [ 'view' => [ 'Recursos humanos', 'Gerente', ], 'create' => [ 'Recursos humanos', 'Gerente', ], 'edit' => [ 'Recursos humanos', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], ] ], // Nómina 'payrolls' => [ 'name' => 'Nómina', 'sub_groups' => [ 'dashboard' => [ 'name' => 'Tablero', 'actions' => [ 'allow' => [ 'Nómina', 'Gerente', ] ] ], 'contracts' => [ 'name' => 'Contratos', 'actions' => [ 'view' => [ 'Nómina', 'Gerente', ], 'create' => [ 'Nómina', 'Gerente', ], 'edit' => [ 'Nómina', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'assistance' => [ 'name' => 'Asistencias', 'actions' => [ 'view' => [ 'Nómina', 'Gerente', ], 'create' => [ 'Nómina', 'Gerente', ], 'edit' => [ 'Nómina', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], ] ], // Activos fijos 'assets' => [ 'name' => 'Activos fijos', 'sub_groups' => [ 'assets' => [ 'name' => 'Catálogo de activos', 'actions' => [ 'view' => [ 'Activos fijos', 'Gerente', ], 'create' => [ 'Activos fijos', 'Gerente', ], 'edit' => [ 'Activos fijos', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'events' => [ 'name' => 'Eventos relacionados', 'actions' => [ 'view' => [ 'Activos fijos', 'Gerente', ], 'create' => [ 'Activos fijos', 'Gerente', ], 'edit' => [ 'Activos fijos', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], ] ], // Gestión de Relación con los Clientes 'crm' => [ 'name' => 'Gestión de Relación con los Clientes', 'sub_groups' => [ 'contacts' => [ 'name' => 'Contactos', 'actions' => [ 'view' => [ 'CRM', 'Gerente', ], 'create' => [ 'CRM', 'Gerente', ], 'edit' => [ 'CRM', 'Gerente', ], 'delete' => [ 'Gerente', ] ] ], 'marketing-campaigns' => [ 'name' => 'Campañas de marketing', 'actions' => [ 'view' => [ 'CRM', 'Gerente', ], 'create' => [ 'CRM', 'Gerente', ], 'edit' => [ 'CRM', 'Gerente', ], 'delete' => [ 'Gerente', ] ] ], 'leads' => [ 'name' => 'Oportunidades', 'actions' => [ 'view' => [ 'CRM', 'Gerente', ], 'create' => [ 'CRM', 'Gerente', ], 'edit' => [ 'CRM', 'Gerente', ], 'delete' => [ 'Gerente', ] ] ], 'newsletter' => [ 'name' => 'Newsletter', 'actions' => [ 'view' => [ 'Administrador Web', 'CRM', 'Gerente', ], 'edit' => [ 'Administrador Web', 'CRM', 'Gerente', ], 'delete' => [] ] ], ] ], // Gastos y compras 'purchases' => [ 'name' => 'Gastos y compras', 'sub_groups' => [ 'dashboard' => [ 'name' => 'Tablero', 'actions' => [ 'allow' => [ 'Compras y gastos', 'Gerente', ] ] ], 'supplier' => [ 'name' => 'Proveedores', 'actions' => [ 'view' => [ 'Compras y gastos', 'Gerente', 'Finanzas', ], 'create' => [ 'Compras y gastos', 'Gerente', ], 'edit' => [ 'Compras y gastos', 'Gerente', ], 'delete' => [ 'Gerente', ] ] ], 'orders' => [ 'name' => 'Órdenes de compras', 'actions' => [ 'view' => [ 'Compras y gastos', 'Gerente', ], 'create' => [ 'Compras y gastos', 'Gerente', ], 'edit' => [ 'Compras y gastos', 'Gerente', ], 'delete' => [ 'Gerente', ] ] ], 'purchases' => [ 'name' => 'Compras y gastos', 'actions' => [ 'view' => [ 'Compras y gastos', 'Gerente', 'Finanzas', ], 'create' => [ 'Compras y gastos', 'Gerente', ], 'edit' => [ 'Compras y gastos', 'Gerente', ], 'delete' => [ 'Gerente', ] ] ], ] ], // Productos y servicios 'products' => [ 'name' => 'Productos y servicios', 'sub_groups' => [ 'categories' => [ 'name' => 'Categorías de productos', 'actions' => [ 'view' => [ 'Productos y servicios', 'Activos fijos', 'Compras y gastos', 'Vendedor', 'Gerente', 'Facturación', 'Facturación avanzado', ], 'create' => [ 'Productos y servicios', 'Activos fijos', 'Compras y gastos', 'Gerente', ], 'edit' => [ 'Productos y servicios', 'Activos fijos', 'Compras y gastos', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'catalogs' => [ 'name' => 'Catalogos de productos', 'actions' => [ 'view' => [ 'Productos y servicios', 'Gerente', ], 'create' => [ 'Productos y servicios', 'Gerente', ], 'edit' => [ 'Productos y servicios', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'products' => [ 'name' => 'Productos', 'actions' => [ 'view' => [ 'Productos y servicios', 'Activos fijos', 'Compras y gastos', 'Vendedor', 'Gerente', 'Facturación', 'Facturación avanzado', ], 'create' => [ 'Productos y servicios', 'Activos fijos', 'Compras y gastos', 'Gerente', ], 'edit' => [ 'Productos y servicios', 'Activos fijos', 'Compras y gastos', 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], ], ], // Punto de venta 'pos' => [ 'name' => 'Punto de venta', 'sub_groups' => [ 'dashboard' => [ 'name' => 'Tablero', 'actions' => [ 'allow' => [ 'Gerente', ], ] ], 'pricelists-config' => [ 'name' => 'listas de precios', 'actions' => [ 'view' => [ 'Productos y servicios', 'Compras y gastos', 'Vendedor', 'Gerente', ], 'create' => [ 'Gerente', ], 'edit' => [ 'Gerente', ], 'delete' => [], ] ], 'ticket-config' => [ 'name' => 'Ticket de punto de venta', 'actions' => [ 'allow' => [ 'Gerente', ], ] ], 'catalogs' => [ 'name' => 'Catalogos de punto de venta', 'actions' => [ 'view' => [ 'Productos y servicios', 'Gerente', ], 'create' => [ 'Productos y servicios', 'Gerente', ], 'edit' => [ 'Productos y servicios', 'Gerente', ], 'delete' => [], ] ], 'customers' => [ 'name' => 'Clientes', 'actions' => [ 'view' => [ 'Vendedor', 'Gerente', 'Facturación', 'Facturación avanzado', 'Finanzas', ], 'create' => [ 'Vendedor', 'Gerente', ], 'edit' => [ 'Vendedor', 'Gerente', 'Facturación', 'Facturación avanzado', ], 'delete' => [ 'Gerente', ], ] ], 'quotes' => [ 'name' => 'Cotizaciones', 'actions' => [ 'view' => [ 'Vendedor', 'Gerente', ], 'create' => [ 'Vendedor', 'Gerente', ], 'edit' => [ 'Vendedor', 'Gerente', ], 'delete' => [ 'Vendedor', 'Gerente', ], ] ], 'sales' => [ 'name' => 'Ventas', 'actions' => [ 'view' => [ 'Vendedor', 'Gerente', 'Facturación', 'Facturación avanzado', 'Finanzas', ], 'create' => [ 'Vendedor', 'Gerente', ], 'edit' => [ 'Vendedor', 'Gerente', ], 'cancel' => [ 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'modify-sale-price' => [ 'name' => 'Modificar precio de venta', 'actions' => [ 'allow' => [ 'Gerente', ], ] ], 'apply-discounts' => [ 'name' => 'Aplicar descuentos', 'actions' => [ 'allow' => [ 'Gerente', ], ] ], 'allow-negative-iventory' => [ 'name' => 'Permitir venta con inventario negativo', 'actions' => [ 'allow' => [ 'Gerente', ], ] ], 'remissions' => [ 'name' => 'Remisiones', 'actions' => [ 'view' => [ 'Vendedor', 'Gerente', 'Finanzas', ], 'create' => [ 'Vendedor', 'Gerente', ], 'edit' => [ 'Vendedor', 'Gerente', ], 'cancel' => [ 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'credit-notes' => [ 'name' => 'Notas de crédito', 'actions' => [ 'view' => [ 'Vendedor', 'Gerente', 'Finanzas', ], 'create' => [ 'Vendedor', 'Gerente', ], 'edit' => [ 'Vendedor', 'Gerente', ], 'cancel' => [ 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], ] ], // Facturación 'billing' => [ 'name' => 'Facturación', 'sub_groups' => [ 'dashboard' => [ 'name' => 'Tablero', 'actions' => [ 'allow' => [ 'Facturación avanzado', 'Gerente', ] ] ], 'general-settings' => [ 'name' => 'Configuraciones de facturación', 'actions' => [ 'allow' => [ 'Facturación avanzado', 'Gerente', ], ] ], 'csds-settings' => [ 'name' => 'Certificados de Sello Digital', 'actions' => [ 'allow' => [ 'Facturación avanzado', 'Gerente', ], ] ], 'smtp-settings' => [ 'name' => 'Correo SMTP de facturación', 'actions' => [ 'allow' => [ 'Gerente', ], ] ], 'stamping-package' => [ 'name' => 'Paquete de timbrado', 'actions' => [ 'allow' => [ 'Facturación avanzado', 'Gerente', ], ] ], 'ingresos' => [ 'name' => 'Facturación CFDI Ingresos', 'actions' => [ 'view' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ], 'create' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ], 'cancel' => [ 'Facturación avanzado', 'Gerente', ], ] ], 'egresos' => [ 'name' => 'Facturación CFDI Egresos', 'actions' => [ 'view' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ], 'create' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ], 'cancel' => [ 'Facturación avanzado', 'Gerente', ], ] ], 'pagos' => [ 'name' => 'Facturación CFDI Pagos', 'actions' => [ 'view' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ], 'create' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ], 'cancel' => [ 'Facturación avanzado', 'Gerente', ], ] ], 'nomina' => [ 'name' => 'Facturación CFDI Nómina', 'actions' => [ 'view' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ], 'create' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ], 'cancel' => [ 'Facturación avanzado', 'Gerente', ], ] ], 'verify-cfdi' => [ 'name' => 'Verificador de CFDI 4.0', 'actions' => [ 'allow' => [ 'Facturación', 'Facturación avanzado', 'Gerente', ] ] ], ], ], // Finanzas 'finance' => [ 'name' => 'Finanzas', 'sub_groups' => [ 'dashboard' => [ 'name' => 'Tablero', 'actions' => [ 'allow' => [ 'Finanzas', 'Gerente', ] ] ], 'accounting-charts' => [ 'name' => 'Catálogos de cuentas contables', 'actions' => [ 'view' => [ 'Finanzas', 'Gerente', ], 'create' => [ 'Finanzas', 'Gerente', ], 'edit' => [ 'Finanzas', 'Gerente', ], 'cancel' => [ 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'accounts-payable' => [ 'name' => 'Cuentas por pagar', 'actions' => [ 'view' => [ 'Finanzas', 'Gerente', ], 'create' => [ 'Finanzas', 'Gerente', ], 'edit' => [ 'Finanzas', 'Gerente', ], 'cancel' => [ 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], 'accounts-receivable' => [ 'name' => 'Cuentas por cobrar', 'actions' => [ 'view' => [ 'Finanzas', 'Gerente', ], 'create' => [ 'Finanzas', 'Gerente', ], 'edit' => [ 'Finanzas', 'Gerente', ], 'cancel' => [ 'Gerente', ], 'delete' => [ 'Gerente', ], ] ], ] ], // Blog 'blog' => [ 'name' => 'Blog', 'sub_groups' => [ 'categories' => [ 'name' => 'Categorias', 'actions' => [ 'view' => [ 'Editor', ], 'create' => [ 'Editor', ], 'edit' => [ 'Editor', ], 'delete' => [ 'Editor', ], ] ], 'tags' => [ 'name' => 'Etiquetas', 'actions' => [ 'view' => [ 'Editor', ], 'create' => [ 'Editor', ], 'edit' => [ 'Editor', ], 'delete' => [ 'Editor', ], ] ], 'articles' => [ 'name' => 'Articulos', 'actions' => [ 'view' => [ 'Editor', ], 'create' => [ 'Editor', ], 'edit' => [ 'Editor', ], 'delete' => [ 'Editor', ], ] ], 'comments' => [ 'name' => 'Comentarios', 'actions' => [ 'view' => [ 'Editor', ], 'create' => [ 'Editor', ], 'edit' => [ 'Editor', ], 'delete' => [ 'Editor', ], ] ], ] ], // Sistema 'system' => [ 'name' => 'Sistema', 'sub_groups' => [ 'users' => [ 'name' => 'Usuarios de sistema', 'actions' => [ 'view' => [ 'Gerente', ], 'create' => [], 'edit' => [], 'delete' => [] ] ], 'roles' => [ 'name' => 'Roles de usuario', 'actions' => [ 'view' => [ 'Gerente', ], 'create' => [], 'edit' => [], 'delete' => [] ] ], 'permissions' => [ 'name' => 'Permisos de usuarios', 'actions' => [ 'view' => [] ] ] ] ], // Importación 'import' => [ 'name' => 'Importar', 'sub_groups' => [ 'catalogs-sat' => [ 'name' => 'Importar Catálogos CFDI 4.0', 'actions' => [ 'allow' => [] ] ] ] ], // Exportación 'export' => [ 'name' => 'Exportar', 'sub_groups' => [ 'customers' => [ 'name' => 'Exportar clientes', 'actions' => [ 'allow' => [ 'Gerente', ] ] ] ] ], ]; /** * Run the database seeds. * * @return void */ public function run() { foreach ($this->roles as $role) { Role::create($role); } $group_blockId = 0; foreach ($this->permissions as $group_idx => $group) { $sub_group_blockId = 0; foreach ($group['sub_groups'] as $sub_group_idx => $sub_group) { $action_id = 0; foreach ($sub_group['actions'] as $action => $roleNames) { $roles_default = ['SuperAdmin']; // Default Admin role if ("{$group_idx}.{$sub_group_idx}" != 'system.permissions') $roles_default[] = 'Admin'; // Default Auditor role if ($sub_group_idx == 'dashboard' || $action == 'view') $roles_default[] = 'Auditor'; Permission::create([ 'id' => ($group_blockId * 1000) + ($sub_group_blockId * 10) + $action_id++, 'name' => "{$group_idx}.{$sub_group_idx}.{$action}", 'group_name' => $group['name'], 'sub_group_name' => $sub_group['name'], 'action' => $action, ])->syncRoles(array_merge($roles_default, $roleNames)); } $sub_group_blockId++; } $group_blockId++; } app()->make(\Spatie\Permission\PermissionRegistrar::class)->forgetCachedPermissions(); } }