class DB {
private static $conn;
public static function connect() {
if (!self::$conn) {
$cfg = require __DIR__.'/../config/database.php';
self::$conn = new PDO(
"mysql:host={$cfg['host']};dbname={$cfg['db']}",
$cfg['user'],
$cfg['pass'],
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
}
return self::$conn;
}
}
session_start();
class Auth {
public static function login($email, $password) {
$db = DB::connect();
$q = $db->prepare("SELECT * FROM users WHERE email=? AND active=1");
$q->execute([$email]);
$user = $q->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user'] = $user;
self::audit('LOGIN', 'users', $user['id']);
return true;
}
return false;
}
public static function user() {
return $_SESSION['user'] ?? null;
}
}
class Guard {
public static function auth() {
if (!isset($_SESSION['user'])) {
header('Location: /login.php'); exit;
}
}
public static function role(array $roles) {
if (!in_array($_SESSION['user']['role'], $roles)) {
http_response_code(403); exit('Forbidden');
}
}
public static function branch($branchId) {
if ($_SESSION['user']['role'] !== 'SUPER_ADMIN'
&& $_SESSION['user']['branch_id'] != $branchId) {
exit('Branch Isolation Violation');
}
}
}
class Audit {
public static function log($action, $entity, $entityId) {
$db = DB::connect();
$db->prepare("
INSERT INTO audit_trail
(user_id, branch_id, action, entity_type, entity_id, ip_address, user_agent)
VALUES (?,?,?,?,?,?,?)
")->execute([
$_SESSION['user']['id'] ?? null,
$_SESSION['user']['branch_id'] ?? null,
$action,
$entity,
$entityId,
$_SERVER['REMOTE_ADDR'],
$_SERVER['HTTP_USER_AGENT']
]);
}
}
| ( ! ) Fatal error: Uncaught Error: Class "Guard" not found in E:\Program_Files\wamp64\www\cctv\19.12.25\modules\evidence\upload.php on line 7 |
| ( ! ) Error: Class "Guard" not found in E:\Program_Files\wamp64\www\cctv\19.12.25\modules\evidence\upload.php on line 7 |
| Call Stack |
| # | Time | Memory | Function | Location |
| 1 | 0.0232 | 375584 | {main}( ) | ...\upload.php:0 |