91 lines
2.5 KiB
C#
91 lines
2.5 KiB
C#
using OwnChar.Model;
|
|
|
|
namespace OwnChar.Data.Managers;
|
|
|
|
public class DefaultDataManager : IDataManager
|
|
{
|
|
private const string defaultUsername = "admin";
|
|
private const string defaultPassword = "admin";
|
|
|
|
public IDataProvider DataProvider { get; }
|
|
|
|
public DefaultDataManager(IDataProvider dataProvider)
|
|
{
|
|
DataProvider = dataProvider;
|
|
Initialize(false);
|
|
}
|
|
|
|
public IEnumerable<UserProfile>? GetMembers(Group group)
|
|
{
|
|
return DataProvider.GetGroupMembers(group);
|
|
}
|
|
|
|
public UserProfile? GetOwner(Group group)
|
|
{
|
|
return DataProvider.GetOwner(group);
|
|
}
|
|
|
|
public UserProfile? GetUserProfile(UserAccount account)
|
|
{
|
|
ArgumentException.ThrowIfNullOrWhiteSpace(account.Username, nameof(account.Username));
|
|
return DataProvider.GetUserProfile(account.Username);
|
|
}
|
|
|
|
public UserAccount? Login(string username, string password)
|
|
{
|
|
return DataProvider.GetUserAccount(username, password);
|
|
}
|
|
|
|
public bool Logout(UserAccount? account)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public bool Initialize(bool force)
|
|
{
|
|
var result = false;
|
|
|
|
if (force || !DataProvider.IsInitialized())
|
|
{
|
|
result = CreateUserAccount(defaultUsername, Utils.HashPassword(defaultUsername, defaultPassword)) != null;
|
|
DataProvider.SetInitialized();
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public UserAccount? CreateUserAccount(string username, string password)
|
|
{
|
|
var account = DataProvider.Create<UserAccount>();
|
|
var profile = DataProvider.Create<UserProfile>();
|
|
var group = DataProvider.Create<Group>();
|
|
|
|
ArgumentNullException.ThrowIfNull(account, nameof(account));
|
|
ArgumentNullException.ThrowIfNull(profile, nameof(profile));
|
|
ArgumentNullException.ThrowIfNull(group, nameof(group));
|
|
|
|
account.Username = username;
|
|
account.Password = password;
|
|
|
|
profile.Name = username;
|
|
DataProvider.SetParent(profile, account);
|
|
|
|
group.IsInternal = true;
|
|
DataProvider.SetOwner(group, profile);
|
|
|
|
DataProvider.Save(account);
|
|
DataProvider.Save(profile);
|
|
DataProvider.Save(group);
|
|
|
|
return account;
|
|
}
|
|
|
|
public bool DeleteUserAccount(UserAccount account)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(account.Username) && DataProvider.GetUserProfile(account.Username) is UserProfile userProfile)
|
|
userProfile.Name = "Deleted user";
|
|
DataProvider.Delete(account);
|
|
return true;
|
|
}
|
|
}
|