38394-vm/admin/auth.php
2026-02-13 10:15:56 +00:00

125 lines
2.9 KiB
PHP

<?php
if (session_status() === PHP_SESSION_NONE) {
session_name('ORG_ADMIN_SESS');
session_start();
}
require_once __DIR__ . '/../db/config.php';
/**
* Check if the user is logged in
*/
function is_logged_in() {
return isset($_SESSION['user_id']);
}
/**
* Require login for a page
*/
function require_login() {
if (!is_logged_in()) {
header('Location: login.php');
exit;
}
}
/**
* Get the current logged in user
*/
function get_user() {
if (!isset($_SESSION['user_id'])) return null;
try {
$pdo = db();
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_SESSION['user_id']]);
return $stmt->fetch();
} catch (Exception $e) {
return null;
}
}
/**
* Check if user is super admin
*/
function is_super_admin() {
$user = get_user();
return $user && isset($user['role']) && $user['role'] === 'super_admin';
}
/**
* Log an action to audit_logs table
*/
function log_action($action, $details = '') {
try {
$pdo = db();
$user_id = $_SESSION['user_id'] ?? null;
$stmt = $pdo->prepare("INSERT INTO audit_logs (user_id, action, details) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $action, $details]);
} catch (Exception $e) {
error_log("Failed to log action: " . $e->getMessage());
}
}
/**
* Get organization name from profile
*/
function get_org_name() {
if (isset($_SESSION['org_name']) && !empty($_SESSION['org_name'])) {
return $_SESSION['org_name'];
}
try {
$pdo = db();
$profile = $pdo->query("SELECT name_en FROM org_profile LIMIT 1")->fetch();
if ($profile && !empty($profile['name_en'])) {
$_SESSION['org_name'] = $profile['name_en'];
return $profile['name_en'];
}
} catch (Exception $e) {
}
return 'Organization';
}
/**
* Get organization favicon URL
*/
function get_favicon_url() {
if (isset($_SESSION['favicon_url']) && !empty($_SESSION['favicon_url'])) {
return $_SESSION['favicon_url'];
}
try {
$pdo = db();
$profile = $pdo->query("SELECT favicon_url FROM org_profile LIMIT 1")->fetch();
if ($profile && !empty($profile['favicon_url'])) {
$_SESSION['favicon_url'] = $profile['favicon_url'];
return $profile['favicon_url'];
}
} catch (Exception $e) {
}
return '';
}
/**
* Get organization logo URL
*/
function get_logo_url() {
if (isset($_SESSION['logo_url']) && !empty($_SESSION['logo_url'])) {
return $_SESSION['logo_url'];
}
try {
$pdo = db();
$profile = $pdo->query("SELECT logo_url FROM org_profile LIMIT 1")->fetch();
if ($profile && !empty($profile['logo_url'])) {
$_SESSION['logo_url'] = $profile['logo_url'];
return $profile['logo_url'];
}
} catch (Exception $e) {
}
return '';
}