RoleCheck.php 827 B

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