| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- /**
- * Authentication Class
- * Handles user login, logout, and session management
- */
- class Auth {
- private $db;
-
- public function __construct() {
- $this->db = Database::getInstance();
- }
-
- public function login($username, $password) {
- $sql = "SELECT * FROM users WHERE username = ?";
- $user = $this->db->fetch($sql, [$username]);
-
- if ($user && password_verify($password, $user['password'])) {
- $_SESSION['user_id'] = $user['id'];
- $_SESSION['username'] = $user['username'];
- $_SESSION['role'] = $user['role'];
- $_SESSION['logged_in'] = true;
- return true;
- }
-
- return false;
- }
-
- public function logout() {
- session_destroy();
- unset($_SESSION);
- }
-
- public function isLoggedIn() {
- return isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true;
- }
-
- public function requireAuth() {
- if (!$this->isLoggedIn()) {
- header('Location: login.php');
- exit;
- }
- }
-
- public function getUser() {
- if ($this->isLoggedIn()) {
- return [
- 'id' => $_SESSION['user_id'],
- 'username' => $_SESSION['username'],
- 'role' => $_SESSION['role']
- ];
- }
- return null;
- }
-
- public function isAdmin() {
- return $this->isLoggedIn() && $_SESSION['role'] === 'admin';
- }
- }
- // Initialize session
- if (session_status() === PHP_SESSION_NONE) {
- session_start();
- }
|