From 67cde54e378ed87d5e781b4e2e475680b0ef6b69 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 3 May 2024 22:54:50 +0100 Subject: [PATCH] Use proper database context in new server. --- .../Aaru.Server.Database.csproj | 3 +- Aaru.Server.New/Aaru.Server.New.csproj | 7 +- ...omponentsEndpointRouteBuilderExtensions.cs | 15 +- .../Account/IdentityNoOpEmailSender.cs | 9 +- ...RevalidatingAuthenticationStateProvider.cs | 8 +- .../Account/IdentityUserAccessor.cs | 7 +- .../Account/Pages/ConfirmEmail.razor | 7 +- .../Account/Pages/ConfirmEmailChange.razor | 9 +- .../Account/Pages/ExternalLogin.razor | 29 ++- .../Account/Pages/ForgotPassword.razor | 11 +- .../Components/Account/Pages/Login.razor | 9 +- .../Account/Pages/LoginWith2fa.razor | 13 +- .../Account/Pages/LoginWithRecoveryCode.razor | 9 +- .../Account/Pages/Manage/ChangePassword.razor | 17 +- .../Pages/Manage/DeletePersonalData.razor | 17 +- .../Account/Pages/Manage/Disable2fa.razor | 11 +- .../Account/Pages/Manage/Email.razor | 17 +- .../Pages/Manage/EnableAuthenticator.razor | 7 +- .../Account/Pages/Manage/ExternalLogins.razor | 15 +- .../Pages/Manage/GenerateRecoveryCodes.razor | 5 +- .../Account/Pages/Manage/Index.razor | 15 +- .../Pages/Manage/ResetAuthenticator.razor | 13 +- .../Account/Pages/Manage/SetPassword.razor | 13 +- .../Manage/TwoFactorAuthentication.razor | 11 +- .../Components/Account/Pages/Register.razor | 29 ++- .../Account/Pages/RegisterConfirmation.razor | 11 +- .../Pages/ResendEmailConfirmation.razor | 11 +- .../Account/Pages/ResetPassword.razor | 7 +- .../Account/Shared/ExternalLoginPicker.razor | 7 +- .../Account/Shared/ManageNavMenu.razor | 5 +- Aaru.Server.New/Data/ApplicationDbContext.cs | 7 - Aaru.Server.New/Data/ApplicationUser.cs | 6 - ...000000000_CreateIdentitySchema.Designer.cs | 226 ------------------ .../00000000000000_CreateIdentitySchema.cs | 212 ---------------- .../ApplicationDbContextModelSnapshot.cs | 223 ----------------- Aaru.Server.New/Data/app.db | Bin 102400 -> 0 bytes Aaru.Server.New/Program.cs | 17 +- Aaru.Server.New/appsettings.Development.json | 5 +- 38 files changed, 174 insertions(+), 869 deletions(-) delete mode 100644 Aaru.Server.New/Data/ApplicationDbContext.cs delete mode 100644 Aaru.Server.New/Data/ApplicationUser.cs delete mode 100644 Aaru.Server.New/Data/Migrations/00000000000000_CreateIdentitySchema.Designer.cs delete mode 100644 Aaru.Server.New/Data/Migrations/00000000000000_CreateIdentitySchema.cs delete mode 100644 Aaru.Server.New/Data/Migrations/ApplicationDbContextModelSnapshot.cs delete mode 100644 Aaru.Server.New/Data/app.db diff --git a/Aaru.Server.Database/Aaru.Server.Database.csproj b/Aaru.Server.Database/Aaru.Server.Database.csproj index d5ad541c..c68ca2b5 100644 --- a/Aaru.Server.Database/Aaru.Server.Database.csproj +++ b/Aaru.Server.Database/Aaru.Server.Database.csproj @@ -11,8 +11,7 @@ - - + diff --git a/Aaru.Server.New/Aaru.Server.New.csproj b/Aaru.Server.New/Aaru.Server.New.csproj index 576dec30..9ce7942d 100644 --- a/Aaru.Server.New/Aaru.Server.New.csproj +++ b/Aaru.Server.New/Aaru.Server.New.csproj @@ -7,10 +7,6 @@ aspnet-Aaru.Server.New-79282495-4F67-4766-871D-448D1338E8BC - - - - @@ -18,6 +14,9 @@ + + + diff --git a/Aaru.Server.New/Components/Account/IdentityComponentsEndpointRouteBuilderExtensions.cs b/Aaru.Server.New/Components/Account/IdentityComponentsEndpointRouteBuilderExtensions.cs index 5f908740..f06ae7b0 100644 --- a/Aaru.Server.New/Components/Account/IdentityComponentsEndpointRouteBuilderExtensions.cs +++ b/Aaru.Server.New/Components/Account/IdentityComponentsEndpointRouteBuilderExtensions.cs @@ -3,7 +3,6 @@ using System.Security.Claims; using System.Text.Json; using Aaru.Server.New.Components.Account.Pages; using Aaru.Server.New.Components.Account.Pages.Manage; -using Aaru.Server.New.Data; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Http.Extensions; @@ -23,8 +22,8 @@ static class IdentityComponentsEndpointRouteBuilderExtensions RouteGroupBuilder accountGroup = endpoints.MapGroup("/Account"); accountGroup.MapPost("/PerformExternalLogin", - (HttpContext context, [FromServices] SignInManager signInManager, - [FromForm] string provider, [FromForm] string returnUrl) => + (HttpContext context, [FromServices] SignInManager signInManager, + [FromForm] string provider, [FromForm] string returnUrl) => { IEnumerable> query = [ @@ -44,7 +43,7 @@ static class IdentityComponentsEndpointRouteBuilderExtensions }); accountGroup.MapPost("/Logout", - async (ClaimsPrincipal user, SignInManager signInManager, + async (ClaimsPrincipal user, SignInManager signInManager, [FromForm] string returnUrl) => { await signInManager.SignOutAsync(); @@ -55,7 +54,7 @@ static class IdentityComponentsEndpointRouteBuilderExtensions RouteGroupBuilder manageGroup = accountGroup.MapGroup("/Manage").RequireAuthorization(); manageGroup.MapPost("/LinkExternalLogin", - async (HttpContext context, [FromServices] SignInManager signInManager, + async (HttpContext context, [FromServices] SignInManager signInManager, [FromForm] string provider) => { // Clear the existing external cookie to ensure a clean login process @@ -79,10 +78,10 @@ static class IdentityComponentsEndpointRouteBuilderExtensions ILogger downloadLogger = loggerFactory.CreateLogger("DownloadPersonalData"); manageGroup.MapPost("/DownloadPersonalData", - async (HttpContext context, [FromServices] UserManager userManager, + async (HttpContext context, [FromServices] UserManager userManager, [FromServices] AuthenticationStateProvider authenticationStateProvider) => { - ApplicationUser? user = await userManager.GetUserAsync(context.User); + IdentityUser? user = await userManager.GetUserAsync(context.User); if(user is null) { @@ -99,7 +98,7 @@ static class IdentityComponentsEndpointRouteBuilderExtensions // Only include personal data for download var personalData = new Dictionary(); - IEnumerable personalDataProps = typeof(ApplicationUser).GetProperties() + IEnumerable personalDataProps = typeof(IdentityUser).GetProperties() .Where(prop => Attribute.IsDefined(prop, typeof(PersonalDataAttribute))); foreach(PropertyInfo p in personalDataProps) diff --git a/Aaru.Server.New/Components/Account/IdentityNoOpEmailSender.cs b/Aaru.Server.New/Components/Account/IdentityNoOpEmailSender.cs index 3d06f70d..5fa6f07f 100644 --- a/Aaru.Server.New/Components/Account/IdentityNoOpEmailSender.cs +++ b/Aaru.Server.New/Components/Account/IdentityNoOpEmailSender.cs @@ -1,25 +1,24 @@ -using Aaru.Server.New.Data; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.UI.Services; namespace Aaru.Server.New.Components.Account; // Remove the "else if (EmailSender is IdentityNoOpEmailSender)" block from RegisterConfirmation.razor after updating with a real implementation. -sealed class IdentityNoOpEmailSender : IEmailSender +sealed class IdentityNoOpEmailSender : IEmailSender { readonly IEmailSender emailSender = new NoOpEmailSender(); - public Task SendConfirmationLinkAsync(ApplicationUser user, string email, string confirmationLink) => + public Task SendConfirmationLinkAsync(IdentityUser user, string email, string confirmationLink) => emailSender.SendEmailAsync(email, "Confirm your email", $"Please confirm your account by clicking here."); - public Task SendPasswordResetLinkAsync(ApplicationUser user, string email, string resetLink) => + public Task SendPasswordResetLinkAsync(IdentityUser user, string email, string resetLink) => emailSender.SendEmailAsync(email, "Reset your password", $"Please reset your password by clicking here."); - public Task SendPasswordResetCodeAsync(ApplicationUser user, string email, string resetCode) => + public Task SendPasswordResetCodeAsync(IdentityUser user, string email, string resetCode) => emailSender.SendEmailAsync(email, "Reset your password", $"Please reset your password using the following code: {resetCode}"); diff --git a/Aaru.Server.New/Components/Account/IdentityRevalidatingAuthenticationStateProvider.cs b/Aaru.Server.New/Components/Account/IdentityRevalidatingAuthenticationStateProvider.cs index e0665172..b91f418c 100644 --- a/Aaru.Server.New/Components/Account/IdentityRevalidatingAuthenticationStateProvider.cs +++ b/Aaru.Server.New/Components/Account/IdentityRevalidatingAuthenticationStateProvider.cs @@ -1,5 +1,4 @@ using System.Security.Claims; -using Aaru.Server.New.Data; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Server; using Microsoft.AspNetCore.Identity; @@ -21,15 +20,14 @@ sealed class IdentityRevalidatingAuthenticationStateProvider // Get the user manager from a new scope to ensure it fetches fresh data await using AsyncServiceScope scope = scopeFactory.CreateAsyncScope(); - UserManager userManager = - scope.ServiceProvider.GetRequiredService>(); + UserManager userManager = scope.ServiceProvider.GetRequiredService>(); return await ValidateSecurityStampAsync(userManager, authenticationState.User); } - async Task ValidateSecurityStampAsync(UserManager userManager, ClaimsPrincipal principal) + async Task ValidateSecurityStampAsync(UserManager userManager, ClaimsPrincipal principal) { - ApplicationUser? user = await userManager.GetUserAsync(principal); + IdentityUser? user = await userManager.GetUserAsync(principal); if(user is null) return false; diff --git a/Aaru.Server.New/Components/Account/IdentityUserAccessor.cs b/Aaru.Server.New/Components/Account/IdentityUserAccessor.cs index 51fd12c5..1ac73875 100644 --- a/Aaru.Server.New/Components/Account/IdentityUserAccessor.cs +++ b/Aaru.Server.New/Components/Account/IdentityUserAccessor.cs @@ -1,13 +1,12 @@ -using Aaru.Server.New.Data; using Microsoft.AspNetCore.Identity; namespace Aaru.Server.New.Components.Account; -sealed class IdentityUserAccessor(UserManager userManager, IdentityRedirectManager redirectManager) +sealed class IdentityUserAccessor(UserManager userManager, IdentityRedirectManager redirectManager) { - public async Task GetRequiredUserAsync(HttpContext context) + public async Task GetRequiredUserAsync(HttpContext context) { - ApplicationUser? user = await userManager.GetUserAsync(context.User); + IdentityUser? user = await userManager.GetUserAsync(context.User); if(user is null) { diff --git a/Aaru.Server.New/Components/Account/Pages/ConfirmEmail.razor b/Aaru.Server.New/Components/Account/Pages/ConfirmEmail.razor index 31cc5ae1..07d4eb9c 100644 --- a/Aaru.Server.New/Components/Account/Pages/ConfirmEmail.razor +++ b/Aaru.Server.New/Components/Account/Pages/ConfirmEmail.razor @@ -1,11 +1,10 @@ @page "/Account/ConfirmEmail" @using System.Text -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject UserManager UserManager -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject IdentityRedirectManager RedirectManager Confirm email @@ -31,7 +30,7 @@ RedirectManager.RedirectTo(""); } - ApplicationUser? user = await UserManager.FindByIdAsync(UserId); + IdentityUser? user = await UserManager.FindByIdAsync(UserId); if(user is null) { diff --git a/Aaru.Server.New/Components/Account/Pages/ConfirmEmailChange.razor b/Aaru.Server.New/Components/Account/Pages/ConfirmEmailChange.razor index 9a44919d..59b3b1fc 100644 --- a/Aaru.Server.New/Components/Account/Pages/ConfirmEmailChange.razor +++ b/Aaru.Server.New/Components/Account/Pages/ConfirmEmailChange.razor @@ -1,12 +1,11 @@ @page "/Account/ConfirmEmailChange" @using System.Text -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject UserManager UserManager -@inject SignInManager SignInManager -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject SignInManager SignInManager +@inject IdentityRedirectManager RedirectManager Confirm email change @@ -36,7 +35,7 @@ RedirectManager.RedirectToWithStatus("Account/Login", "Error: Invalid email change confirmation link.", HttpContext); } - ApplicationUser? user = await UserManager.FindByIdAsync(UserId); + IdentityUser? user = await UserManager.FindByIdAsync(UserId); if(user is null) { diff --git a/Aaru.Server.New/Components/Account/Pages/ExternalLogin.razor b/Aaru.Server.New/Components/Account/Pages/ExternalLogin.razor index 2d0813a3..0e8bcc36 100644 --- a/Aaru.Server.New/Components/Account/Pages/ExternalLogin.razor +++ b/Aaru.Server.New/Components/Account/Pages/ExternalLogin.razor @@ -3,17 +3,16 @@ @using System.Security.Claims @using System.Text @using System.Text.Encodings.Web -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject SignInManager SignInManager -@inject UserManager UserManager -@inject IUserStore UserStore -@inject IEmailSender EmailSender -@inject NavigationManager NavigationManager -@inject IdentityRedirectManager RedirectManager -@inject ILogger Logger +@inject SignInManager SignInManager +@inject UserManager UserManager +@inject IUserStore UserStore +@inject IEmailSender EmailSender +@inject NavigationManager NavigationManager +@inject IdentityRedirectManager RedirectManager +@inject ILogger Logger Register @@ -121,8 +120,8 @@ private async Task OnValidSubmitAsync() { - IUserEmailStore emailStore = GetEmailStore(); - ApplicationUser user = CreateUser(); + IUserEmailStore emailStore = GetEmailStore(); + IdentityUser user = CreateUser(); await UserStore.SetUserNameAsync(user, Input.Email, CancellationToken.None); await emailStore.SetEmailAsync(user, Input.Email, CancellationToken.None); @@ -168,26 +167,26 @@ message = $"Error: {string.Join(",", result.Errors.Select(error => error.Description))}"; } - private ApplicationUser CreateUser() + private IdentityUser CreateUser() { try { - return Activator.CreateInstance(); + return Activator.CreateInstance(); } catch { - throw new InvalidOperationException($"Can't create an instance of '{nameof(ApplicationUser)}'. " + $"Ensure that '{nameof(ApplicationUser)}' is not an abstract class and has a parameterless constructor"); + throw new InvalidOperationException($"Can't create an instance of '{nameof(IdentityUser)}'. " + $"Ensure that '{nameof(IdentityUser)}' is not an abstract class and has a parameterless constructor"); } } - private IUserEmailStore GetEmailStore() + private IUserEmailStore GetEmailStore() { if(!UserManager.SupportsUserEmail) { throw new NotSupportedException("The default UI requires a user store with email support."); } - return (IUserEmailStore)UserStore; + return (IUserEmailStore)UserStore; } private sealed class InputModel diff --git a/Aaru.Server.New/Components/Account/Pages/ForgotPassword.razor b/Aaru.Server.New/Components/Account/Pages/ForgotPassword.razor index e8d8afe8..7fae458d 100644 --- a/Aaru.Server.New/Components/Account/Pages/ForgotPassword.razor +++ b/Aaru.Server.New/Components/Account/Pages/ForgotPassword.razor @@ -2,14 +2,13 @@ @using System.ComponentModel.DataAnnotations @using System.Text @using System.Text.Encodings.Web -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject UserManager UserManager -@inject IEmailSender EmailSender -@inject NavigationManager NavigationManager -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject IEmailSender EmailSender +@inject NavigationManager NavigationManager +@inject IdentityRedirectManager RedirectManager Forgot your password? @@ -38,7 +37,7 @@ private async Task OnValidSubmitAsync() { - ApplicationUser? user = await UserManager.FindByEmailAsync(Input.Email); + IdentityUser? user = await UserManager.FindByEmailAsync(Input.Email); if(user is null || !await UserManager.IsEmailConfirmedAsync(user)) { diff --git a/Aaru.Server.New/Components/Account/Pages/Login.razor b/Aaru.Server.New/Components/Account/Pages/Login.razor index 2b112692..698070ac 100644 --- a/Aaru.Server.New/Components/Account/Pages/Login.razor +++ b/Aaru.Server.New/Components/Account/Pages/Login.razor @@ -1,13 +1,12 @@ @page "/Account/Login" @using System.ComponentModel.DataAnnotations -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Authentication @using Microsoft.AspNetCore.Identity -@inject SignInManager SignInManager -@inject ILogger Logger -@inject NavigationManager NavigationManager -@inject IdentityRedirectManager RedirectManager +@inject SignInManager SignInManager +@inject ILogger Logger +@inject NavigationManager NavigationManager +@inject IdentityRedirectManager RedirectManager Log in diff --git a/Aaru.Server.New/Components/Account/Pages/LoginWith2fa.razor b/Aaru.Server.New/Components/Account/Pages/LoginWith2fa.razor index 782ddc58..9d3a6195 100644 --- a/Aaru.Server.New/Components/Account/Pages/LoginWith2fa.razor +++ b/Aaru.Server.New/Components/Account/Pages/LoginWith2fa.razor @@ -1,12 +1,11 @@ @page "/Account/LoginWith2fa" @using System.ComponentModel.DataAnnotations -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject SignInManager SignInManager -@inject UserManager UserManager -@inject IdentityRedirectManager RedirectManager -@inject ILogger Logger +@inject SignInManager SignInManager +@inject UserManager UserManager +@inject IdentityRedirectManager RedirectManager +@inject ILogger Logger Two-factor authentication @@ -44,8 +43,8 @@

@code { - private string? message; - private ApplicationUser user = default!; + private string? message; + private IdentityUser user = default!; [SupplyParameterFromForm] private InputModel Input { get; set; } = new(); diff --git a/Aaru.Server.New/Components/Account/Pages/LoginWithRecoveryCode.razor b/Aaru.Server.New/Components/Account/Pages/LoginWithRecoveryCode.razor index 6081e7bf..a726381f 100644 --- a/Aaru.Server.New/Components/Account/Pages/LoginWithRecoveryCode.razor +++ b/Aaru.Server.New/Components/Account/Pages/LoginWithRecoveryCode.razor @@ -1,10 +1,9 @@ @page "/Account/LoginWithRecoveryCode" @using System.ComponentModel.DataAnnotations -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject SignInManager SignInManager -@inject UserManager UserManager +@inject SignInManager SignInManager +@inject UserManager UserManager @inject IdentityRedirectManager RedirectManager @inject ILogger Logger @@ -33,8 +32,8 @@ @code { - private string? message; - private ApplicationUser user = default!; + private string? message; + private IdentityUser user = default!; [SupplyParameterFromForm] private InputModel Input { get; set; } = new(); diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/ChangePassword.razor b/Aaru.Server.New/Components/Account/Pages/Manage/ChangePassword.razor index 1dd32433..8efc0528 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/ChangePassword.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/ChangePassword.razor @@ -1,13 +1,12 @@ @page "/Account/Manage/ChangePassword" @using System.ComponentModel.DataAnnotations -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager -@inject SignInManager SignInManager -@inject IdentityUserAccessor UserAccessor -@inject IdentityRedirectManager RedirectManager -@inject ILogger Logger +@inject UserManager UserManager +@inject SignInManager SignInManager +@inject IdentityUserAccessor UserAccessor +@inject IdentityRedirectManager RedirectManager +@inject ILogger Logger Change password @@ -39,9 +38,9 @@ @code { - private string? message; - private ApplicationUser user = default!; - private bool hasPassword; + private string? message; + private IdentityUser user = default!; + private bool hasPassword; [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/DeletePersonalData.razor b/Aaru.Server.New/Components/Account/Pages/Manage/DeletePersonalData.razor index 05d4b088..5fa66dc3 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/DeletePersonalData.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/DeletePersonalData.razor @@ -1,13 +1,12 @@ @page "/Account/Manage/DeletePersonalData" @using System.ComponentModel.DataAnnotations -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager -@inject SignInManager SignInManager -@inject IdentityUserAccessor UserAccessor -@inject IdentityRedirectManager RedirectManager -@inject ILogger Logger +@inject UserManager UserManager +@inject SignInManager SignInManager +@inject IdentityUserAccessor UserAccessor +@inject IdentityRedirectManager RedirectManager +@inject ILogger Logger Delete Personal Data @@ -38,9 +37,9 @@ @code { - private string? message; - private ApplicationUser user = default!; - private bool requirePassword; + private string? message; + private IdentityUser user = default!; + private bool requirePassword; [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/Disable2fa.razor b/Aaru.Server.New/Components/Account/Pages/Manage/Disable2fa.razor index 68933aae..583c13c9 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/Disable2fa.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/Disable2fa.razor @@ -1,11 +1,10 @@ @page "/Account/Manage/Disable2fa" -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager -@inject IdentityUserAccessor UserAccessor -@inject IdentityRedirectManager RedirectManager -@inject ILogger Logger +@inject UserManager UserManager +@inject IdentityUserAccessor UserAccessor +@inject IdentityRedirectManager RedirectManager +@inject ILogger Logger Disable two-factor authentication (2FA) @@ -30,7 +29,7 @@ @code { - private ApplicationUser user = default!; + private IdentityUser user = default!; [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/Email.razor b/Aaru.Server.New/Components/Account/Pages/Manage/Email.razor index 780e38c3..4c5ee5df 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/Email.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/Email.razor @@ -2,14 +2,13 @@ @using System.ComponentModel.DataAnnotations @using System.Text @using System.Text.Encodings.Web -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject UserManager UserManager -@inject IEmailSender EmailSender -@inject IdentityUserAccessor UserAccessor -@inject NavigationManager NavigationManager +@inject UserManager UserManager +@inject IEmailSender EmailSender +@inject IdentityUserAccessor UserAccessor +@inject NavigationManager NavigationManager Manage email @@ -53,10 +52,10 @@ @code { - private string? message; - private ApplicationUser user = default!; - private string? email; - private bool isEmailConfirmed; + private string? message; + private IdentityUser user = default!; + private string? email; + private bool isEmailConfirmed; [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/EnableAuthenticator.razor b/Aaru.Server.New/Components/Account/Pages/Manage/EnableAuthenticator.razor index aa79c691..3d318da6 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/EnableAuthenticator.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/EnableAuthenticator.razor @@ -3,10 +3,9 @@ @using System.Globalization @using System.Text @using System.Text.Encodings.Web -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager +@inject UserManager UserManager @inject IdentityUserAccessor UserAccessor @inject UrlEncoder UrlEncoder @inject IdentityRedirectManager RedirectManager @@ -70,7 +69,7 @@ else private const string AuthenticatorUriFormat = "otpauth://totp/{0}:{1}?secret={2}&issuer={0}&digits=6"; private string? message; - private ApplicationUser user = default!; + private IdentityUser user = default!; private string? sharedKey; private string? authenticatorUri; private IEnumerable? recoveryCodes; @@ -118,7 +117,7 @@ else } } - private async ValueTask LoadSharedKeyAndQrCodeUriAsync(ApplicationUser user) + private async ValueTask LoadSharedKeyAndQrCodeUriAsync(IdentityUser user) { // Load the authenticator key & QR code URI to display on the form string? unformattedKey = await UserManager.GetAuthenticatorKeyAsync(user); diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/ExternalLogins.razor b/Aaru.Server.New/Components/Account/Pages/Manage/ExternalLogins.razor index 7e1e15ac..96a0729a 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/ExternalLogins.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/ExternalLogins.razor @@ -1,13 +1,12 @@ @page "/Account/Manage/ExternalLogins" -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Authentication @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager -@inject SignInManager SignInManager -@inject IdentityUserAccessor UserAccessor -@inject IUserStore UserStore -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject SignInManager SignInManager +@inject IdentityUserAccessor UserAccessor +@inject IUserStore UserStore +@inject IdentityRedirectManager RedirectManager Manage your external logins @@ -65,7 +64,7 @@ @code { public const string LinkLoginCallbackAction = "LinkLoginCallback"; - private ApplicationUser user = default!; + private IdentityUser user = default!; private IList? currentLogins; private IList? otherLogins; private bool showRemoveButton; @@ -90,7 +89,7 @@ string? passwordHash = null; - if(UserStore is IUserPasswordStore userPasswordStore) + if(UserStore is IUserPasswordStore userPasswordStore) { passwordHash = await userPasswordStore.GetPasswordHashAsync(user, HttpContext.RequestAborted); } diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/GenerateRecoveryCodes.razor b/Aaru.Server.New/Components/Account/Pages/Manage/GenerateRecoveryCodes.razor index 22ff6e87..cba67c73 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/GenerateRecoveryCodes.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/GenerateRecoveryCodes.razor @@ -1,8 +1,7 @@ @page "/Account/Manage/GenerateRecoveryCodes" -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager +@inject UserManager UserManager @inject IdentityUserAccessor UserAccessor @inject IdentityRedirectManager RedirectManager @inject ILogger Logger @@ -39,7 +38,7 @@ else @code { private string? message; - private ApplicationUser user = default!; + private IdentityUser user = default!; private IEnumerable? recoveryCodes; [CascadingParameter] diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/Index.razor b/Aaru.Server.New/Components/Account/Pages/Manage/Index.razor index f72cce77..4e9b7e41 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/Index.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/Index.razor @@ -1,12 +1,11 @@ @page "/Account/Manage" @using System.ComponentModel.DataAnnotations -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager -@inject SignInManager SignInManager -@inject IdentityUserAccessor UserAccessor -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject SignInManager SignInManager +@inject IdentityUserAccessor UserAccessor +@inject IdentityRedirectManager RedirectManager Profile @@ -33,9 +32,9 @@ @code { - private ApplicationUser user = default!; - private string? username; - private string? phoneNumber; + private IdentityUser user = default!; + private string? username; + private string? phoneNumber; [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/ResetAuthenticator.razor b/Aaru.Server.New/Components/Account/Pages/Manage/ResetAuthenticator.razor index 49ec4ff9..f98cbf37 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/ResetAuthenticator.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/ResetAuthenticator.razor @@ -1,12 +1,11 @@ @page "/Account/Manage/ResetAuthenticator" -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager -@inject SignInManager SignInManager -@inject IdentityUserAccessor UserAccessor -@inject IdentityRedirectManager RedirectManager -@inject ILogger Logger +@inject UserManager UserManager +@inject SignInManager SignInManager +@inject IdentityUserAccessor UserAccessor +@inject IdentityRedirectManager RedirectManager +@inject ILogger Logger Reset authenticator key @@ -35,7 +34,7 @@ private async Task OnSubmitAsync() { - ApplicationUser user = await UserAccessor.GetRequiredUserAsync(HttpContext); + IdentityUser user = await UserAccessor.GetRequiredUserAsync(HttpContext); await UserManager.SetTwoFactorEnabledAsync(user, false); await UserManager.ResetAuthenticatorKeyAsync(user); string userId = await UserManager.GetUserIdAsync(user); diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/SetPassword.razor b/Aaru.Server.New/Components/Account/Pages/Manage/SetPassword.razor index dc291dea..acb865dd 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/SetPassword.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/SetPassword.razor @@ -1,12 +1,11 @@ @page "/Account/Manage/SetPassword" @using System.ComponentModel.DataAnnotations -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager -@inject SignInManager SignInManager -@inject IdentityUserAccessor UserAccessor -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject SignInManager SignInManager +@inject IdentityUserAccessor UserAccessor +@inject IdentityRedirectManager RedirectManager Set password @@ -37,8 +36,8 @@ @code { - private string? message; - private ApplicationUser user = default!; + private string? message; + private IdentityUser user = default!; [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; diff --git a/Aaru.Server.New/Components/Account/Pages/Manage/TwoFactorAuthentication.razor b/Aaru.Server.New/Components/Account/Pages/Manage/TwoFactorAuthentication.razor index f3c96a03..83deed42 100644 --- a/Aaru.Server.New/Components/Account/Pages/Manage/TwoFactorAuthentication.razor +++ b/Aaru.Server.New/Components/Account/Pages/Manage/TwoFactorAuthentication.razor @@ -1,12 +1,11 @@ @page "/Account/Manage/TwoFactorAuthentication" -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Http.Features @using Microsoft.AspNetCore.Identity -@inject UserManager UserManager -@inject SignInManager SignInManager -@inject IdentityUserAccessor UserAccessor -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject SignInManager SignInManager +@inject IdentityUserAccessor UserAccessor +@inject IdentityRedirectManager RedirectManager Two-factor authentication (2FA) @@ -82,7 +81,7 @@ else protected override async Task OnInitializedAsync() { - ApplicationUser user = await UserAccessor.GetRequiredUserAsync(HttpContext); + IdentityUser user = await UserAccessor.GetRequiredUserAsync(HttpContext); canTrack = HttpContext.Features.Get()?.CanTrack ?? true; hasAuthenticator = await UserManager.GetAuthenticatorKeyAsync(user) is not null; is2faEnabled = await UserManager.GetTwoFactorEnabledAsync(user); diff --git a/Aaru.Server.New/Components/Account/Pages/Register.razor b/Aaru.Server.New/Components/Account/Pages/Register.razor index 1daeaa75..766d4304 100644 --- a/Aaru.Server.New/Components/Account/Pages/Register.razor +++ b/Aaru.Server.New/Components/Account/Pages/Register.razor @@ -2,17 +2,16 @@ @using System.ComponentModel.DataAnnotations @using System.Text @using System.Text.Encodings.Web -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject UserManager UserManager -@inject IUserStore UserStore -@inject SignInManager SignInManager -@inject IEmailSender EmailSender -@inject ILogger Logger -@inject NavigationManager NavigationManager -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject IUserStore UserStore +@inject SignInManager SignInManager +@inject IEmailSender EmailSender +@inject ILogger Logger +@inject NavigationManager NavigationManager +@inject IdentityRedirectManager RedirectManager Register @@ -66,10 +65,10 @@ public async Task RegisterUser(EditContext editContext) { - ApplicationUser user = CreateUser(); + IdentityUser user = CreateUser(); await UserStore.SetUserNameAsync(user, Input.Email, CancellationToken.None); - IUserEmailStore emailStore = GetEmailStore(); + IUserEmailStore emailStore = GetEmailStore(); await emailStore.SetEmailAsync(user, Input.Email, CancellationToken.None); IdentityResult result = await UserManager.CreateAsync(user, Input.Password); @@ -110,26 +109,26 @@ RedirectManager.RedirectTo(ReturnUrl); } - private ApplicationUser CreateUser() + private IdentityUser CreateUser() { try { - return Activator.CreateInstance(); + return Activator.CreateInstance(); } catch { - throw new InvalidOperationException($"Can't create an instance of '{nameof(ApplicationUser)}'. " + $"Ensure that '{nameof(ApplicationUser)}' is not an abstract class and has a parameterless constructor."); + throw new InvalidOperationException($"Can't create an instance of '{nameof(IdentityUser)}'. " + $"Ensure that '{nameof(IdentityUser)}' is not an abstract class and has a parameterless constructor."); } } - private IUserEmailStore GetEmailStore() + private IUserEmailStore GetEmailStore() { if(!UserManager.SupportsUserEmail) { throw new NotSupportedException("The default UI requires a user store with email support."); } - return (IUserEmailStore)UserStore; + return (IUserEmailStore)UserStore; } private sealed class InputModel diff --git a/Aaru.Server.New/Components/Account/Pages/RegisterConfirmation.razor b/Aaru.Server.New/Components/Account/Pages/RegisterConfirmation.razor index 6a441c2f..0cdb84be 100644 --- a/Aaru.Server.New/Components/Account/Pages/RegisterConfirmation.razor +++ b/Aaru.Server.New/Components/Account/Pages/RegisterConfirmation.razor @@ -1,13 +1,12 @@ @page "/Account/RegisterConfirmation" @using System.Text -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject UserManager UserManager -@inject IEmailSender EmailSender -@inject NavigationManager NavigationManager -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject IEmailSender EmailSender +@inject NavigationManager NavigationManager +@inject IdentityRedirectManager RedirectManager Register confirmation @@ -47,7 +46,7 @@ else RedirectManager.RedirectTo(""); } - ApplicationUser? user = await UserManager.FindByEmailAsync(Email); + IdentityUser? user = await UserManager.FindByEmailAsync(Email); if(user is null) { diff --git a/Aaru.Server.New/Components/Account/Pages/ResendEmailConfirmation.razor b/Aaru.Server.New/Components/Account/Pages/ResendEmailConfirmation.razor index 722c965f..ceaddde0 100644 --- a/Aaru.Server.New/Components/Account/Pages/ResendEmailConfirmation.razor +++ b/Aaru.Server.New/Components/Account/Pages/ResendEmailConfirmation.razor @@ -2,14 +2,13 @@ @using System.ComponentModel.DataAnnotations @using System.Text @using System.Text.Encodings.Web -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject UserManager UserManager -@inject IEmailSender EmailSender -@inject NavigationManager NavigationManager -@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager +@inject IEmailSender EmailSender +@inject NavigationManager NavigationManager +@inject IdentityRedirectManager RedirectManager Resend email confirmation @@ -40,7 +39,7 @@ private async Task OnValidSubmitAsync() { - ApplicationUser? user = await UserManager.FindByEmailAsync(Input.Email!); + IdentityUser? user = await UserManager.FindByEmailAsync(Input.Email!); if(user is null) { diff --git a/Aaru.Server.New/Components/Account/Pages/ResetPassword.razor b/Aaru.Server.New/Components/Account/Pages/ResetPassword.razor index 5e6582a1..87aa7af0 100644 --- a/Aaru.Server.New/Components/Account/Pages/ResetPassword.razor +++ b/Aaru.Server.New/Components/Account/Pages/ResetPassword.razor @@ -1,12 +1,11 @@ @page "/Account/ResetPassword" @using System.ComponentModel.DataAnnotations @using System.Text -@using Aaru.Server.New.Data @using Microsoft.AspNetCore.Identity @using Microsoft.AspNetCore.WebUtilities -@inject IdentityRedirectManager RedirectManager -@inject UserManager UserManager +@inject IdentityRedirectManager RedirectManager +@inject UserManager UserManager Reset password @@ -64,7 +63,7 @@ private async Task OnValidSubmitAsync() { - ApplicationUser? user = await UserManager.FindByEmailAsync(Input.Email); + IdentityUser? user = await UserManager.FindByEmailAsync(Input.Email); if(user is null) { diff --git a/Aaru.Server.New/Components/Account/Shared/ExternalLoginPicker.razor b/Aaru.Server.New/Components/Account/Shared/ExternalLoginPicker.razor index 0cece230..fa390d2e 100644 --- a/Aaru.Server.New/Components/Account/Shared/ExternalLoginPicker.razor +++ b/Aaru.Server.New/Components/Account/Shared/ExternalLoginPicker.razor @@ -1,8 +1,7 @@ -@using Aaru.Server.New.Data -@using Microsoft.AspNetCore.Authentication +@using Microsoft.AspNetCore.Authentication @using Microsoft.AspNetCore.Identity -@inject SignInManager SignInManager -@inject IdentityRedirectManager RedirectManager +@inject SignInManager SignInManager +@inject IdentityRedirectManager RedirectManager @if(externalLogins.Length == 0) { diff --git a/Aaru.Server.New/Components/Account/Shared/ManageNavMenu.razor b/Aaru.Server.New/Components/Account/Shared/ManageNavMenu.razor index 867c06f0..05a07dcf 100644 --- a/Aaru.Server.New/Components/Account/Shared/ManageNavMenu.razor +++ b/Aaru.Server.New/Components/Account/Shared/ManageNavMenu.razor @@ -1,6 +1,5 @@ -@using Aaru.Server.New.Data -@using Microsoft.AspNetCore.Identity -@inject SignInManager SignInManager +@using Microsoft.AspNetCore.Identity +@inject SignInManager SignInManager