Пример #1
0
        public List <PermissionItem> GetPermissionItems(Role role)
        {
            Permission <TA1, TA2> permission = Permissions.AlwaysGetPermission(role.RoleID);

            List <PermissionItem> items = new List <PermissionItem>();

            int index = 0;

            foreach (FieldInfo fieldInfo in GetFieldInfos())
            {
                PermissionItem item = new PermissionItem();

                item.FieldName = fieldInfo.Name;

                if (fieldInfo.IsDefined(typeof(PermissionItemAttribute), false))
                {
                    PermissionItemAttribute permissionItemAttribute = (PermissionItemAttribute)fieldInfo.GetCustomAttributes(typeof(PermissionItemAttribute), false)[0];

                    item.Name = permissionItemAttribute.Name;
                }

                if (string.IsNullOrEmpty(item.Name))
                {
                    item.Name = fieldInfo.Name;
                }

                item.Role      = role;
                item.InputName = "TA1_" + fieldInfo.Name + "_" + role.RoleID.ToString("N");

                // TA1 action = (TA1)Enum.Parse(typeof(TA1), fieldInfo.Name);

                if (permission.IsDenyTA1(index))
                {
                    item.IsDeny = true;
                }
                else if (permission.IsAllowTA1(index))
                {
                    item.IsAllow = true;
                }
                else
                {
                    item.IsNotset = true;
                }

                item.IsDisabled = permission.IsDisabledTA1(index);

                items.Add(item);

                index++;
            }

            return(items);
        }
Пример #2
0
        private void ProcessActionFiled <T>(Guid roleID, Permission <TA1, TA2> permission, T action, PermissionItem item, out bool isAllow, out bool isDeny, out bool editable)
        {
            isAllow  = false;
            isDeny   = false;
            editable = true;
            FieldInfo[] fieldInfos = action.GetType().GetFields();

            foreach (FieldInfo actionField in fieldInfos)
            {
                if (actionField.Name == item.FieldName)
                {
                    if (actionField.IsDefined(typeof(PermissionItemAttribute), false))
                    {
                        bool tempIsAllow;
                        bool tempIsDeny;

                        permission.GetPermissionItemAttributeSet(roleID, actionField, out tempIsAllow, out tempIsDeny, out editable);

                        if (false == editable)
                        {
                            if (tempIsAllow)
                            {
                                isAllow = true;
                            }
                            else if (tempIsDeny)
                            {
                                isDeny = true;
                            }
                        }
                        else
                        {
                            if (item.IsDeny)
                            {
                                isDeny = true;
                            }
                            else if (item.IsAllow)
                            {
                                isAllow = true;
                            }
                        }

                        break;
                    }
                }
            }
        }
Пример #3
0
        public Dictionary <string, PermissionItem> GetPermissionItemWithTargetTable(Role role)
        {
            Permission <TA1, TA2> permission = Permissions.AlwaysGetPermission(role.RoleID);

            Dictionary <string, PermissionItem> items = new Dictionary <string, PermissionItem>(StringComparer.OrdinalIgnoreCase);

            int index = 0;

            foreach (FieldInfo fieldInfo in GetFieldInfosWithTarget())
            {
                PermissionItem item = new PermissionItem();

                item.FieldName = fieldInfo.Name;

                if (fieldInfo.IsDefined(typeof(PermissionItemAttribute), false))
                {
                    PermissionItemAttribute permissionItemAttribute = (PermissionItemAttribute)fieldInfo.GetCustomAttributes(typeof(PermissionItemAttribute), false)[0];

                    item.Name = permissionItemAttribute.Name;
                }

                if (string.IsNullOrEmpty(item.Name))
                {
                    item.Name = fieldInfo.Name;
                }

                item.Role      = role;
                item.InputName = "TA2_" + fieldInfo.Name + "_" + role.RoleID.ToString("N");

                // TA1 action = (TA1)Enum.Parse(typeof(TA1), fieldInfo.Name);

                if (permission.IsDenyTA2(index))
                {
                    item.IsDeny = true;
                }
                else if (permission.IsAllowTA2(index))
                {
                    item.IsAllow = true;
                }
                else
                {
                    item.IsNotset = true;
                }

                item.IsDisabled = permission.IsDisabledTA2(index);


                string fileName = null;
                if (fieldInfo.IsDefined(typeof(BackendPageAttribute), false))
                {
                    BackendPageAttribute backendPageAttribute = (BackendPageAttribute)fieldInfo.GetCustomAttributes(typeof(BackendPageAttribute), false)[0];

                    fileName = backendPageAttribute.FileName;
                }

                if (fileName != null)
                {
                    items.Add(fileName, item);
                }

                index++;
            }

            return(items);
        }