Files
blog/app/Utils/AuthHelper.php
2025-06-20 07:55:37 +00:00

79 lines
1.8 KiB
PHP

<?php
namespace Blog\Utils;
use Blog\Model\UserModel;
use Exception;
/**
* Hilfsklasse für Authentifizierung und Session-Management.
*/
class AuthHelper {
/**
* @var UserModel|null
*/
private static ?UserModel $userModel = null;
/**
* Initialisiert den AuthHelper mit einem UserModel.
*
* @param UserModel $userModel
* @return void
*/
public static function initialize(UserModel $userModel): void {
self::$userModel = $userModel;
}
/**
* Versucht, einen Benutzer mit Benutzername und Passwort einzuloggen.
*
* @param string $username
* @param string $password
* @return bool True bei Erfolg, sonst false.
* @throws Exception Wenn das UserModel nicht initialisiert wurde.
*/
public static function login(string $username, string $password): bool {
if(!self::$userModel)
throw new Exception("AuthHelper was not initialized. Please pass UserModel.");
$user = self::$userModel->getUserByUsername($username);
if(!$user || !password_verify($password, $user->getPassword())) {
return false;
}
$_SESSION['user'] = [
'id' => $user->getId(),
'username' => $user->getUsername()
];
return true;
}
/**
* Loggt den aktuellen Benutzer aus und zerstört die Session.
*
* @return void
*/
public static function logout(): void {
session_unset();
session_destroy();
}
/**
* Prüft, ob ein Benutzer eingeloggt ist.
*
* @return bool True, wenn ein Benutzer eingeloggt ist, sonst false.
*/
public static function isLoggedIn(): bool {
return isset($_SESSION['user']);
}
/**
* Gibt die aktuellen Benutzerdaten aus der Session zurück.
*
* @return array|null Benutzerdaten oder null, falls nicht eingeloggt.
*/
public static function getCurrentUser(): ?array {
return $_SESSION['user'] ?? null;
}
}