125 lines
2.9 KiB
PHP
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 '';
|
|
} |