1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- /**
- * @Name
- * @Description
- * @Author 刘学玺
- * @Date 2024/8/18 22:44
- */
- namespace App\Http\Services\Backend\Server\System;
- use App\Enums\System\Role\DataScope;
- use App\Exceptions\ApiException;
- use App\Http\Services\Service;
- use App\Models\System\Menu;
- use App\Models\System\Role;
- use Ramsey\Uuid\Type\Integer;
- use Spatie\Permission\Guard;
- use Spatie\Permission\Models\Permission;
- use Symfony\Component\HttpFoundation\Response;
- class PermissionService extends Service
- {
- /**
- * @throws ApiException
- */
- public function assignPermission($params, $id): void
- {
- match ($params['type']) {
- 'role' => $this->assignRolePermission($params, $id),
- 'model' => $this->assignModelPermission($params, $id),
- default => self::error('PARAMS_TYPE_ERROR', Response::HTTP_UNPROCESSABLE_ENTITY)
- };
- }
- /**
- * @throws ApiException
- */
- public function assignRolePermission($params, $id): void
- {
- $params['guard_name'] = $params['guard_name'] ?? Guard::getDefaultName(static::class);
- // 获取角色
- $role = Role::findById($id, $params['guard_name']);
- !$role && self::error('ROLE_NOT_EXISTS', Response::HTTP_UNPROCESSABLE_ENTITY);
- // 获取多个权限
- $permissions = Permission::query()->whereIn('id', $params['permission'])->get();
- // 给角色添加多个权限
- $role->syncPermissions($permissions);
- // 记录操作日志上下文
- // LogRecordContext.putVariable("role", role);
- // return role.getId();
- }
- public function assignModelPermission($params, $id)
- {
- }
- public function getMenus($id, $class)
- {
- $classInstance = app($class);
- // 角色类型
- if ($class === Role::class) {
- $role = $classInstance::findById($id);
- return $role->getAllPermissions()->pluck('id');
- }
- return [];
- }
- }
|