@using Oqtane.Services @using Oqtane.Modules @using Oqtane.Models @using Oqtane.Security @using Oqtane.Shared @namespace Oqtane.Modules.Controls @inherits ModuleBase @inject IRoleService RoleService @inject IUserService UserService @if (roles != null) {
@foreach (PermissionString permission in permissions) { } @foreach (Role role in roles) { @foreach (PermissionString permission in permissions) { var p = permission; } }
Role@permission.PermissionName @EntityName
@role.Name
@if (@users.Count != 0) { @foreach (PermissionString permission in permissions) { } @foreach (User user in users) { string userid = "[" + user.UserId.ToString() + "]"; @foreach (PermissionString permission in permissions) { var p = permission; } }
User@permission.PermissionName @EntityName
@user.DisplayName
}

} @code { [Parameter] public string EntityName { get; set; } [Parameter] public string Permissions { get; set; } string permissionnames = ""; List roles; List permissions = new List(); List users = new List(); string username = ""; string message = ""; protected override async Task OnInitializedAsync() { permissionnames = PageState.ModuleDefinitions.Find(item => item.ModuleDefinitionName == ModuleState.ModuleDefinitionName).Permissions; if (string.IsNullOrEmpty(permissionnames)) { permissionnames = "View,Edit"; } roles = await RoleService.GetRolesAsync(ModuleState.SiteId); roles.Insert(0, new Role { Name = Constants.AllUsersRole }); foreach (string permissionname in permissionnames.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { permissions.Add(new PermissionString { PermissionName = permissionname, Permissions = "" }); } foreach (PermissionString permissionstring in UserSecurity.GetPermissionStrings(Permissions)) { if (permissions.Find(item => item.PermissionName == permissionstring.PermissionName) != null) { permissions[permissions.FindIndex(item => item.PermissionName == permissionstring.PermissionName)].Permissions = permissionstring.Permissions; } if (permissionstring.Permissions.Contains("[")) { foreach (string user in permissionstring.Permissions.Split(new char[] { '[' }, StringSplitOptions.RemoveEmptyEntries)) { if (user.Contains("]")) { int userid = int.Parse(user.Substring(0, user.IndexOf("]"))); if (users.Where(item => item.UserId == userid).FirstOrDefault() == null) { users.Add(await UserService.GetUserAsync(userid, ModuleState.SiteId)); } } } } } } private bool? GetPermissionValue(string Permissions, string SecurityKey) { if ((";" + Permissions + ";").Contains(";" + "!" + SecurityKey + ";")) { return false; // deny permission } else { if ((";" + Permissions + ";").Contains(";" + SecurityKey + ";")) { return true; // grant permission } else { return null; // not specified } } } private bool GetPermissionDisabled(string RoleName) { if (RoleName == Constants.AdminRole) { return true; } else { return false; } } private async Task AddUser() { if (users.Where(item => item.Username == username).FirstOrDefault() == null) { try { User user = await UserService.GetUserAsync(username, ModuleState.SiteId); if (user != null) { users.Add(user); } } catch { message = "Username Does Not Exist"; } } username = ""; } private void PermissionChanged(bool? Value, string PermissionName, string SecurityId) { bool? selected = Value; PermissionString permission = permissions.Find(item => item.PermissionName == PermissionName); if (permission != null) { List ids = permission.Permissions.Split(';').ToList(); ids.Remove(SecurityId); // remove grant permission ids.Remove("!" + SecurityId); // remove deny permission switch (selected) { case true: ids.Add(SecurityId); // add grant permission break; case false: ids.Add("!" + SecurityId); // add deny permission break; case null: break; // permission not specified } permissions[permissions.FindIndex(item => item.PermissionName == PermissionName)].Permissions = string.Join(";", ids.ToArray()); } } public string GetPermissions() { return UserSecurity.SetPermissionStrings(permissions); } }