Update password handling and session methods
This commit is contained in:
parent
8b9896f196
commit
85814913e4
11 changed files with 239 additions and 70 deletions
|
@ -115,6 +115,32 @@
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the stored password for a specific peer.
|
||||
*
|
||||
* @param string|RegisteredPeerRecord $peerUuid The unique identifier of the peer, or an instance of RegisteredPeerRecord.
|
||||
* @return void
|
||||
* @throws DatabaseOperationException If an error occurs during the database operation.
|
||||
*/
|
||||
public static function deletePassword(string|RegisteredPeerRecord $peerUuid): void
|
||||
{
|
||||
if($peerUuid instanceof RegisteredPeerRecord)
|
||||
{
|
||||
$peerUuid = $peerUuid->getUuid();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
$stmt = Database::getConnection()->prepare('DELETE FROM authentication_passwords WHERE peer_uuid=:uuid');
|
||||
$stmt->bindParam(':uuid', $peerUuid);
|
||||
$stmt->execute();
|
||||
}
|
||||
catch(PDOException $e)
|
||||
{
|
||||
throw new DatabaseOperationException('An error occurred while deleting the password', $e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies a given password against a stored password hash for a specific peer.
|
||||
*
|
||||
|
|
|
@ -423,11 +423,12 @@
|
|||
* Marks the session as complete if all necessary conditions are met.
|
||||
*
|
||||
* @param SessionRecord $session The session record to evaluate and potentially mark as complete.
|
||||
* @param array $flagsToRemove An array of flags to remove from the session if it is marked as complete.
|
||||
* @return void
|
||||
* @throws DatabaseOperationException If there is an error while updating the session in the database.
|
||||
* @throws StandardException If the session record cannot be found or if there is an error during retrieval.
|
||||
* @return void
|
||||
*/
|
||||
public static function updateFlow(SessionRecord $session): void
|
||||
public static function updateFlow(SessionRecord $session, array $flagsToRemove=[]): void
|
||||
{
|
||||
// Don't do anything if the session is already authenticated
|
||||
if(!in_array(SessionFlags::REGISTRATION_REQUIRED, $session->getFlags()) || !in_array(SessionFlags::AUTHENTICATION_REQUIRED, $session->getFlags()))
|
||||
|
@ -435,6 +436,9 @@
|
|||
return;
|
||||
}
|
||||
|
||||
self::removeFlags($session->getUuid(), $flagsToRemove);
|
||||
$session = self::getSession($session->getUuid());
|
||||
|
||||
// Check if all registration/authentication requirements are met
|
||||
if(SessionFlags::isComplete($session->getFlags()))
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue