35512-vm/auth-helpers.php
2025-11-05 22:26:48 +00:00

31 lines
886 B
PHP

<?php
require_once 'db/config.php';
function can($role, $resource, $action) {
static $permissions = null;
if ($permissions === null) {
try {
$pdo = db();
$stmt = $pdo->query('SELECT * FROM role_permissions');
$all_permissions = $stmt->fetchAll(PDO::FETCH_ASSOC);
$permissions = [];
foreach ($all_permissions as $p) {
$permissions[$p['role']][$p['resource']][$p['action']] = $p['fields'] ?? '*';
}
} catch (PDOException $e) {
// Handle database errors, maybe return false or log the error
return false;
}
}
if (isset($permissions[$role][$resource][$action])) {
if (in_array($action, ['read', 'update'])) {
return $permissions[$role][$resource][$action];
}
return true;
}
return false;
}