@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"); }; } }