@rendermode InteractiveServer @using BlazorStrap @using BlazorStrap.Shared.Components.Modal @using static Microsoft.AspNetCore.Components.Web.RenderMode @using BlazorStrap.V5 @using CurrieTechnologies.Razor.SweetAlert2 @using HopFrame.Database.Models @using HopFrame.Security.Services @using HopFrame.Web.Model @if (_isEdit) { Edit group } else { Add group }
Name @if (!_isEdit) { group. } else { }
@if (_isEdit) {
Created at
}
Description
Default group
Inherits from @foreach (var group in _group.Permissions.Where(g => g.PermissionName.StartsWith("group."))) { @group.PermissionName.Replace("group.", "") }
@foreach (var group in _allGroups) { @if (_group.Permissions.All(g => g.PermissionName != group.Name) && group.Name != _group.Name) { } } Add
Permissions @foreach (var perm in _group.Permissions.Where(perm => !perm.PermissionName.StartsWith("group."))) { @perm.PermissionName }
Add
Cancel Save
@inject IPermissionService Permissions @inject SweetAlertService Alerts @code { [Parameter] public Func ReloadPage { get; set; } private PermissionGroupAdd _group; private BSModalBase _modal; private string _permissionToAdd; private string _groupToAdd; private IList _allGroups; private bool _isEdit; public async Task ShowAsync(PermissionGroup group = null) { _allGroups = await Permissions.GetPermissionGroups(); if (group is not null) { _group = new PermissionGroupAdd { CreatedAt = group.CreatedAt, Description = group.Description, Name = group.Name, IsDefaultGroup = group.IsDefaultGroup, Permissions = group.Permissions }; _isEdit = true; } else { _group = new PermissionGroupAdd { Permissions = new List(), IsDefaultGroup = false }; _isEdit = false; } await _modal.ShowAsync(); } private async Task AddPermission() { if (string.IsNullOrWhiteSpace(_permissionToAdd)) { await Alerts.FireAsync(new SweetAlertOptions { Title = "Enter a permission name!", Icon = SweetAlertIcon.Error, ShowConfirmButton = true }); return; } if (_isEdit) { await Permissions.AddPermission(_group, _permissionToAdd); } _group.Permissions.Add(new Permission { PermissionName = _permissionToAdd }); _permissionToAdd = null; } private async Task RemovePermission(Permission permission) { if (_isEdit) { var perm = await Permissions.GetPermission(permission.PermissionName, _group); await Permissions.RemovePermission(perm); } _group.Permissions.Remove(permission); } private async Task AddInheritanceGroup() { if (string.IsNullOrWhiteSpace(_groupToAdd)) { await Alerts.FireAsync(new SweetAlertOptions { Title = "Select a group!", Icon = SweetAlertIcon.Error, ShowConfirmButton = true }); return; } if (_isEdit) { await Permissions.AddPermission(_group, _groupToAdd); } _group.Permissions.Add(new Permission { PermissionName = _groupToAdd }); _groupToAdd = null; } private async Task AddGroup() { if (_isEdit) { await Permissions.EditPermissionGroup(_group); if (ReloadPage is not null) await ReloadPage.Invoke(); await Alerts.FireAsync(new SweetAlertOptions { Title = "Group edited!", Icon = SweetAlertIcon.Success, Timer = 1500, ShowConfirmButton = false }); return; } if (_allGroups.Any(group => group.Name == _group.Name)) { await Alerts.FireAsync(new SweetAlertOptions { Title = "Something went wrong!", Text = "This group already exists!", Icon = SweetAlertIcon.Error, ShowConfirmButton = false, Timer = 1500 }); return; } var dbGroup = await Permissions.CreatePermissionGroup("group." + _group.GroupName, _group.IsDefaultGroup, _group.Description); foreach (var permission in _group.Permissions) { await Permissions.AddPermission(dbGroup, permission.PermissionName); } if (ReloadPage is not null) await ReloadPage.Invoke(); await Alerts.FireAsync(new SweetAlertOptions { Title = "Group added!", Icon = SweetAlertIcon.Success, Timer = 1500, ShowConfirmButton = false }); } }