/// <summary> /// Gets the permission items as a dictionary. /// </summary> /// <returns>The permission items.</returns> public IReadOnlyList <PermissionItemStatus> GetItems() { if (items != null) { return(items); } var temp = new Dictionary <string, List <string> >(); foreach (var item in GroupPermissions) { var perms = item.GetPermissionList(); foreach (var p in perms) { if (string.IsNullOrWhiteSpace(p)) { continue; } var key = p.Trim(); if (!temp.ContainsKey(key)) { temp[key] = new List <string>(); } temp[key].Add(item.TargetId); } } if (items != null) { return(items); } var col = UserPermission?.GetPermissionList()?.ToList() ?? new List <string>(); if (ClientPermission != null) { col.AddRange(ClientPermission.GetPermissionList()); } items = col.Distinct().Select(p => { if (string.IsNullOrWhiteSpace(p)) { return(null); } var key = p.Trim(); temp.TryGetValue(key, out var g); return(new PermissionItemStatus(key, true, g)); }).Where(p => p != null).ToList().AsReadOnly(); return(items); }
/// <summary> /// 保存配置到服务器,先保存到本地,再保存到数据库 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void barBtnItem_saveServer_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { //增加权限验证 20171011 bool blnHaveRight = ClientPermission.Authorize("SaveAlarmConfigInServer"); if (!blnHaveRight) { Sys.Safety.ClientFramework.View.Message.DevMessageBox.Show(Sys.Safety.ClientFramework.View.Message.DevMessageBox.MessageType.Information, "当前用户无操作权限!"); return; } if (!InvalidGridDataBeforeSave()) { return; } //先保存报警配置到本地文件 if (!ClientAlarmConfig.SaveConfig(iFlag, gridCtrl.DataSource as List <ClientAlarmItems>)) { Sys.Safety.ClientFramework.View.Message.DevMessageBox.Show(Sys.Safety.ClientFramework.View.Message.DevMessageBox.MessageType.Information, "保存报警设置到服务器失败"); return; } ClientAlarmConfigCache.IsUseAlarmConfig = this.chk_IsUseAlarmCfg.Checked; ClientAlarmConfigCache.IsUsePopupAlarm = this.chkIsUsePopupAlarm.Checked; ClientAlarmConfig.SaveOtherAlarmSwitch(); ClientAlarmConfig.LoadConfigToCache(); //再保存到服务器数据库 bool b = ClientAlarmConfig.SaveConfigToServer(); //性质、种类、测点发生改变时 bIsChangeType = false; bIsChangeAlarm = false; if (b) { Sys.Safety.ClientFramework.View.Message.DevMessageBox.Show(Sys.Safety.ClientFramework.View.Message.DevMessageBox.MessageType.Information, "保存报警设置到服务器成功"); } else { Sys.Safety.ClientFramework.View.Message.DevMessageBox.Show(Sys.Safety.ClientFramework.View.Message.DevMessageBox.MessageType.Information, "保存报警设置到服务器失败"); } } catch (Exception ex) { LogHelper.Error(ex); } }
public ClientPermission LoadClientPermission(Client client) { //TODO - use ConfigurationClass for loading things var p = new ClientPermission { Groups = new List<string>(), AllowedPermissions = new List<string>(), DeniedPermissions = new List<string>() }; var preAllowList = new List<string>(); var preDisallowedList = new List<string>(); var perm = _permissionXml.Descendants("Users").Descendants("User").Where( n => (string) n.Attribute("Name") == client.Username.ToLower()).FirstOrDefault(); //default group we grab the first with default attrbute defined var gperm = _permissionXml.Descendants("Groups").Descendants("Group").Where( n => (string) n.Attribute("IsDefault") == "true").FirstOrDefault(); if (gperm == null) { //no default defined _server.Logger.Log(Logger.LogLevel.Warning, "Required default group is not defined in permissions file. Add IsDefault=\"true\" to a group"); return null; } if (perm != null) { if (perm.Attribute("Groups") == null) { p.Groups.Add((string) gperm.Attribute("Name")); } else { p.Groups.AddRange(perm.Attribute("Groups").Value.Split(',')); } p.Prefix = perm.Element("Prefix") == null ? string.Empty : perm.Element("Prefix").Value; p.Suffix = perm.Element("Suffix") == null ? string.Empty : perm.Element("Suffix").Value; p.CanBuild = bool.Parse(perm.Element("CanBuild").Value); foreach (var element in perm.Element("Permission").Elements()) { if (element.Name == "Allowed") { preAllowList.Add(element.Value); } if (element.Name == "Disallowed") { preDisallowedList.Add(element.Value); } } if (p.Groups != null) { foreach ( var el in p.Groups.Select( s => _permissionXml.Descendants("Groups").Descendants("Group").Where( n => (string) n.Attribute("Name") == s.ToLower())).SelectMany(groupPerm => groupPerm) ) { if (string.IsNullOrEmpty(p.Prefix)) { p.Prefix = el.Element("Prefix") == null ? string.Empty : el.Element("Prefix").Value; } if (string.IsNullOrEmpty(p.Suffix)) { p.Suffix = el.Element("Suffix") == null ? string.Empty : el.Element("Suffix").Value; } if (p.CanBuild == null) { p.CanBuild = bool.Parse(el.Element("CanBuild") == null ? null : el.Element("Suffix").Value); } foreach (var element in el.Element("Permission").Elements()) { if (element.Name == "Allowed") { preAllowList.Add(element.Value); } if (element.Name == "Denied") { preDisallowedList.Add(element.Value); } } //TODO - Inheritance and Dictionise this } } } else { p.Groups.Add((string) gperm.Attribute("Name")); p.Prefix = gperm.Element("Prefix") == null ? string.Empty : gperm.Element("Prefix").Value; p.Suffix = gperm.Element("Suffix") == null ? string.Empty : gperm.Element("Suffix").Value; bool bCanBuild; bool.TryParse((string) gperm.Element("CanBuild"), out bCanBuild); p.CanBuild = bCanBuild; if (gperm.Element("Permission") != null) { foreach (var element in gperm.Element("Permission").Elements()) { if (element.Name == "Allowed") { preAllowList.Add(element.Value); } if (element.Name == "Denied") { preDisallowedList.Add(element.Value); } } } } p.AllowedPermissions = RemoveDuplicates(preAllowList); p.DeniedPermissions = RemoveDuplicates(preDisallowedList); return p; }
public ClientPermission LoadClientPermission(Client client) { //TODO - use ConfigurationClass for loading things var p = new ClientPermission { Groups = new List <string>(), AllowedPermissions = new List <string>(), DeniedPermissions = new List <string>() }; var preAllowList = new List <string>(); var preDisallowedList = new List <string>(); var perm = _permissionXml.Descendants("Users").Descendants("User").Where( n => (string)n.Attribute("Name") == client.Username.ToLower()).FirstOrDefault(); //default group we grab the first with default attrbute defined var gperm = _permissionXml.Descendants("Groups").Descendants("Group").Where( n => (string)n.Attribute("IsDefault") == "true").FirstOrDefault(); if (gperm == null) { //no default defined _server.Logger.Log(LogLevel.Warning, "Required default group is not defined in permissions file. Add IsDefault=\"true\" to a group"); return(null); } if (perm != null) { if (perm.Attribute("Groups") == null) { p.Groups.Add((string)gperm.Attribute("Name")); } else { p.Groups.AddRange(perm.Attribute("Groups").Value.Split(',')); } p.Prefix = perm.Element("Prefix") == null ? string.Empty : perm.Element("Prefix").Value; p.Suffix = perm.Element("Suffix") == null ? string.Empty : perm.Element("Suffix").Value; p.CanBuild = bool.Parse(perm.Element("CanBuild").Value); foreach (var element in perm.Element("Permission").Elements()) { if (element.Name == "Allowed") { preAllowList.Add(element.Value); } if (element.Name == "Disallowed") { preDisallowedList.Add(element.Value); } } if (p.Groups != null) { foreach ( var el in p.Groups.Select( s => _permissionXml.Descendants("Groups").Descendants("Group").Where( n => (string)n.Attribute("Name") == s.ToLower())).SelectMany(groupPerm => groupPerm) ) { if (string.IsNullOrEmpty(p.Prefix)) { p.Prefix = el.Element("Prefix") == null ? string.Empty : el.Element("Prefix").Value; } if (string.IsNullOrEmpty(p.Suffix)) { p.Suffix = el.Element("Suffix") == null ? string.Empty : el.Element("Suffix").Value; } if (p.CanBuild == null) { p.CanBuild = bool.Parse(el.Element("CanBuild") == null ? null : el.Element("Suffix").Value); } foreach (var element in el.Element("Permission").Elements()) { if (element.Name == "Allowed") { preAllowList.Add(element.Value); } if (element.Name == "Denied") { preDisallowedList.Add(element.Value); } } //TODO - Inheritance and Dictionise this } } } else { p.Groups.Add((string)gperm.Attribute("Name")); p.Prefix = gperm.Element("Prefix") == null ? string.Empty : gperm.Element("Prefix").Value; p.Suffix = gperm.Element("Suffix") == null ? string.Empty : gperm.Element("Suffix").Value; bool bCanBuild; bool.TryParse((string)gperm.Element("CanBuild"), out bCanBuild); p.CanBuild = bCanBuild; if (gperm.Element("Permission") != null) { foreach (var element in gperm.Element("Permission").Elements()) { if (element.Name == "Allowed") { preAllowList.Add(element.Value); } if (element.Name == "Denied") { preDisallowedList.Add(element.Value); } } } } p.AllowedPermissions = RemoveDuplicates(preAllowList); p.DeniedPermissions = RemoveDuplicates(preDisallowedList); return(p); }
public ClientAddPermCommand(uint clientDatabaseId, ClientPermission permission) : this(clientDatabaseId, new[] { permission }) { }