all-in-one/php/src/Auth/AuthManager.php
Pablo Zmdl f0b1d91558 Camelize property AIO_TOKEN => aioToken
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-01-26 10:50:55 +01:00

46 lines
1.4 KiB
PHP

<?php
namespace AIO\Auth;
use AIO\Data\ConfigurationManager;
use AIO\Data\DataConst;
use \DateTime;
readonly class AuthManager {
private const string SESSION_KEY = 'aio_authenticated';
public function __construct(
private ConfigurationManager $configurationManager
) {
}
public function CheckCredentials(string $password) : bool {
return hash_equals($this->configurationManager->password, $password);
}
public function CheckToken(string $token) : bool {
return hash_equals($this->configurationManager->aioToken, $token);
}
public function SetAuthState(bool $isLoggedIn) : void {
if (!$this->IsAuthenticated() && $isLoggedIn === true) {
$date = new DateTime();
$dateTime = $date->getTimestamp();
$_SESSION['date_time'] = $dateTime;
$df = disk_free_space(DataConst::GetSessionDirectory());
if ($df !== false && (int)$df < 10240) {
error_log(DataConst::GetSessionDirectory() . " has only less than 10KB free space. The login might not succeed because of that!");
}
file_put_contents(DataConst::GetSessionDateFile(), (string)$dateTime);
}
$_SESSION[self::SESSION_KEY] = $isLoggedIn;
}
public function IsAuthenticated() : bool {
return isset($_SESSION[self::SESSION_KEY]) && $_SESSION[self::SESSION_KEY] === true;
}
}