@page "/account/register" @layout AuthenticationLayout @using Indotalent.Shared.Consts @using Microsoft.JSInterop @inject IJSRuntime JSRuntime @inject ISnackbar Snackbar @inject NavigationManager Navigation @inject IConfiguration Configuration Sign Up - @GlobalConsts.AppInitial
@code { private MudForm form = default!; private bool success; private bool isProcessing; private bool showPassword; private RegisterModel model = new(); private class RegisterModel { public string FullName { get; set; } = ""; public string Email { get; set; } = ""; public string Password { get; set; } = ""; } private async Task ValidateForm(EditContext context) { return await Task.FromResult(true); } private async Task HandleRegister() { await form.Validate(); if (!success) return; isProcessing = true; StateHasChanged(); var result = await JSRuntime.InvokeAsync("apiAccountRegister", model.FullName, model.Email, model.Password); if (result.Status == 200) { var requireConfirmation = Configuration.GetValue("IdentitySettings:SignIn:RequireConfirmedAccount"); if (requireConfirmation) { Snackbar.Add("Registration successful! Please check your email to confirm your account.", Severity.Info); } else { Snackbar.Add("Registration successful! You can now sign in.", Severity.Success); } await Task.Delay(500); Navigation.NavigateTo("/account/login"); } else { Snackbar.Add(result.Title ?? "Registration failed", Severity.Error); } isProcessing = false; StateHasChanged(); } private class ApiJSRuntimeResponse { public int? Status { get; set; } public string? Title { get; set; } } }