SessionManager.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. class SessionManager {
  3. public static function startSession() {
  4. if (session_status() === PHP_SESSION_NONE) {
  5. session_start();
  6. }
  7. }
  8. public static function destroySession() {
  9. session_destroy();
  10. }
  11. public static function isLoggedIn() {
  12. return isset($_SESSION['user_id']);
  13. }
  14. public static function getCurrentUser() {
  15. if (self::isLoggedIn()) {
  16. return array(
  17. 'id' => $_SESSION['user_id'],
  18. 'username' => $_SESSION['username'],
  19. 'email' => $_SESSION['email'] ?? '',
  20. 'first_name' => $_SESSION['first_name'],
  21. 'last_name' => $_SESSION['last_name'],
  22. 'role' => $_SESSION['role']
  23. );
  24. }
  25. return null;
  26. }
  27. public static function requireAuth() {
  28. if (!self::isLoggedIn()) {
  29. http_response_code(401);
  30. echo json_encode(array('message' => 'Unauthorized'));
  31. exit();
  32. }
  33. }
  34. public static function requireRole($required_role) {
  35. $user = self::getCurrentUser();
  36. if (!$user || $user['role'] !== $required_role) {
  37. http_response_code(403);
  38. echo json_encode(array('message' => 'Insufficient permissions'));
  39. exit();
  40. }
  41. }
  42. public static function requireAdmin() {
  43. self::requireRole('admin');
  44. }
  45. }
  46. ?>