|
|
<?php
|
|
|
require_once __DIR__ . '/storage.php';
|
|
|
|
|
|
|
|
|
class UserManager {
|
|
|
public function __construct() {
|
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
|
session_start();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public function loginUser($username, $password) {
|
|
|
$users = StorageConfig::getUsers();
|
|
|
|
|
|
if (!isset($users[$username])) {
|
|
|
return ['success' => false, 'message' => 'User not found'];
|
|
|
}
|
|
|
|
|
|
if ($users[$username] === $password) {
|
|
|
$_SESSION['username'] = $username;
|
|
|
$_SESSION['logged_in'] = true;
|
|
|
|
|
|
return ['success' => true, 'message' => 'Login successful'];
|
|
|
} else {
|
|
|
return ['success' => false, 'message' => 'Invalid password'];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public function logoutUser() {
|
|
|
session_destroy();
|
|
|
return ['success' => true, 'message' => 'Logged out successfully'];
|
|
|
}
|
|
|
|
|
|
public function isLoggedIn() {
|
|
|
return isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true;
|
|
|
}
|
|
|
|
|
|
public function getCurrentUser() {
|
|
|
if ($this->isLoggedIn()) {
|
|
|
return $_SESSION['username'];
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
public function requireLogin() {
|
|
|
if (!$this->isLoggedIn()) {
|
|
|
header('Location: index.html');
|
|
|
exit;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
|
header('Content-Type: application/json');
|
|
|
|
|
|
$userManager = new UserManager();
|
|
|
$action = $_POST['action'] ?? '';
|
|
|
|
|
|
switch ($action) {
|
|
|
case 'login':
|
|
|
$username = $_POST['username'] ?? '';
|
|
|
$password = $_POST['password'] ?? '';
|
|
|
echo json_encode($userManager->loginUser($username, $password));
|
|
|
break;
|
|
|
|
|
|
case 'logout':
|
|
|
echo json_encode($userManager->logoutUser());
|
|
|
break;
|
|
|
|
|
|
case 'check_login':
|
|
|
echo json_encode([
|
|
|
'logged_in' => $userManager->isLoggedIn(),
|
|
|
'username' => $userManager->getCurrentUser()
|
|
|
]);
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
echo json_encode(['success' => false, 'message' => 'Invalid action']);
|
|
|
}
|
|
|
exit;
|
|
|
}
|
|
|
?> |