Enhance flag handling for session operations.

This commit is contained in:
netkas 2025-01-06 04:44:12 -05:00
parent fffad01516
commit 1c4621c55b
2 changed files with 24 additions and 4 deletions

View file

@ -436,14 +436,21 @@
return;
}
// Don't do anything if the flags to remove are not present
if(!$session->flagExists($flagsToRemove))
{
return;
}
// Remove & update the session flags
self::removeFlags($session->getUuid(), $flagsToRemove);
$session = self::getSession($session->getUuid());
// Check if all registration/authentication requirements are met
if(SessionFlags::isComplete($session->getFlags()))
{
SessionManager::setAuthenticated($session->getUuid(), true);
SessionManager::removeFlags($session->getUuid(), [SessionFlags::REGISTRATION_REQUIRED, SessionFlags::AUTHENTICATION_REQUIRED]);
SessionManager::removeFlags($session->getUuid(), [SessionFlags::REGISTRATION_REQUIRED, SessionFlags::AUTHENTICATION_REQUIRED]); // Remove the registration/authentication flags
SessionManager::setAuthenticated($session->getUuid(), true); // Mark the session as authenticated
}
}
}

View file

@ -213,11 +213,24 @@
/**
* Checks if a given flag exists in the list of session flags.
*
* @param string|SessionFlags $flag The flag to check, either as a string or a SessionFlags object.
* @param string|SessionFlags|array $flag The flag to check, either as a string or a SessionFlags object. If an array is provided, all flags must exist.
* @return bool True if the flag exists, false otherwise.
*/
public function flagExists(string|SessionFlags $flag): bool
public function flagExists(string|SessionFlags|array $flag): bool
{
if(is_array($flag))
{
foreach($flag as $f)
{
if(!$this->flagExists($f))
{
return false;
}
}
return true;
}
if(is_string($flag))
{
$flag = SessionFlags::tryFrom($flag);