Files
HRM-System/app/Http/Middleware/EnsureExecutiveRole.php

42 lines
1.2 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class EnsureExecutiveRole
{
/**
* Handle an incoming request.
*
* @param Closure(Request): (Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$user = $request->user();
if (!$user) {
abort(401, 'Unauthenticated.');
}
// Check if user has Executive role or type
$isExecutive = false;
if (method_exists($user, 'hasRole') && $user->hasRole(['Executive', 'executive', 'Super Admin', 'company admin', 'company'])) {
$isExecutive = true;
} elseif (isset($user->type) && in_array(strtolower($user->type), ['executive', 'super admin', 'company admin', 'company'])) {
$isExecutive = true;
} elseif (isset($user->role) && in_array(strtolower($user->role), ['executive', 'super admin', 'company admin', 'company'])) {
$isExecutive = true;
}
if (!$isExecutive) {
abort(403, 'Unauthorized access. Only Executive roles can manage paid subdomain inquiries and tenant provisioning.');
}
return $next($request);
}
}