delete folder backup
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
// api/middleware.php
|
||||
|
||||
// Memulai session jika belum dimulai
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
// Pastikan session cookie aman dan hanya terakses lewat HTTP (mencegah XSS hijack)
|
||||
ini_set('session.cookie_httponly', 1);
|
||||
session_start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Middleware untuk memvalidasi user yang login dan mencocokkan perannya (RBAC).
|
||||
* Jika user belum login, akan mengembalikan 401 Unauthorized.
|
||||
* Jika role user tidak ada dalam daftar role yang diizinkan, mengembalikan 403 Forbidden.
|
||||
*
|
||||
* @param array $allowedRoles Daftar role yang diizinkan (contoh: ['admin', 'petugas'])
|
||||
* @return array Data user yang saat ini sedang login dari Session
|
||||
*/
|
||||
function requireAuth(array $allowedRoles = []): array
|
||||
{
|
||||
// Cek apakah ada data user di Session
|
||||
if (!isset($_SESSION['user']) || !is_array($_SESSION['user'])) {
|
||||
http_response_code(401);
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => 'Unauthorized: Silakan login terlebih dahulu untuk mengakses fitur ini.'
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$user = $_SESSION['user'];
|
||||
|
||||
// Cek kecocokan role (RBAC) jika list allowedRoles tidak kosong
|
||||
if (!empty($allowedRoles) && !in_array($user['role'], $allowedRoles)) {
|
||||
http_response_code(403);
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => 'Forbidden: Peran Anda (' . $user['role'] . ') tidak memiliki hak akses ke fitur ini.'
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Middleware Opsional untuk mendukung Guest Mode.
|
||||
* Jika user login, akan mengembalikan data user.
|
||||
* Jika belum login, akan mengembalikan null (sebagai Guest) dan proses tetap berlanjut.
|
||||
*
|
||||
* @return array|null Data user jika login, atau null jika guest
|
||||
*/
|
||||
function optionalAuth(): ?array
|
||||
{
|
||||
if (isset($_SESSION['user']) && is_array($_SESSION['user'])) {
|
||||
return $_SESSION['user'];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
Reference in New Issue
Block a user