HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //home/xedaptot/hi.naniguide.com/app/Http/Middleware/EnsureWorkspacePermission.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;

class EnsureWorkspacePermission
{
    public function handle(Request $request, Closure $next, string ...$permissions): Response
    {
        $member = $request->attributes->get('workspace_member');

        if (!$member) {
            $customer = Auth::guard('customer')->user();

            if (!$customer) {
                abort(403, __('Access denied.'));
            }

            $workspace = $request->attributes->get('workspace');
            if ($workspace && $workspace->isOwner($customer)) {
                return $next($request);
            }

            abort(403, __('No active workspace context.'));
        }

        if ($member->isOwner()) {
            return $next($request);
        }

        foreach ($permissions as $permission) {
            if (!$member->hasPermission($permission)) {
                abort(403, __('You do not have the ":permission" permission in this workspace.', [
                    'permission' => $permission,
                ]));
            }
        }

        return $next($request);
    }
}