Compare commits

...

2 Commits

Author SHA1 Message Date
Schedel Pascal
48b8faed4e simplyfy null checks 2024-06-17 08:30:40 +02:00
Schedel Pascal
d3b935bebc null checks 2024-06-17 08:27:18 +02:00
5 changed files with 26 additions and 23 deletions

View File

@@ -9,7 +9,7 @@ public interface IDataManager
abstract bool Logout(UserAccount? account); abstract bool Logout(UserAccount? account);
// User management // User management
abstract UserAccount? CreateUserAccount(string username, string password); abstract UserAccount? CreateUserAccount(UserAccount account, string username, string password);
abstract UserProfile? GetUserProfile(UserAccount account); abstract UserProfile? GetUserProfile(UserAccount account);
abstract bool DeleteUserAccount(UserAccount account); abstract bool DeleteUserAccount(UserAccount account);

View File

@@ -11,7 +11,7 @@ public class CharacterManager(OwnCharManager manager)
Manager.CheckLogin(); Manager.CheckLogin();
if (group != null) if (group != null)
return Manager.DataManager?.GetCharacters(Manager.CurrentUser!, group); return Manager.DataManager.GetCharacters(Manager.CurrentUser, group);
return null; return null;
} }
@@ -21,7 +21,7 @@ public class CharacterManager(OwnCharManager manager)
Manager.CheckLogin(); Manager.CheckLogin();
if (profile != null) if (profile != null)
return Manager.DataManager?.GetCharacters(Manager.CurrentUser!, profile); return Manager.DataManager.GetCharacters(Manager.CurrentUser, profile);
return null; return null;
} }
@@ -34,18 +34,14 @@ public class CharacterManager(OwnCharManager manager)
public Character? CreateCharacter(string? name, Group? destination) public Character? CreateCharacter(string? name, Group? destination)
{ {
ArgumentException.ThrowIfNullOrWhiteSpace(name, nameof(name)); ArgumentException.ThrowIfNullOrWhiteSpace(name, nameof(name));
Manager.CheckLogin(); Manager.CheckLogin();
return Manager.DataManager.CreateCharacter(Manager.CurrentUser, name, destination);
return Manager.DataManager?.CreateCharacter(Manager.CurrentUser!, name, destination);
} }
public bool DeleteCharacter(Character? character) public bool DeleteCharacter(Character? character)
{ {
ArgumentNullException.ThrowIfNull(character, nameof(character)); ArgumentNullException.ThrowIfNull(character, nameof(character));
Manager.CheckLogin(); Manager.CheckLogin();
return Manager.DataManager.DeleteCharacter(Manager.CurrentUser, character);
return Manager.DataManager?.DeleteCharacter(Manager.CurrentUser!, character) ?? false;
} }
} }

View File

@@ -9,42 +9,44 @@ public class GroupsManager(OwnCharManager manager)
public UserProfile? GetOwner(Group? group) public UserProfile? GetOwner(Group? group)
{ {
ArgumentNullException.ThrowIfNull(group, nameof(group)); ArgumentNullException.ThrowIfNull(group, nameof(group));
return Manager.DataManager?.GetOwner(Manager.CurrentUser!, group); Manager.CheckLogin();
return Manager.DataManager.GetOwner(Manager.CurrentUser, group);
} }
public IEnumerable<UserProfile>? GetMembers(Group? group) public IEnumerable<UserProfile>? GetMembers(Group? group)
{ {
ArgumentNullException.ThrowIfNull(group, nameof(group)); ArgumentNullException.ThrowIfNull(group, nameof(group));
return Manager.DataManager?.GetMembers(Manager.CurrentUser!, group); Manager.CheckLogin();
return Manager.DataManager.GetMembers(Manager.CurrentUser, group);
} }
public bool AddMember(UserProfile? profile, Group? group) public bool AddMember(UserProfile? profile, Group? group)
{ {
Manager.CheckLogin();
ArgumentNullException.ThrowIfNull(profile, nameof(profile)); ArgumentNullException.ThrowIfNull(profile, nameof(profile));
ArgumentNullException.ThrowIfNull(group, nameof(group)); ArgumentNullException.ThrowIfNull(group, nameof(group));
return Manager.DataManager?.AddMember(Manager.CurrentUser!, group, profile) ?? false; Manager.CheckLogin();
return Manager.DataManager.AddMember(Manager.CurrentUser, group, profile);
} }
public bool DeleteMember(UserProfile? profile, Group? group) public bool DeleteMember(UserProfile? profile, Group? group)
{ {
Manager.CheckLogin();
ArgumentNullException.ThrowIfNull(profile, nameof(profile)); ArgumentNullException.ThrowIfNull(profile, nameof(profile));
ArgumentNullException.ThrowIfNull(group, nameof(group)); ArgumentNullException.ThrowIfNull(group, nameof(group));
return Manager.DataManager?.RemoveMember(Manager.CurrentUser!, group, profile) ?? false; Manager.CheckLogin();
return Manager.DataManager.RemoveMember(Manager.CurrentUser, group, profile);
} }
public Group? CreateGroup(string? name) public Group? CreateGroup(string? name)
{ {
Manager.CheckLogin();
ArgumentException.ThrowIfNullOrWhiteSpace(name, nameof(name)); ArgumentException.ThrowIfNullOrWhiteSpace(name, nameof(name));
return Manager.DataManager?.CreateGroup(Manager.CurrentUser!, name); Manager.CheckLogin();
return Manager.DataManager.CreateGroup(Manager.CurrentUser, name);
} }
public bool DeleteGroup(Group? group) public bool DeleteGroup(Group? group)
{ {
Manager.CheckLogin();
ArgumentNullException.ThrowIfNull(group, nameof(group)); ArgumentNullException.ThrowIfNull(group, nameof(group));
return Manager.DataManager?.DeleteGroup(Manager.CurrentUser!, group) ?? false; Manager.CheckLogin();
return Manager.DataManager.DeleteGroup(Manager.CurrentUser, group);
} }
} }

