예제 #1
0
        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());
        }
예제 #2
0
        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());
        }
예제 #3
0
 public List <int> GetGroups()
 {
     return(SecurityHandler.GetGroups(this));
 }