Ajout Register.razor. Désactivation validation formulaire. Pas d'appel au service lors de l'action Register
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
<div class="d-flex justify-content-center align-items-center">
|
||||
<div class="col-md-4 p-5 shadow-sm border rounded-3">
|
||||
<h2 class="text-center mb-4 text-primary">Login Form</h2>
|
||||
<EditForm Model="userLogin" OnValidSubmit="Authenticate">
|
||||
<EditForm Model="userLogin" OnValidSubmit="Authenticate" FormName="LoginForm">
|
||||
<DataAnnotationsValidator />
|
||||
<div class="mb-3">
|
||||
<label for="email">User Name</label>
|
||||
@@ -50,6 +50,8 @@
|
||||
|
||||
private async Task Authenticate()
|
||||
{
|
||||
Console.WriteLine("***");
|
||||
Console.WriteLine(userLogin.UserName);
|
||||
var result = await AuthService.Login(userLogin.UserName, userLogin.Password);
|
||||
if (result.Success)
|
||||
{
|
||||
|
||||
57
BlazorPolicyAuth/Components/Pages/Account/Register.razor
Normal file
57
BlazorPolicyAuth/Components/Pages/Account/Register.razor
Normal file
@@ -0,0 +1,57 @@
|
||||
@page "/register"
|
||||
@using BlazorPolicyAuth.Models.ViewModels
|
||||
|
||||
@inject AuthenticationStateProvider AuthenticationStateProvider
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject IAuthService AuthService
|
||||
|
||||
<title>Register</title>
|
||||
|
||||
<EditForm Model="user" OnValidSubmit="HandleRegistration" FormName="registerForm">
|
||||
<DataAnnotationsValidator/>
|
||||
<div class="d-flex justify-content-center align-items-center">
|
||||
<div class="col-md-4 p-5 shadow-sm border rounded-3">
|
||||
<h2 class="text-center mb-4 text-primary">Register Form</h2>
|
||||
<div class="mb-3">
|
||||
<label for="email" class="form-label">Email address</label>
|
||||
<InputText type="email" @bind-Value="user.Email" class="form-control border border-primary" id="email" aria-describedby="email"/>
|
||||
<ValidationMessage For="@(() => user.Email)"/>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="password" class="form-label">Password</label>
|
||||
<InputText type="password" @bind-Value="user.Password" class="form-control border border-primary" id="password" aria-describedby="password"/>
|
||||
<ValidationMessage For="@(() => user.Password)"/>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="confirmPassword" class="form-label">Confirm password</label>
|
||||
<InputText type="password" @bind-Value="user.ConfirmPassword" class="form-control border border-primary" id="confirmPassword" aria-describedby="confirmPassword"/>
|
||||
<ValidationMessage For="@(() => user.ConfirmPassword)"/>
|
||||
</div>
|
||||
<div class="d-grid">
|
||||
<button class="btn btn-primary" type="submit">Register</button>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<p class="mb-0 text-center">You have an account? <a href="login" class="text-primary fw-bold">Sign In</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
|
||||
<div class="text-danger">
|
||||
<span>@errorMessage</span>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
UserRegister user = new();
|
||||
|
||||
private string message = string.Empty;
|
||||
private string messageCssClass = string.Empty;
|
||||
private string errorMessage = string.Empty;
|
||||
|
||||
async void HandleRegistration()
|
||||
{
|
||||
var result = await AuthService.Register(user.Email, user.Password);
|
||||
message = result.Message;
|
||||
messageCssClass = result.Success ? "text-success" : "text-danger";
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,9 @@ namespace BlazorPolicyAuth.Models.ViewModels;
|
||||
|
||||
public class UserLogin
|
||||
{
|
||||
[Required, EmailAddress]
|
||||
//[Required, EmailAddress]
|
||||
//[Required]
|
||||
public string UserName { get; set; } = string.Empty;
|
||||
[Required]
|
||||
//[Required]
|
||||
public string Password { get; set; }
|
||||
}
|
||||
@@ -4,9 +4,9 @@ namespace BlazorPolicyAuth.Models.ViewModels
|
||||
{
|
||||
public class UserRegister
|
||||
{
|
||||
[Required, EmailAddress]
|
||||
//[Required, EmailAddress]
|
||||
public string Email { get; set; } = string.Empty;
|
||||
[Required, StringLength(100, MinimumLength = 5)]
|
||||
//[Required, StringLength(100, MinimumLength = 5)]
|
||||
public string Password { get; set; } = string.Empty;
|
||||
[Compare("Password", ErrorMessage = "The password do not match.")]
|
||||
public string ConfirmPassword { get; set; } = string.Empty;
|
||||
|
||||
@@ -25,17 +25,20 @@ public class AuthService : IAuthService
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
}
|
||||
|
||||
public async Task<ServiceResponse<int>> Register(UserAccount user, string password)
|
||||
public async Task<ServiceResponse<int>> Register ( string userName, string password)
|
||||
{
|
||||
if (await UserExists(user.UserName))
|
||||
if (await UserExists(userName))
|
||||
{
|
||||
return new ServiceResponse<int> { Success = false, Message = "User already exist." };
|
||||
}
|
||||
|
||||
CreatePasswordHash(password, out byte[] passwordHash, out byte[] passwordSalt);
|
||||
|
||||
user.PasswordHash = passwordHash;
|
||||
user.PasswordSalt = passwordSalt;
|
||||
var user = new UserAccount
|
||||
{
|
||||
UserName = userName,
|
||||
PasswordHash = passwordHash,
|
||||
PasswordSalt = passwordSalt
|
||||
};
|
||||
|
||||
_context.UserAccounts.Add(user);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace BlazorPolicyAuth.Services.AuthService;
|
||||
|
||||
public interface IAuthService
|
||||
{
|
||||
Task<ServiceResponse<int>> Register(UserAccount user, string password);
|
||||
Task<ServiceResponse<int>> Register(string userName, string password);
|
||||
Task<bool> UserExists(string email);
|
||||
Task<ServiceResponse<string>> Login(string email, string password);
|
||||
Task<ServiceResponse<bool>> ChangePassword(int userId, string newPassword);
|
||||
|
||||
Reference in New Issue
Block a user