32 lines
876 B
PHP
32 lines
876 B
PHP
<?php
|
|
namespace App\Middleware;
|
|
|
|
use App\Helpers\Response;
|
|
|
|
/**
|
|
* Class RoleGuard
|
|
* Role-Based Access Control (RBAC) Guard Middleware
|
|
*
|
|
* @package App\Middleware
|
|
*/
|
|
class RoleGuard
|
|
{
|
|
/**
|
|
* Verify if current authenticated user has one of the required roles
|
|
*
|
|
* @param array $allowedRoles e.g. ['Admin', 'Manager', 'Doctor']
|
|
*/
|
|
public static function check(array $allowedRoles): void
|
|
{
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
|
|
$userRole = $_SESSION['user_role'] ?? null;
|
|
|
|
if (!$userRole || !in_array($userRole, $allowedRoles, true)) {
|
|
Response::error("Forbidden: Your role ({$userRole}) does not have permission to access this resource (คุณไม่มีสิทธิ์เข้าถึงฟังก์ชันนี้)", 403);
|
|
}
|
|
}
|
|
}
|