From e1a9606695a1e4fa846f9ab7e2fdc5c31987868d Mon Sep 17 00:00:00 2001 From: Fairuz Date: Tue, 25 May 2021 11:47:27 +0800 Subject: [PATCH] Fixes for admin can't view document / missing permission --- .../seeds/AdminUserPermissionsTableSeeder.php | 113 +++++++++++------- 1 file changed, 73 insertions(+), 40 deletions(-) diff --git a/database/seeds/AdminUserPermissionsTableSeeder.php b/database/seeds/AdminUserPermissionsTableSeeder.php index c79dcf1f..fca79e46 100644 --- a/database/seeds/AdminUserPermissionsTableSeeder.php +++ b/database/seeds/AdminUserPermissionsTableSeeder.php @@ -19,50 +19,56 @@ class AdminUserPermissionsTableSeeder extends Seeder app()['cache']->forget('spatie.permission.cache'); // admin permissions - Permission::create(['name' => 'view document', 'guard_name' => 'web']); - Permission::create(['name' => 'add document', 'guard_name' => 'web']); - Permission::create(['name' => 'edit document', 'guard_name' => 'web']); - Permission::create(['name' => 'delete document', 'guard_name' => 'web']); + $permissions = [ + ['name' => 'view document', 'guard_name' => 'web'], + ['name' => 'add document', 'guard_name' => 'web'], + ['name' => 'edit document', 'guard_name' => 'web'], + ['name' => 'delete document', 'guard_name' => 'web'], - Permission::create(['name' => 'view standard_segment', 'guard_name' => 'web']); - Permission::create(['name' => 'add standard_segment', 'guard_name' => 'web']); - Permission::create(['name' => 'edit standard_segment', 'guard_name' => 'web']); - Permission::create(['name' => 'delete standard_segment', 'guard_name' => 'web']); + ['name' => 'view standard_segment', 'guard_name' => 'web'], + ['name' => 'add standard_segment', 'guard_name' => 'web'], + ['name' => 'edit standard_segment', 'guard_name' => 'web'], + ['name' => 'delete standard_segment', 'guard_name' => 'web'], - Permission::create(['name' => 'view standard_segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'add standard_segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'edit standard_segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'delete standard_segment_constant', 'guard_name' => 'web']); + ['name' => 'view standard_segment_constant', 'guard_name' => 'web'], + ['name' => 'add standard_segment_constant', 'guard_name' => 'web'], + ['name' => 'edit standard_segment_constant', 'guard_name' => 'web'], + ['name' => 'delete standard_segment_constant', 'guard_name' => 'web'], - Permission::create(['name' => 'view segment', 'guard_name' => 'web']); - Permission::create(['name' => 'add segment', 'guard_name' => 'web']); - Permission::create(['name' => 'edit segment', 'guard_name' => 'web']); - Permission::create(['name' => 'delete segment', 'guard_name' => 'web']); + ['name' => 'view segment', 'guard_name' => 'web'], + ['name' => 'add segment', 'guard_name' => 'web'], + ['name' => 'edit segment', 'guard_name' => 'web'], + ['name' => 'delete segment', 'guard_name' => 'web'], - Permission::create(['name' => 'view segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'add segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'edit segment_constant', 'guard_name' => 'web']); - Permission::create(['name' => 'delete segment_constant', 'guard_name' => 'web']); + ['name' => 'view segment_constant', 'guard_name' => 'web'], + ['name' => 'add segment_constant', 'guard_name' => 'web'], + ['name' => 'edit segment_constant', 'guard_name' => 'web'], + ['name' => 'delete segment_constant', 'guard_name' => 'web'], - Permission::create(['name' => 'view company_bank', 'guard_name' => 'web']); - Permission::create(['name' => 'add company_bank', 'guard_name' => 'web']); - Permission::create(['name' => 'edit company_bank', 'guard_name' => 'web']); - Permission::create(['name' => 'delete company_bank', 'guard_name' => 'web']); + ['name' => 'view company_bank', 'guard_name' => 'web'], + ['name' => 'add company_bank', 'guard_name' => 'web'], + ['name' => 'edit company_bank', 'guard_name' => 'web'], + ['name' => 'delete company_bank', 'guard_name' => 'web'], - Permission::create(['name' => 'view currency', 'guard_name' => 'web']); - Permission::create(['name' => 'add currency', 'guard_name' => 'web']); - Permission::create(['name' => 'edit currency', 'guard_name' => 'web']); - Permission::create(['name' => 'delete currency', 'guard_name' => 'web']); + ['name' => 'view currency', 'guard_name' => 'web'], + ['name' => 'add currency', 'guard_name' => 'web'], + ['name' => 'edit currency', 'guard_name' => 'web'], + ['name' => 'delete currency', 'guard_name' => 'web'], - Permission::create(['name' => 'view currency_rate', 'guard_name' => 'web']); - Permission::create(['name' => 'add currency_rate', 'guard_name' => 'web']); - Permission::create(['name' => 'edit currency_rate', 'guard_name' => 'web']); - Permission::create(['name' => 'delete currency_rate', 'guard_name' => 'web']); + ['name' => 'view currency_rate', 'guard_name' => 'web'], + ['name' => 'add currency_rate', 'guard_name' => 'web'], + ['name' => 'edit currency_rate', 'guard_name' => 'web'], + ['name' => 'delete currency_rate', 'guard_name' => 'web'], - Permission::create(['name' => 'view booking', 'guard_name' => 'web']); - Permission::create(['name' => 'add booking', 'guard_name' => 'web']); - Permission::create(['name' => 'edit booking', 'guard_name' => 'web']); - Permission::create(['name' => 'delete booking', 'guard_name' => 'web']); + ['name' => 'view booking', 'guard_name' => 'web'], + ['name' => 'add booking', 'guard_name' => 'web'], + ['name' => 'edit booking', 'guard_name' => 'web'], + ['name' => 'delete booking', 'guard_name' => 'web'] + ]; + + foreach ($permissions as $permission){ + Permission::updateOrCreate($permission,$permission); + } /////////////////////////////////////////////////////////////////////// @@ -77,10 +83,14 @@ class AdminUserPermissionsTableSeeder extends Seeder $shadow_admin_role->givePermissionTo(Permission::all()); - //Since same set of permissions, do it one-go at end + //Assign permission by user role/type not id //$admin = User::find(1); //$admin->assignRole($shadow_admin_role); + $shadow_admins = User::query()->whereIn('type',[Constants\RoleTypes::SHADOW_ADMIN])->get(); + foreach ($shadow_admins as $shadow_admin) { + $shadow_admin->assignRole($shadow_admin_role); + } /////////////////////////////////////////////////////////////////////// $ultimate_admin_role = Role::updateOrCreate( @@ -94,11 +104,34 @@ class AdminUserPermissionsTableSeeder extends Seeder $ultimate_admin_role->givePermissionTo(Permission::all()); - $admins = User::query()->whereIn('type',Constants\RoleTypes::ADMIN_ROLES)->get(); - foreach ($admins as $admin) { - $admin->assignRole($ultimate_admin_role); + $super_admins = User::query()->whereIn('type',[Constants\RoleTypes::SUPER_ADMIN])->get(); + foreach ($super_admins as $super_admin) { + $super_admin->assignRole($ultimate_admin_role); } + $admin_role = Role::updateOrCreate( + ['name' => 'Admin'], + [ + 'name' => 'Admin', + 'guard_name' => 'web', + 'type' => 1, + ] + ); + + //Normal admin limited permissions + $admin_permissions = [ + $permissions[0]['name'], + $permissions[1]['name'], + $permissions[2]['name'], + $permissions[3]['name'], + ]; + + $admin_role->givePermissionTo(Permission::query()->whereIn('name',$admin_permissions)->get()); + + $admins = User::query()->whereIn('type',[Constants\RoleTypes::ADMIN])->get(); + foreach ($admins as $admin) { + $admin->assignRole($admin_role); + } /////////////////////////////////////////////////////////////////////// } }