mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2025-08-18 18:24:56 +02:00
.config
.run
.workdir
Agent
Common
Controller
Docker
Utils
Web
Phantom.Web
Layout
Pages
Shared
InstanceAddOrEditForm.razor
InstanceCommandInput.razor
InstanceLog.razor
InstanceLog.razor.css
InstanceLog.razor.js
InstanceStatusText.razor
InstanceStopDialog.razor
UserAddDialog.razor
UserDeleteDialog.razor
UserEditDialogBase.cs
UserRolesDialog.razor
Utils
wwwroot
App.razor
Phantom.Web.csproj
Program.cs
Variables.cs
WebKey.cs
WebLauncher.cs
_Imports.razor
appsettings.json
Phantom.Web.Bootstrap
Phantom.Web.Components
Phantom.Web.Services
.dockerignore
.gitattributes
.gitignore
AddMigration.bat
AddMigration.sh
Directory.Build.props
Directory.Build.targets
Dockerfile
LICENSE
Packages.props
PhantomPanel.sln
README.md
global.json
77 lines
1.9 KiB
C#
77 lines
1.9 KiB
C#
using Microsoft.AspNetCore.Components;
|
|
using Microsoft.JSInterop;
|
|
using Phantom.Common.Data.Web.Users;
|
|
using Phantom.Web.Components;
|
|
using Phantom.Web.Components.Forms;
|
|
using Phantom.Web.Services.Authentication;
|
|
|
|
namespace Phantom.Web.Shared;
|
|
|
|
public abstract class UserEditDialogBase : PhantomComponent {
|
|
[Inject]
|
|
public IJSRuntime Js { get; set; } = null!;
|
|
|
|
[Parameter, EditorRequired]
|
|
public string ModalId { get; set; } = string.Empty;
|
|
|
|
[Parameter]
|
|
public EventCallback<UserInfo> UserModified { get; set; }
|
|
|
|
protected readonly FormButtonSubmit.SubmitModel SubmitModel = new ();
|
|
|
|
private UserInfo? EditedUser { get; set; } = null;
|
|
protected string EditedUserName { get; private set; } = string.Empty;
|
|
|
|
internal async Task Show(UserInfo user) {
|
|
EditedUser = user;
|
|
EditedUserName = user.Name;
|
|
await BeforeShown(user);
|
|
|
|
StateHasChanged();
|
|
await Js.InvokeVoidAsync("showModal", ModalId);
|
|
}
|
|
|
|
protected virtual Task BeforeShown(UserInfo user) {
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
protected void OnClosed() {
|
|
EditedUser = null;
|
|
}
|
|
|
|
protected async Task Submit() {
|
|
await SubmitModel.StartSubmitting();
|
|
|
|
if (EditedUser == null) {
|
|
SubmitModel.StopSubmitting("Invalid user.");
|
|
return;
|
|
}
|
|
|
|
switch (await DoEdit(await GetAuthenticatedUser(), EditedUser)) {
|
|
case null:
|
|
break;
|
|
|
|
case UserActionFailure.NotAuthorized:
|
|
SubmitModel.StopSubmitting("You do not have permission to edit users.");
|
|
break;
|
|
|
|
default:
|
|
SubmitModel.StopSubmitting("Unknown error.");
|
|
break;
|
|
}
|
|
}
|
|
|
|
protected abstract Task<UserActionFailure?> DoEdit(AuthenticatedUser? authenticatedUser, UserInfo editedUser);
|
|
|
|
protected async Task OnEditSuccess() {
|
|
await UserModified.InvokeAsync(EditedUser);
|
|
await Js.InvokeVoidAsync("closeModal", ModalId);
|
|
SubmitModel.StopSubmitting();
|
|
OnClosed();
|
|
}
|
|
|
|
protected void OnEditFailure(string message) {
|
|
SubmitModel.StopSubmitting(message);
|
|
}
|
|
}
|