1
0
mirror of https://github.com/chylex/Minecraft-Phantom-Panel.git synced 2024-10-17 03:42:50 +02:00
Minecraft-Phantom-Panel/Web/Phantom.Web/Shared/UserAddDialog.razor

80 lines
2.3 KiB
Plaintext

@using Phantom.Common.Data.Web.Users
@using Phantom.Common.Data.Web.Users.CreateUserResults
@using Phantom.Utils.Result
@using Phantom.Web.Services.Users
@using System.ComponentModel.DataAnnotations
@inherits Phantom.Web.Components.PhantomComponent
@inject IJSRuntime Js;
@inject UserManager UserManager;
<Form Model="form" OnSubmit="AddUser">
<Modal Id="@ModalId" TitleText="Add User">
<Body>
<div class="row">
<div class="mb-3">
<FormTextInput Id="account-username" Label="Username" @bind-Value="form.Username" autocomplete="off" />
</div>
</div>
<div class="row">
<div class="mb-3">
<FormTextInput Id="account-password" Label="Password" Type="FormTextInputType.Password" autocomplete="new-password" @bind-Value="form.Password" />
</div>
</div>
</Body>
<Footer>
<FormSubmitError />
<FormButtonSubmit Label="Add User" class="btn btn-primary" />
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
</Footer>
</Modal>
</Form>
@code {
[Parameter, EditorRequired]
public string ModalId { get; set; } = string.Empty;
[Parameter]
public EventCallback<UserInfo> UserAdded { get; set; }
private readonly AddUserFormModel form = new ();
private sealed class AddUserFormModel : FormModel {
[Required]
public string Username { get; set; } = string.Empty;
[Required]
public string Password { get; set; } = string.Empty;
}
private async Task AddUser(EditContext context) {
await form.SubmitModel.StartSubmitting();
var result = await UserManager.Create(await GetAuthenticatedUser(), form.Username, form.Password, CancellationToken);
switch (result.Variant()) {
case Ok<CreateUserResult>(Success success):
await UserAdded.InvokeAsync(success.User);
await Js.InvokeVoidAsync("closeModal", ModalId);
form.SubmitModel.StopSubmitting();
break;
case Ok<CreateUserResult>(CreationFailed fail):
form.SubmitModel.StopSubmitting(fail.Error.ToSentences("\n"));
break;
case Err<UserActionFailure>(UserActionFailure.NotAuthorized):
form.SubmitModel.StopSubmitting("You do not have permission to add users.");
break;
default:
form.SubmitModel.StopSubmitting("Unknown error.");
break;
}
}
}