RoleCheck.php 982 B

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. namespace Modules\Permissions\Middlewares;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Route;
  5. use Modules\Common\Errors\Errors;
  6. use Modules\Common\Exceptions\CommonBusinessException;
  7. use Modules\Jiesuan\Http\Controllers\FinanceCheckController;
  8. use Modules\Permissions\Exceptions\PermissionForbidden;
  9. use Modules\User\Models\User;
  10. /**
  11. * 检测用户角色权限
  12. * 使用方法:
  13. * Route::get('list', [FinanceCheckController::class, 'list'])->middleware(['roleCheck:aa,bb,cc'])
  14. * aa,bb,cc 代表可以操作的多个角色的 identify
  15. */
  16. class RoleCheck
  17. {
  18. public function handle(Request $request, \Closure $next, ...$enableRoles)
  19. {
  20. /* @var User $user */
  21. $user = $request->user(getGuardName());
  22. $role = $user->roles();
  23. if($role->pluck('identify')->intersect($enableRoles)->isEmpty()) {
  24. CommonBusinessException::throwError(Errors::NO_OPERATE_PERMISSION);
  25. }
  26. return $next($request);
  27. }
  28. }