38929-vm/db/config.php
2026-03-03 17:12:24 +00:00

78 lines
2.5 KiB
PHP

<?php
// Generated by setup_mariadb_project.sh — edit as needed.
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'app_38384');
define('DB_USER', 'app_38384');
define('DB_PASS', '5561099f-23a3-43d8-b1a2-54739c50721b');
function db() {
static $pdo;
if (!$pdo) {
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
}
return $pdo;
}
function check_permission($page = null, $user_id = null) {
// Safely access session
if (!$user_id) {
if (isset($_SESSION) && isset($_SESSION['user_id'])) {
$user_id = $_SESSION['user_id'];
} else {
$user_id = null;
}
}
if (!$page) $page = basename($_SERVER['PHP_SELF']);
if (!$user_id) return ['view' => 0, 'add' => 0, 'edit' => 0, 'delete' => 0];
static $permissions_cache = [];
$cache_key = $user_id . '_' . $page;
if (isset($permissions_cache[$cache_key])) return $permissions_cache[$cache_key];
try {
$stmt = db()->prepare("SELECT can_view as view, can_add as `add`, can_edit as edit, can_delete as `delete` FROM user_permissions WHERE user_id = ? AND page = ?");
$stmt->execute([$user_id, $page]);
$perms = $stmt->fetch();
if (!$perms) {
return ['view' => 0, 'add' => 0, 'edit' => 0, 'delete' => 0];
}
$result = [
'view' => (int)$perms['view'],
'add' => (int)$perms['add'],
'edit' => (int)$perms['edit'],
'delete' => (int)$perms['delete']
];
$permissions_cache[$cache_key] = $result;
return $result;
} catch (Exception $e) {
return ['view' => 0, 'add' => 0, 'edit' => 0, 'delete' => 0];
}
}
function get_setting($key, $default = null) {
try {
$stmt = db()->prepare('SELECT setting_value FROM settings WHERE setting_key = ?');
$stmt->execute([$key]);
$val = $stmt->fetchColumn();
return ($val !== false) ? $val : $default;
} catch (Exception $e) {
return $default;
}
}
function set_setting($key, $value) {
$stmt = db()->prepare('INSERT INTO settings (setting_key, setting_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE setting_value = ?, updated_at = CURRENT_TIMESTAMP');
$stmt->execute([$key, $value, $value]);
}
function has_permission($action, $page = null, $user_id = null) {
$perms = check_permission($page, $user_id);
return !empty($perms[$action]);
}