78 lines
2.5 KiB
PHP
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]);
|
|
} |