some work

This commit is contained in:
2024-05-27 22:07:25 +02:00
parent b2f0a80872
commit b08041204d
12 changed files with 196 additions and 91 deletions

View File

@@ -1,4 +1,5 @@
using OwnChar.Data;
using OwnChar.Manager.Exceptions;
using OwnChar.Model;
using Pilz.Cryptography;
@@ -7,32 +8,50 @@ namespace OwnChar.Manager
public class OwnCharManager
{
// User
public bool IsLoggedIn { get; set; }
public UserAccount? CurrentUser { get; set; }
public bool IsLoggedIn => DataProvider != null && DataProvider.IsLoggedIn;
public UserAccount? CurrentUser => DataProvider?.CurrentUserAccount;
// Data Provider
public IDataProvider DataProvider { get; set; }
public IDataProvider? DataProvider { get; set; }
// Manager
public UserManager Users { get; }
public GroupsManager Groups { get; }
public CharacterManager Characters { get; }
public OwnCharManager(IDataProvider dataProvider)
public OwnCharManager()
{
DataProvider = dataProvider;
Users = new(this);
Groups = new(this);
Characters = new(this);
}
private void CheckLogin()
{
if (!IsLoggedIn)
throw new LoginException("You are already logged in!");
}
/// <summary>
/// Tries to login on the server.
/// Tries to login on the given data provider.
/// </summary>
/// <returns>Returns <see cref="true"/> if the login was successfull and <see cref="false"/> if not.</returns>
public bool Login(string username, SecureString password)
public bool Login(IDataProvider? dataProvider, string username, SecureString password)
{
return IsLoggedIn = true; // TODO: Change `true` to the real check.
CheckLogin();
ArgumentNullException.ThrowIfNull(dataProvider);
return dataProvider.Login(username, password) != null;
}
/// <summary>
/// Closes the session on the current data provider.
/// </summary>
/// <returns></returns>
public bool Logout()
{
if (DataProvider != null)
return DataProvider.Logout();
return true;
}
}
}