Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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 })
 {
 }