* @created 2022-08-01 21:12:11 * @modified 2022-08-01 21:12:11 */ namespace Beike\Admin\Repositories; use Spatie\Permission\Models\Permission; use Spatie\Permission\Models\Role; class AdminRoleRepo { public static function createAdminRole($data): Role { $adminRole = new Role([ 'name' => $data['name'], 'guard_name' => 'web_admin', ]); $adminRole->save(); $adminRole->givePermissionTo($data['permissions']); return $adminRole; } public static function updateAdminRole($data) { $adminRole = Role::findById($data['id']); $adminRole->update([ 'name' => $data['name'], 'guard_name' => 'web_admin', ]); $permissions = $data['permissions']; $items = []; foreach ($permissions as $groupedPermissions) { foreach ($groupedPermissions['permissions'] as $groupedPermission) { if ($groupedPermission['selected']) { $code = $groupedPermission['code']; Permission::findOrCreate($code); $items[] = $code; } } } if (empty($items)) { throw new \Exception('无效的权限'); } $adminRole->givePermissionTo($items); return $adminRole; } public static function deleteAdminRole($adminRoleId) { $adminRole = Role::query()->find($adminRoleId); $adminRole->delete(); } }