@namespace Oqtane.Modules.Controls @inherits ModuleBase @inject IRoleService RoleService @inject IUserService UserService @if (_permissions != 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 PermissionNames { get; set; } [Parameter] public string Permissions { get; set; } string _permissionnames = ""; List _roles; List _permissions; List _users = new List(); string _username = ""; string _message = ""; protected override async Task OnInitializedAsync() { if (string.IsNullOrEmpty(PermissionNames)) { _permissionnames = "View,Edit"; } else { _permissionnames = PermissionNames; } _roles = await RoleService.GetRolesAsync(ModuleState.SiteId); _roles.Insert(0, new Role { Name = Constants.AllUsersRole }); if (!string.IsNullOrEmpty(Permissions)) { _permissions = new List(); 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() { ValidatePermissions(); return UserSecurity.SetPermissionStrings(_permissions); } private void ValidatePermissions() { PermissionString permission; for (int i = 0; i < _permissions.Count; i++) { permission = _permissions[i]; List ids = permission.Permissions.Split(';').ToList(); ids.Remove("!" + Constants.AllUsersRole); // remove deny all users ids.Remove("!" + Constants.RegisteredRole); // remove deny registered users permission.Permissions = string.Join(";", ids.ToArray()); _permissions[i] = permission; } } }