 b24beb3154
			
		
	
	
		b24beb3154
		
	
	
	
	
		
			
			This commit integrates ASP.NET Core Identity into the application to enable user registration, login, and management. This lays the groundwork for securing data per user.
**Key Changes:**
*   **DbContext Configuration:**
    *   Modified `ApplicationDbContext.cs` to inherit from `IdentityDbContext<IdentityUser>`.
    *   Removed an unnecessary `using` statement from `ApplicationDbContext.cs`.
*   **Program.cs Setup:**
    *   Configured `AddDefaultIdentity<IdentityUser>` with `AddEntityFrameworkStores<ApplicationDbContext>()` to register Identity services.
    *   Ensured correct ordering of `UseAuthentication()` and `UseAuthorization()` middleware.
    *   Added `app.MapRazorPages()` to enable the Identity UI pages.
    *   Verified core package versions in `turf_tasker.csproj` for consistency across EF Core and Identity components (`8.0.6`).
*   **Identity UI:**
    *   Scaffolded ASP.NET Core Identity pages (Login, Register, Manage, etc.) to provide the user interface for authentication.
    *   Added a `_LoginPartial.cshtml` partial view to the `Views/Shared` folder.
    *   Rendered `_LoginPartial` in `Views/Shared/_Layout.cshtml` to display login/register/logout links in the navigation bar.
*   **Migrations:**
    *   Created and applied a new migration (`AddIdentitySchema`) to create the necessary ASP.NET Core Identity database tables (e.g., `AspNetUsers`, `AspNetRoles`).
		
	
			
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| @page
 | |
| @using Microsoft.AspNetCore.Http.Features
 | |
| @model TwoFactorAuthenticationModel
 | |
| @{
 | |
|     ViewData["Title"] = "Two-factor authentication (2FA)";
 | |
|     ViewData["ActivePage"] = ManageNavPages.TwoFactorAuthentication;
 | |
| }
 | |
| 
 | |
| <partial name="_StatusMessage" for="StatusMessage" />
 | |
| <h3>@ViewData["Title"]</h3>
 | |
| @{
 | |
|     var consentFeature = HttpContext.Features.Get<ITrackingConsentFeature>();
 | |
|     @if (consentFeature?.CanTrack ?? true)
 | |
|     {
 | |
|         @if (Model.Is2faEnabled)
 | |
|         {
 | |
|             if (Model.RecoveryCodesLeft == 0)
 | |
|             {
 | |
|                 <div class="alert alert-danger">
 | |
|                     <strong>You have no recovery codes left.</strong>
 | |
|                     <p>You must <a asp-page="./GenerateRecoveryCodes">generate a new set of recovery codes</a> before you can log in with a recovery code.</p>
 | |
|                 </div>
 | |
|             }
 | |
|             else if (Model.RecoveryCodesLeft == 1)
 | |
|             {
 | |
|                 <div class="alert alert-danger">
 | |
|                     <strong>You have 1 recovery code left.</strong>
 | |
|                     <p>You can <a asp-page="./GenerateRecoveryCodes">generate a new set of recovery codes</a>.</p>
 | |
|                 </div>
 | |
|             }
 | |
|             else if (Model.RecoveryCodesLeft <= 3)
 | |
|             {
 | |
|                 <div class="alert alert-warning">
 | |
|                     <strong>You have @Model.RecoveryCodesLeft recovery codes left.</strong>
 | |
|                     <p>You should <a asp-page="./GenerateRecoveryCodes">generate a new set of recovery codes</a>.</p>
 | |
|                 </div>
 | |
|             }
 | |
| 
 | |
|             if (Model.IsMachineRemembered)
 | |
|             {
 | |
|                 <form method="post" style="display: inline-block">
 | |
|                     <button type="submit" class="btn btn-primary">Forget this browser</button>
 | |
|                 </form>
 | |
|             }
 | |
|             <a asp-page="./Disable2fa" class="btn btn-primary">Disable 2FA</a>
 | |
|             <a asp-page="./GenerateRecoveryCodes" class="btn btn-primary">Reset recovery codes</a>
 | |
|         }
 | |
| 
 | |
|         <h4>Authenticator app</h4>
 | |
|         @if (!Model.HasAuthenticator)
 | |
|         {
 | |
|             <a id="enable-authenticator" asp-page="./EnableAuthenticator" class="btn btn-primary">Add authenticator app</a>
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             <a id="enable-authenticator" asp-page="./EnableAuthenticator" class="btn btn-primary">Set up authenticator app</a>
 | |
|             <a id="reset-authenticator" asp-page="./ResetAuthenticator" class="btn btn-primary">Reset authenticator app</a>
 | |
|         }
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         <div class="alert alert-danger">
 | |
|             <strong>Privacy and cookie policy have not been accepted.</strong>
 | |
|             <p>You must accept the policy before you can enable two factor authentication.</p>
 | |
|         </div>
 | |
|     }
 | |
| }
 | |
| 
 | |
| @section Scripts {
 | |
|     <partial name="_ValidationScriptsPartial" />
 | |
| }
 |