Добавьте файлы проекта.
This commit is contained in:
67
PlaylistShared.Pwa/Pages/Register.razor
Normal file
67
PlaylistShared.Pwa/Pages/Register.razor
Normal file
@@ -0,0 +1,67 @@
|
||||
@page "/register"
|
||||
@inject HttpClient Http
|
||||
@inject AuthStateProvider AuthProvider
|
||||
@inject NavigationManager Navigation
|
||||
@inject ISnackbar Snackbar
|
||||
|
||||
<MudContainer MaxWidth="MaxWidth.Small" Class="mt-16">
|
||||
<MudCard>
|
||||
<MudCardContent Class="text-center">
|
||||
<MudText Typo="Typo.h5" Class="mb-4">Регистрация</MudText>
|
||||
|
||||
<MudTextField @bind-Value="_model.Username" Label="Имя пользователя" Variant="Variant.Outlined" FullWidth="true" Class="mb-3" />
|
||||
<MudTextField @bind-Value="_model.Email" Label="Email" Variant="Variant.Outlined" FullWidth="true" Class="mb-3" />
|
||||
<MudTextField @bind-Value="_model.Password" Label="Пароль" Variant="Variant.Outlined" FullWidth="true" Type="InputType.Password" />
|
||||
<MudTextField @bind-Value="_model.ConfirmPassword" Label="Подтверждение пароля" Variant="Variant.Outlined" FullWidth="true" Type="InputType.Password" />
|
||||
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="OnRegister" FullWidth="true" Class="mt-4">
|
||||
Зарегистрироваться
|
||||
</MudButton>
|
||||
|
||||
<MudText Class="mt-4" Typo="Typo.body2">
|
||||
Уже есть аккаунт? <MudLink Href="/login">Войти</MudLink>
|
||||
</MudText>
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
</MudContainer>
|
||||
|
||||
@code {
|
||||
private RegisterModel _model = new();
|
||||
|
||||
private async Task OnRegister()
|
||||
{
|
||||
if (_model.Password != _model.ConfirmPassword)
|
||||
{
|
||||
Snackbar.Add("Пароли не совпадают", Severity.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
var response = await Http.PostAsJsonAsync("/api/account/register", _model);
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
var result = await response.Content.ReadFromJsonAsync<ApiResponse<LoginResponse>>();
|
||||
if (result?.Success == true)
|
||||
{
|
||||
await AuthProvider.MarkUserAsAuthenticated(result.Data.Token, result.Data.RefreshToken);
|
||||
Navigation.NavigateTo("/");
|
||||
}
|
||||
else
|
||||
{
|
||||
Snackbar.Add(result?.Error?.Message ?? "Ошибка регистрации", Severity.Error);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var error = await response.Content.ReadFromJsonAsync<ApiResponse<object>>();
|
||||
Snackbar.Add(error?.Error?.Message ?? "Ошибка регистрации", Severity.Error);
|
||||
}
|
||||
}
|
||||
|
||||
public class RegisterModel
|
||||
{
|
||||
public string Username { get; set; }
|
||||
public string Email { get; set; }
|
||||
public string Password { get; set; }
|
||||
public string ConfirmPassword { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user