Files
MovieLog_Server/lib/auth.php
T

70 lines
2.2 KiB
PHP
Raw Normal View History

<?php
// ============================================
// 文件: lib/auth.php
// 说明: 登录校验与管理员账号管理
// ============================================
// 登录检查
function checkLogin() {
if (!isset($_SESSION['admin_id'])) {
header('Location: login.php');
exit;
}
}
// 获取当前管理员(含关联观影人信息)
function getCurrentAdmin() {
if (isset($_SESSION['admin_id'])) {
$db = getDB();
$stmt = $db->prepare("
SELECT a.*, p.id as person_id, p.name as person_name, p.color as person_color, p.avatar as person_avatar
FROM admins a
LEFT JOIN persons p ON a.person_id = p.id
WHERE a.id = ?
");
$stmt->execute([$_SESSION['admin_id']]);
return $stmt->fetch();
}
return null;
}
// 获取所有管理员(含关联观影人)
function getAllAdmins() {
$db = getDB();
$stmt = $db->query("
SELECT a.id, a.username, a.avatar, a.person_id, p.name as person_name
FROM admins a
LEFT JOIN persons p ON a.person_id = p.id
ORDER BY a.id
");
return $stmt->fetchAll();
}
// 添加管理员(支持关联观影人)
function addAdmin($username, $password, $avatar = null, $person_id = null) {
$db = getDB();
$stmt = $db->prepare("SELECT COUNT(*) FROM admins WHERE username = ?");
$stmt->execute([$username]);
if ($stmt->fetchColumn() > 0) return false;
$hashed = password_hash($password, PASSWORD_DEFAULT);
$stmt = $db->prepare("INSERT INTO admins (username, password, avatar, person_id) VALUES (?, ?, ?, ?)");
return $stmt->execute([$username, $hashed, $avatar, $person_id]);
}
// 删除管理员
function deleteAdmin($id) {
$db = getDB();
$stmt = $db->query("SELECT COUNT(*) FROM admins");
if ($stmt->fetchColumn() <= 1) return false;
if ($id == $_SESSION['admin_id']) return false;
$stmt = $db->prepare("DELETE FROM admins WHERE id = ?");
return $stmt->execute([$id]);
}
// 更新管理员的观影人关联
function updateAdminPersonId($admin_id, $person_id) {
$db = getDB();
$stmt = $db->prepare("UPDATE admins SET person_id = ? WHERE id = ?");
return $stmt->execute([$person_id, $admin_id]);
}