AuthManager

- Implemented `addUser(User* allocatedRecord)`
- Marked method `addUser(string username)` for removal
- Implemented `hasRecord(string username)`
This commit is contained in:
Tristan B. Velloza Kildaire 2023-11-24 18:04:03 +02:00
parent da28dfba3e
commit ce65417ce2
1 changed files with 31 additions and 3 deletions

View File

@ -341,6 +341,7 @@ public class AuthManager
}
}
// TODO: Remove this
private void addUser(string username)
{
// Lock
@ -354,6 +355,18 @@ public class AuthManager
this.usersLock.unlock();
}
private void addUser(User* allocatedRecord)
{
// Lock
this.usersLock.lock();
// Add the entry
this.users[allocatedRecord.getUsername()] = allocatedRecord;
// Unlock
this.usersLock.unlock();
}
private void removeUser(string username)
{
// Lock
@ -366,6 +379,21 @@ public class AuthManager
this.usersLock.unlock();
}
private bool hasRecord(string username)
{
// Lock
this.usersLock.lock();
// On exit
scope(exit)
{
// Unlock
this.usersLock.unlock();
}
return (username in this.users) !is null;
}
public bool authenticate(string username, string password)
@ -380,15 +408,15 @@ public class AuthManager
{
// TODO: Honestly, the authenticator should provide the User*
// TODO: Check for record
bool hasRecord = false;
bool hasRecord = hasRecord(username);
User* userRecord;
if(hasRecord)
if(hasRecord == false)
{
this.recordProvider.fetch(username, userRecord);
}
addUser(username);
addUser(userRecord);
logger.info("Authenticated user '"~username~"'");
}
else