protected eCheckPermissionResult rolesHasPermission(IList <Role> roles, eAuthorization auth, eEntityLevel entityLevel, string classId, string entityId, string propertyId, params eOperation[] ops) { if (roles == null || roles.Count == 0) { return(eCheckPermissionResult.Undistributed); } int yes = 0; foreach (Role role in roles) { eCheckPermissionResult temp = role.HasPermission( auth, entityLevel, classId, entityId, propertyId, ops); if (temp == eCheckPermissionResult.No) { return(eCheckPermissionResult.No); } if (temp == eCheckPermissionResult.Yes) { yes++; } } if (yes > 0) { return(eCheckPermissionResult.Yes); } return(eCheckPermissionResult.Undistributed); }
protected eCheckPermissionResult groupsHasPermission(IList <Group> groups, eAuthorization auth, eEntityLevel entityLevel, string classId, string entityId, string propertyId, params eOperation[] ops) { if (groups == null || groups.Count == 0) { return(eCheckPermissionResult.Undistributed); } int yes = 0; foreach (Group g in groups) { eCheckPermissionResult temp = g.HasPermission( auth, entityLevel, classId, entityId, propertyId, ops); if (temp == eCheckPermissionResult.No) { return(eCheckPermissionResult.No); } if (temp == eCheckPermissionResult.Yes) { yes++; } } if (yes > 0) { return(eCheckPermissionResult.Yes); } return(eCheckPermissionResult.Undistributed); }
public override eCheckPermissionResult HasPermission(eAuthorization auth, eEntityLevel entityLevel, string classId, string entityId, string propertyId, params eOperation[] ops) { eCheckPermissionResult r = base.HasPermission(auth, entityLevel, classId, entityId, propertyId, ops); if (r == eCheckPermissionResult.Undistributed) { r = rolesHasPermission(this.Roles, auth, entityLevel, classId, entityId, propertyId, ops); } return(r); }
public virtual eCheckPermissionResult HasPermission(eAuthorization auth, eEntityLevel entityLevel, string classId, string entityId, string propertyId, params eOperation[] ops) { if (permissions == null || permissions.Count == 0) { return(eCheckPermissionResult.Undistributed); } int level = (int)entityLevel; foreach (eOperation op in ops) { IEnumerable <Permission> list = null; IEnumerable <Permission> conditionalList = null; list = permissions.Where(p => p.Entity.EntityLevel == entityLevel && p.Operation == op); if (level >= 1) { list = list.Where(p => p.Entity.ClassId == classId); } if (level >= 2) { list = list.Where(p => p.Entity.EntityId == entityId || p.Conditions != null && p.Conditions.Count > 0); } if (level >= 3) { list = list.Where(p => p.Entity.PropertyId == propertyId); } if (list.Count() == 0) { if (entityLevel == eEntityLevel.Global) { return(eCheckPermissionResult.Undistributed); } eCheckPermissionResult r = HasPermission(auth, entityLevel - 1, classId, entityId, propertyId, op); if (r != eCheckPermissionResult.Yes) { return(r); } } else { conditionalList = list.Where(p => p.Conditions != null && p.Conditions.Count > 0); list = list.Except(conditionalList); int denyCount = list.Count(p => p.Authorization == eAuthorization.Deny); if (list.Count() > 0) { if (auth == eAuthorization.Deny && denyCount == 0 || auth == eAuthorization.Allow && denyCount > 0) { return(eCheckPermissionResult.No); } } else { eCheckPermissionResult result = InterpretPermissionConditions( conditionalList, auth, entityLevel, classId, entityId); if (result != eCheckPermissionResult.Yes) { return(result); } } } } return(eCheckPermissionResult.Yes); }