1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- namespace App\Http\Middleware;
- use App\Models\Enums\CompanyReviewStatus;
- use Closure;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Route;
- use Spatie\Permission\Exceptions\UnauthorizedException;
- use Symfony\Component\HttpFoundation\Response;
- use App\Models\Enums\PermissionType;
- use Symfony\Component\HttpKernel\Event\ExceptionEvent;
- class CheckPermission
- {
- /**
- * Handle an incoming request.`
- *
- * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
- */
- public function handle(Request $request, Closure $next): Response
- {
- $permission = Route::currentRouteName();
- $permission=$this->RouteGetType($request,$permission);
- if (Auth::user()->hasPermissionTo($permission)) {
- return $next($request);
- }
- throw UnauthorizedException::forPermissions([$permission]);
- }
- public function RouteGetType(Request $request,string $permission){
- switch ($permission) {
- case 'config.index':
- $group = $request->get("group", []);
- foreach ($group as $item){
- $permission=$this->findPermission($item);
- }
- return $permission;
- break;
- case 'config.setting':
- $group = $request->json()->all();
- if(!empty($group) && is_array($group) && isset($group[0]['group'])){
- $permission=$this->findPermission($group[0]['group']);
- }
- return $permission;
- break;
- default:
- return $permission;
- }
- }
- public function findPermission(string $type){
- $objectType=PermissionType::tryFrom($type);
- $permissionType=$objectType->getPermissionType();
- return $permissionType;
- }
- }
|