174 lines
7.5 KiB
PHP
174 lines
7.5 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
class RolePermissionSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
// Permissions Dashboard
|
|
Permission::firstOrCreate(['name' => 'View:Dashboard', 'guard_name' => 'web']);
|
|
|
|
// Permissions Analysis
|
|
Permission::firstOrCreate(['name' => 'View:Analysis', 'guard_name' => 'web']);
|
|
|
|
// Permissions User
|
|
Permission::firstOrCreate(['name' => 'View:User', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Create:User', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:User', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:User', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'DeleteAny:User', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'ResetPassword:User', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'ToggleStatus:User', 'guard_name' => 'web']);
|
|
|
|
// Permissions Category
|
|
Permission::firstOrCreate(['name' => 'View:Category', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Create:Category', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:Category', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:Category', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'DeleteAny:Category', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'ToggleStatus:Category', 'guard_name' => 'web']);
|
|
|
|
// Permissions Product
|
|
Permission::firstOrCreate(['name' => 'View:Product', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Create:Product', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:Product', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:Product', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'DeleteAny:Product', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'ToggleStatus:Product', 'guard_name' => 'web']);
|
|
|
|
// Permissions Order
|
|
Permission::firstOrCreate(['name' => 'View:Order', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Create:Order', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:Order', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:Order', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'DeleteAny:Order', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Print:Order', 'guard_name' => 'web']);
|
|
|
|
// Permissions Expense
|
|
Permission::firstOrCreate(['name' => 'View:Expense', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Create:Expense', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:Expense', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:Expense', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'DeleteAny:Expense', 'guard_name' => 'web']);
|
|
|
|
// Permissions Purchase
|
|
Permission::firstOrCreate(['name' => 'View:Purchase', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Create:Purchase', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:Purchase', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:Purchase', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'DeleteAny:Purchase', 'guard_name' => 'web']);
|
|
|
|
// Permissions Payroll
|
|
Permission::firstOrCreate(['name' => 'View:Payroll', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Generate:Payroll', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:Payroll', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'DeleteAny:Payroll', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Pay:Payroll', 'guard_name' => 'web']);
|
|
|
|
// Permissions PayrollAdjustment
|
|
Permission::firstOrCreate(['name' => 'View:PayrollAdjustment', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Create:PayrollAdjustment', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:PayrollAdjustment', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:PayrollAdjustment', 'guard_name' => 'web']);
|
|
|
|
// Permissions General Setting
|
|
Permission::firstOrCreate(['name' => 'View:Setting', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:Setting', 'guard_name' => 'web']);
|
|
|
|
// Permissions Role
|
|
Permission::firstOrCreate(['name' => 'View:Role', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Create:Role', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Edit:Role', 'guard_name' => 'web']);
|
|
Permission::firstOrCreate(['name' => 'Delete:Role', 'guard_name' => 'web']);
|
|
|
|
// Permissions Log
|
|
Permission::firstOrCreate(['name' => 'View:Log', 'guard_name' => 'web']);
|
|
|
|
// Permissions Activity
|
|
Permission::firstOrCreate(['name' => 'View:Activity', 'guard_name' => 'web']);
|
|
|
|
// Create Roles
|
|
$developer = Role::firstOrCreate(['name' => 'Developer', 'guard_name' => 'web']);
|
|
$owner = Role::firstOrCreate(['name' => 'Owner', 'guard_name' => 'web']);
|
|
$admin = Role::firstOrCreate(['name' => 'Admin', 'guard_name' => 'web']);
|
|
|
|
// Assign permissions to Developer (All Permissions)
|
|
$allPermissions = Permission::all();
|
|
$developer->syncPermissions($allPermissions);
|
|
|
|
// Assign permissions to Owner (All except View:Log)
|
|
$ownerPermissions = Permission::whereNotIn('name', [
|
|
'View:Log',
|
|
|
|
'View:Role',
|
|
'Create:Role',
|
|
'Edit:Role',
|
|
'Delete:Role',
|
|
])->get();
|
|
$owner->syncPermissions($ownerPermissions);
|
|
|
|
// Assign permissions to Admin
|
|
// Admin gets everything except deleting users and settings
|
|
$adminPermissions = Permission::whereNotIn('name', [
|
|
'View:Analysis',
|
|
|
|
'View:User',
|
|
'Create:User',
|
|
'Edit:User',
|
|
'Delete:User',
|
|
'DeleteAny:User',
|
|
'ResetPassword:User',
|
|
'ToggleStatus:User',
|
|
|
|
'Create:Category',
|
|
'Edit:Category',
|
|
'Delete:Category',
|
|
'DeleteAny:Category',
|
|
'ToggleStatus:Category',
|
|
|
|
'Create:Product',
|
|
'Edit:Product',
|
|
'Delete:Product',
|
|
'DeleteAny:Product',
|
|
'ToggleStatus:Product',
|
|
|
|
'View:Purchase',
|
|
'Create:Purchase',
|
|
'Edit:Purchase',
|
|
'Delete:Purchase',
|
|
'DeleteAny:Purchase',
|
|
|
|
'Generate:Payroll',
|
|
'Delete:Payroll',
|
|
'DeleteAny:Payroll',
|
|
'Pay:Payroll',
|
|
|
|
'Create:PayrollAdjustment',
|
|
'Edit:PayrollAdjustment',
|
|
'Delete:PayrollAdjustment',
|
|
'DeleteAny:PayrollAdjustment',
|
|
|
|
'View:Setting',
|
|
'Edit:Setting',
|
|
|
|
'View:Role',
|
|
'Create:Role',
|
|
'Edit:Role',
|
|
'Delete:Role',
|
|
|
|
'View:Log',
|
|
|
|
'View:Activity',
|
|
])->get();
|
|
$admin->syncPermissions($adminPermissions);
|
|
}
|
|
}
|