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); }
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; } } } }
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); }