public IEnumerable <ActionBase> GetActions(IEnumerable <ActionBase> storedActions, Content content, string scenario) { var actualRoles = NodeHead.Get(SecurityHandler.GetGroups()).Select(y => y.Name).ToArray(); var inspector = OperationInspector.Instance; var stored = storedActions.ToArray(); var operations = OperationCenter.Operations .SelectMany(x => x.Value) .Where(x => FilterByApplications(x.Name, stored)) .Where(x => FilterByScenario(x.Scenarios, scenario)) .Where(x => FilterByContentTypes(inspector, content, x.ContentTypes)) .Where(x => FilterByRoles(inspector, x.Roles, actualRoles)) .ToArray(); var actions = operations .Select(x => new ODataOperationMethodDescriptor(x, GenerateUri(content, x.Name))) .Where(a => Initialize(a, content)) .Where(a => FilterByPermissions(inspector, a, content)) .Where(a => FilterByPolicies(inspector, a, content)) .ToArray(); return(stored.Union(actions).ToArray()); }
public virtual bool CheckByRoles(string[] expectedRoles, IEnumerable <string> actualRoles = null) { var userId = User.Current.Id; if (User.Current.Id == Identifiers.SystemUserId) { return(true); } if (userId == Identifiers.VisitorUserId && expectedRoles.Contains("Visitor")) { return(true); } if (expectedRoles.Contains("All")) { return(true); } if (actualRoles == null) { actualRoles = NodeHead.Get(SecurityHandler.GetGroups()).Select(y => y.Name).ToArray(); } return(actualRoles.Intersect(expectedRoles).Any()); }
public List <int> GetGroups() { return(SecurityHandler.GetGroups(this)); }