@page "/admin/users"
@using MoonCore.Blazor.Tailwind.Attributes
@using MoonCore.Blazor.Tailwind.Forms.Components
@using MoonCore.Helpers
@using MoonCore.Models
@using Moonlight.Shared.Http.Requests.Admin.Users
@using Moonlight.Shared.Http.Responses.Admin.Users
@attribute [RequirePermission("admin.users.read")]
@inject HttpApiClient HttpApiClient
@code
{
private void OnConfigure(CrudOptions crudOptions)
{
crudOptions.ItemName = "User";
crudOptions.ItemLoader = async (page, pageSize)
=> await HttpApiClient.GetJson>($"api/admin/users?page={page}&pageSize={pageSize}");
crudOptions.SingleItemLoader = async id
=> await HttpApiClient.GetJson($"api/admin/users/{id}");
crudOptions.QueryIdentifier = item => item.Id.ToString(); //TODO: Make this default
crudOptions.OnCreate = async request
=> await HttpApiClient.Post("api/admin/users", request);
crudOptions.OnUpdate = async (item, request)
=> await HttpApiClient.Patch($"api/admin/users/{item.Id}", request);
crudOptions.OnDelete = async item
=> await HttpApiClient.Delete($"api/admin/users/{item.Id}");
crudOptions.OnConfigureCreate = configuration =>
{
configuration.WithField(x => x.Username);
configuration.WithField(x => x.Email);
configuration.WithField(x => x.Password)
.WithComponent(component => component.Type = "password");
configuration.WithField(x => x.PermissionsJson)
.WithComponent();
};
crudOptions.OnConfigureUpdate = (_, configuration) =>
{
configuration.WithField(x => x.Username);
configuration.WithField(x => x.Email);
configuration.WithField(x => x.Password, fieldConfiguration =>
{
fieldConfiguration.Description = "Optional. Specify if you want to change this accounts password";
})
.WithComponent(component => component.Type = "password");
};
}
}