'superadmin']); // $roleAdmin = Role::create(['name' => 'admin']); // $roleEditor = Role::create(['name' => 'editor']); // $roleUser = Role::create(['name' => 'user']); // Permission List as array $permissions = [ [ 'group_name' => 'dashboard', 'permissions' => [ 'dashboard.view', 'dashboard.edit', ] ], [ 'group_name' => 'admin', 'permissions' => [ // admin Permissions 'admin.create', 'admin.view', 'admin.edit', 'admin.delete', 'admin.approve', ] ], [ 'group_name' => 'role', 'permissions' => [ // role Permissions 'role.create', 'role.view', 'role.edit', 'role.delete', 'role.approve', ] ], [ 'group_name' => 'profile', 'permissions' => [ // profile Permissions 'profile.view', 'profile.edit', 'profile.delete', 'profile.update', ] ], ]; // Do same for the admin guard for tutorial purposes. $admin = Admin::where('username', 'superadmin')->first(); $roleSuperAdmin = $this->maybeCreateSuperAdminRole($admin); // Create and Assign Permissions for ($i = 0; $i < count($permissions); $i++) { $permissionGroup = $permissions[$i]['group_name']; for ($j = 0; $j < count($permissions[$i]['permissions']); $j++) { $permissionExist = Permission::where('name', $permissions[$i]['permissions'][$j])->first(); if (is_null($permissionExist)) { $permission = Permission::create( [ 'name' => $permissions[$i]['permissions'][$j], 'group_name' => $permissionGroup, 'guard_name' => 'admin' ] ); $roleSuperAdmin->givePermissionTo($permission); $permission->assignRole($roleSuperAdmin); } } } // Assign super admin role permission to superadmin user if ($admin) { $admin->assignRole($roleSuperAdmin); } } private function maybeCreateSuperAdminRole($admin): Role { if (is_null($admin)) { $roleSuperAdmin = Role::create(['name' => 'superadmin', 'guard_name' => 'admin']); } else { $roleSuperAdmin = Role::where('name', 'superadmin')->where('guard_name', 'admin')->first(); } if (is_null($roleSuperAdmin)) { $roleSuperAdmin = Role::create(['name' => 'superadmin', 'guard_name' => 'admin']); } return $roleSuperAdmin; } }