|
@@ -8,11 +8,12 @@ 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;
|
|
|
|
|
|
class CheckPermission
|
|
|
{
|
|
|
/**
|
|
|
- * Handle an incoming request.
|
|
|
+ * Handle an incoming request.`
|
|
|
*
|
|
|
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
|
|
*/
|
|
@@ -20,10 +21,40 @@ class CheckPermission
|
|
|
{
|
|
|
$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;
|
|
|
+ }
|
|
|
}
|