View File

@@ -2,13 +2,14 @@
using OwnChar.Manager.Exceptions; using OwnChar.Manager.Exceptions;
using OwnChar.Model; using OwnChar.Model;
using Pilz.Cryptography; using Pilz.Cryptography;
using System.Diagnostics.CodeAnalysis;
namespace OwnChar.Manager; namespace OwnChar.Manager;
public class OwnCharManager public class OwnCharManager
{ {
// User // User
public bool IsLoggedIn => CurrentUser != null; public bool IsLoggedIn => CurrentUser != null && DataManager != null;
public UserAccount? CurrentUser { get; private set; } public UserAccount? CurrentUser { get; private set; }
// Data Provider // Data Provider
@@ -26,6 +27,7 @@ public class OwnCharManager
Characters = new(this); Characters = new(this);
} }
[MemberNotNull(nameof(CurrentUser), nameof(DataManager))]
internal protected void CheckLogin() internal protected void CheckLogin()
{ {
if (!IsLoggedIn) if (!IsLoggedIn)
@@ -36,6 +38,7 @@ public class OwnCharManager
/// Tries to login on the given data provider. /// Tries to login on the given data provider.
/// </summary> /// </summary>
/// <returns>Returns <see cref="true"/> if the login was successfull and <see cref="false"/> if not.</returns> /// <returns>Returns <see cref="true"/> if the login was successfull and <see cref="false"/> if not.</returns>
[MemberNotNullWhen(true, nameof(CurrentUser), nameof(DataManager))]
public bool Login(IDataManager? proxy, string? username, SecureString? password) public bool Login(IDataManager? proxy, string? username, SecureString? password)
{ {
ArgumentNullException.ThrowIfNull(proxy, nameof(proxy)); ArgumentNullException.ThrowIfNull(proxy, nameof(proxy));

View File

@@ -10,20 +10,22 @@ public class UserManager(OwnCharManager manager)
public UserProfile? GetOwnUserProfile() public UserProfile? GetOwnUserProfile()
{ {
Manager.CheckLogin(); Manager.CheckLogin();
return Manager.DataManager!.GetUserProfile(Manager.CurrentUser!); return Manager.DataManager.GetUserProfile(Manager.CurrentUser);
} }
public UserAccount? CreateUserAccount(string? username, SecureString? password) public UserAccount? CreateUserAccount(string? username, SecureString? password)
{ {
ArgumentException.ThrowIfNullOrWhiteSpace(username, nameof(username)); ArgumentException.ThrowIfNullOrWhiteSpace(username, nameof(username));
ArgumentException.ThrowIfNullOrWhiteSpace(password, nameof(password)); ArgumentException.ThrowIfNullOrWhiteSpace(password, nameof(password));
Manager.CheckLogin();
username = username.Trim().ToLower(); username = username.Trim().ToLower();
return Manager.DataManager?.CreateUserAccount(username, Utils.HashPassword(username, password)); return Manager.DataManager.CreateUserAccount(Manager.CurrentUser, username, Utils.HashPassword(username, password));
} }
public bool DeleteUserAccount(UserAccount? account) public bool DeleteUserAccount(UserAccount? account)
{ {
ArgumentNullException.ThrowIfNull(account, nameof(account)); ArgumentNullException.ThrowIfNull(account, nameof(account));
return Manager.DataManager?.DeleteUserAccount(account) ?? false; Manager.CheckLogin();
return Manager.DataManager.DeleteUserAccount(account);
} }
} }