From aa5d229687dec6878e698553d7261b9328aa49fc Mon Sep 17 00:00:00 2001
From: Leendert de Borst
Date: Mon, 22 Jul 2024 11:47:39 +0200
Subject: [PATCH] Refactor admin project folder structure (#113)
---
.../Pages/Account/Manage/ChangePassword.razor | 4 +-
.../Pages/Account/Manage/Disable2fa.razor | 4 +-
.../Account/Manage/EnableAuthenticator.razor | 4 +-
.../Manage/GenerateRecoveryCodes.razor | 4 +-
.../Account/Manage/ResetAuthenticator.razor | 4 +-
.../Pages/Account/Manage/SetPassword.razor | 4 +-
.../Manage/TwoFactorAuthentication.razor | 18 ++---
.../Main/Pages/Account/ManageNavMenu.razor | 14 +---
.../Services/AccessCheckService.cs | 2 -
src/AliasVault.Admin2/Services/UserService.cs | 72 +++----------------
10 files changed, 34 insertions(+), 96 deletions(-)
diff --git a/src/AliasVault.Admin2/Main/Pages/Account/Manage/ChangePassword.razor b/src/AliasVault.Admin2/Main/Pages/Account/Manage/ChangePassword.razor
index 63c7f965b..f623443dd 100644
--- a/src/AliasVault.Admin2/Main/Pages/Account/Manage/ChangePassword.razor
+++ b/src/AliasVault.Admin2/Main/Pages/Account/Manage/ChangePassword.razor
@@ -1,4 +1,4 @@
-@page "/account/manage/ChangePassword"
+@page "/account/manage/change-password"
@using System.ComponentModel.DataAnnotations
@using Microsoft.AspNetCore.Identity
@@ -50,7 +50,7 @@
hasPassword = await UserManager.HasPasswordAsync(UserService.User());
if (!hasPassword)
{
- NavigationService.RedirectTo("account/manage/SetPassword");
+ NavigationService.RedirectTo("account/manage/set-password");
}
}
diff --git a/src/AliasVault.Admin2/Main/Pages/Account/Manage/Disable2fa.razor b/src/AliasVault.Admin2/Main/Pages/Account/Manage/Disable2fa.razor
index 55488d067..d0daae01d 100644
--- a/src/AliasVault.Admin2/Main/Pages/Account/Manage/Disable2fa.razor
+++ b/src/AliasVault.Admin2/Main/Pages/Account/Manage/Disable2fa.razor
@@ -1,4 +1,4 @@
-@page "/account/manage/Disable2fa"
+@page "/account/manage/disable-2fa"
@using Microsoft.AspNetCore.Identity
@@ -15,7 +15,7 @@
Disabling 2FA does not change the keys used in authenticator apps. If you wish to change the key
- used in an authenticator app you should reset your authenticator keys.
+ used in an authenticator app you should reset your authenticator keys.
diff --git a/src/AliasVault.Admin2/Main/Pages/Account/Manage/EnableAuthenticator.razor b/src/AliasVault.Admin2/Main/Pages/Account/Manage/EnableAuthenticator.razor
index 288c9cd5b..e5ffd91c8 100644
--- a/src/AliasVault.Admin2/Main/Pages/Account/Manage/EnableAuthenticator.razor
+++ b/src/AliasVault.Admin2/Main/Pages/Account/Manage/EnableAuthenticator.razor
@@ -1,4 +1,4 @@
-@page "/account/manage/EnableAuthenticator"
+@page "/account/manage/enable-authenticator"
@using System.ComponentModel.DataAnnotations
@using System.Globalization
@@ -114,7 +114,7 @@ else
else
{
// Navigate back to the two factor authentication page.
- NavigationService.RedirectTo("account/manage/TwoFactorAuthentication", forceLoad: true);
+ NavigationService.RedirectTo("account/manage/2fa", forceLoad: true);
}
}
diff --git a/src/AliasVault.Admin2/Main/Pages/Account/Manage/GenerateRecoveryCodes.razor b/src/AliasVault.Admin2/Main/Pages/Account/Manage/GenerateRecoveryCodes.razor
index 02b51f24c..91b99170d 100644
--- a/src/AliasVault.Admin2/Main/Pages/Account/Manage/GenerateRecoveryCodes.razor
+++ b/src/AliasVault.Admin2/Main/Pages/Account/Manage/GenerateRecoveryCodes.razor
@@ -1,4 +1,4 @@
-@page "/account/manage/GenerateRecoveryCodes"
+@page "/account/manage/generate-recovery-codes"
@using Microsoft.AspNetCore.Identity
@@ -26,7 +26,7 @@ else
Generating new recovery codes does not change the keys used in authenticator apps. If you wish to change the key
- used in an authenticator app you should reset your authenticator keys.
+ used in an authenticator app you should reset your authenticator keys.
diff --git a/src/AliasVault.Admin2/Main/Pages/Account/Manage/ResetAuthenticator.razor b/src/AliasVault.Admin2/Main/Pages/Account/Manage/ResetAuthenticator.razor
index e4d85904e..a05f7fe37 100644
--- a/src/AliasVault.Admin2/Main/Pages/Account/Manage/ResetAuthenticator.razor
+++ b/src/AliasVault.Admin2/Main/Pages/Account/Manage/ResetAuthenticator.razor
@@ -1,4 +1,4 @@
-@page "/account/manage/ResetAuthenticator"
+@page "/account/manage/reset-authenticator"
@using Microsoft.AspNetCore.Identity
@@ -41,7 +41,7 @@
GlobalNotificationService.AddSuccessMessage("Your authenticator app key has been reset, you will need to configure your authenticator app using the new key.");
NavigationService.RedirectTo(
- "account/manage/EnableAuthenticator");
+ "account/manage/enable-authenticator");
}
}
diff --git a/src/AliasVault.Admin2/Main/Pages/Account/Manage/SetPassword.razor b/src/AliasVault.Admin2/Main/Pages/Account/Manage/SetPassword.razor
index 61d3ec132..65a392445 100644
--- a/src/AliasVault.Admin2/Main/Pages/Account/Manage/SetPassword.razor
+++ b/src/AliasVault.Admin2/Main/Pages/Account/Manage/SetPassword.razor
@@ -1,4 +1,4 @@
-@page "/account/manage/SetPassword"
+@page "/account/manage/set-password"
@using System.ComponentModel.DataAnnotations
@using Microsoft.AspNetCore.Identity
@@ -47,7 +47,7 @@
var hasPassword = await UserManager.HasPasswordAsync(UserService.User());
if (hasPassword)
{
- NavigationService.RedirectTo("account/manage/ChangePassword");
+ NavigationService.RedirectTo("account/manage/change-password");
}
}
diff --git a/src/AliasVault.Admin2/Main/Pages/Account/Manage/TwoFactorAuthentication.razor b/src/AliasVault.Admin2/Main/Pages/Account/Manage/TwoFactorAuthentication.razor
index bc919ca65..6e7dbd65f 100644
--- a/src/AliasVault.Admin2/Main/Pages/Account/Manage/TwoFactorAuthentication.razor
+++ b/src/AliasVault.Admin2/Main/Pages/Account/Manage/TwoFactorAuthentication.razor
@@ -1,4 +1,4 @@
-@page "/account/manage/TwoFactorAuthentication"
+@page "/account/manage/2fa"
@using Microsoft.AspNetCore.Identity
@@ -16,27 +16,27 @@
{
You have no recovery codes left.
-
You must generate a new set of recovery codes before you can log in with a recovery code.
+
You must generate a new set of recovery codes before you can log in with a recovery code.
}
else if (recoveryCodesLeft == 1)
{
}
else if (recoveryCodesLeft <= 3)
{
You have @recoveryCodesLeft recovery codes left.
-
You should generate a new set of recovery codes.
+
You should generate a new set of recovery codes.
}
}
@@ -46,16 +46,16 @@
@if (!hasAuthenticator)
{
-
+
Add authenticator app
}
else
{
-
+
Set up authenticator app
-
+
Reset authenticator app
}
diff --git a/src/AliasVault.Admin2/Main/Pages/Account/ManageNavMenu.razor b/src/AliasVault.Admin2/Main/Pages/Account/ManageNavMenu.razor
index f3acb6ed5..43a9b8967 100644
--- a/src/AliasVault.Admin2/Main/Pages/Account/ManageNavMenu.razor
+++ b/src/AliasVault.Admin2/Main/Pages/Account/ManageNavMenu.razor
@@ -7,19 +7,9 @@
Profile
- Password
+ Password
- Two-factor authentication
+ Two-factor authentication
-
-@code {
- private bool hasExternalLogins;
-
- protected override async Task OnInitializedAsync()
- {
- hasExternalLogins = (await SignInManager.GetExternalAuthenticationSchemesAsync()).Any();
- }
-
-}
diff --git a/src/AliasVault.Admin2/Services/AccessCheckService.cs b/src/AliasVault.Admin2/Services/AccessCheckService.cs
index e7bbf4afc..8cf2ab53e 100644
--- a/src/AliasVault.Admin2/Services/AccessCheckService.cs
+++ b/src/AliasVault.Admin2/Services/AccessCheckService.cs
@@ -1,7 +1,5 @@
namespace AliasVault.Admin2.Services;
-using Microsoft.AspNetCore.Components;
-
///
/// Access check service to verify if the user is logged in and has a confirmed email.
///
diff --git a/src/AliasVault.Admin2/Services/UserService.cs b/src/AliasVault.Admin2/Services/UserService.cs
index 11e9ba381..f0f269efe 100644
--- a/src/AliasVault.Admin2/Services/UserService.cs
+++ b/src/AliasVault.Admin2/Services/UserService.cs
@@ -23,11 +23,6 @@ public class UserService
///
public event Action OnChange = () => { };
- ///
- /// The Event Ids that the current user is allowed to manage.
- ///
- private List
_managedEventIds = new();
-
///
/// The roles of the current user
///
@@ -39,7 +34,7 @@ public class UserService
private bool _isAdmin;
///
- /// Gets a value indicating whether an event is loaded and available, false if not. Use this before accessing Event() method.
+ /// Gets a value indicating whether the User is loaded and available, false if not. Use this before accessing User() method.
///
public bool UserLoaded => _user != null;
@@ -88,7 +83,7 @@ public class UserService
}
///
- /// Returns inner event EF object.
+ /// Returns inner User EF object.
///
///
public AdminUser User()
@@ -101,15 +96,6 @@ public class UserService
return _user;
}
- ///
- /// Returns managed Event ids list.
- ///
- ///
- public List UserAllowedEventIds()
- {
- return _managedEventIds;
- }
-
///
/// Returns whether current user is admin or not.
///
@@ -133,45 +119,18 @@ public class UserService
{
_user = user;
- // Load all roles for current user.
- _userRoles = await _userManager.GetRolesAsync(this.User());
-
- // Define if current user is admin.
- _isAdmin = _userRoles.Contains(AdminRole);
- }
-
- // UserManager implementation: throughout Blazor server session user is not updated when user is updated in database
- // because of UserManager EF cache. That's why we load it ourselves straight from the database via new DbContext
- // to ensure we get the latest data everytime.
- /*var currentUser = await _userManager.GetUserAsync(_httpContextAccessor.HttpContext.User);
- if (currentUser != null)
- {
- _user = currentUser;
-
- // Load managed event ids for current user.
- _managedEventIds = await GetUserAllowedEventIdsAsync(_user);
-
// Load all roles for current user.
_userRoles = await _userManager.GetRolesAsync(User());
// Define if current user is admin.
_isAdmin = _userRoles.Contains(AdminRole);
- }*/
+ }
}
// Notify listeners that the user has been loaded.
NotifyStateChanged();
}
- ///
- /// Generate email confirmation token for current user.
- ///
- /// Email confirmation token.
- public async Task GenerateEmailConfirmTokenAsync()
- {
- return await _userManager.GenerateEmailConfirmationTokenAsync(User());
- }
-
///
/// Returns current logged on user roles based on HttpContext.
///
@@ -193,15 +152,6 @@ public class UserService
return await _userManager.Users.Where(x => x.UserName.Contains(searchTerm)).Take(5).ToListAsync();
}
- ///
- /// Sign out the current user.
- ///
- /// Async task.
- public async Task SignOutAsync()
- {
- await _signInManager.SignOutAsync();
- }
-
///
/// Create a new user.
///
@@ -250,7 +200,7 @@ public class UserService
// Update password if necessary
if (!string.IsNullOrEmpty(newPassword))
{
- var passwordRemoveResult = await this._userManager.RemovePasswordAsync(user);
+ var passwordRemoveResult = await _userManager.RemovePasswordAsync(user);
if (!passwordRemoveResult.Succeeded)
{
foreach (var error in passwordRemoveResult.Errors)
@@ -260,7 +210,7 @@ public class UserService
return errors;
}
- var passwordAddResult = await this._userManager.AddPasswordAsync(user, newPassword);
+ var passwordAddResult = await _userManager.AddPasswordAsync(user, newPassword);
if (!passwordAddResult.Succeeded)
{
foreach (var error in passwordAddResult.Errors)
@@ -271,7 +221,7 @@ public class UserService
}
}
- var result = await this._userManager.UpdateAsync(user);
+ var result = await _userManager.UpdateAsync(user);
if (!result.Succeeded)
{
foreach (var error in result.Errors)
@@ -305,8 +255,8 @@ public class UserService
var rolesToAdd = roles.Except(currentRoles).ToList();
var rolesToRemove = currentRoles.Except(roles).ToList();
- await this._userManager.AddToRolesAsync(user, rolesToAdd);
- await this._userManager.RemoveFromRolesAsync(user, rolesToRemove);
+ await _userManager.AddToRolesAsync(user, rolesToAdd);
+ await _userManager.RemoveFromRolesAsync(user, rolesToRemove);
return errors;
}
@@ -339,7 +289,7 @@ public class UserService
if (isUpdate)
{
- var originalUser = await this._userManager.FindByIdAsync(user.Id);
+ var originalUser = await _userManager.FindByIdAsync(user.Id);
if (user.UserName != originalUser.UserName)
{
errors.Add("Username cannot be changed for existing users.");
@@ -347,13 +297,13 @@ public class UserService
}
else
{
- var existingUser = await this._userManager.FindByNameAsync(user.UserName);
+ var existingUser = await _userManager.FindByNameAsync(user.UserName);
if (existingUser != null)
{
errors.Add("Username is already in use.");
}
- var existingEmail = await this._userManager.FindByEmailAsync(user.Email);
+ var existingEmail = await _userManager.FindByEmailAsync(user.Email);
if (existingEmail != null)
{
errors.Add("Email is already in use.");