예제 #1
0
 public void WriteFile(string contentType, string localFilePath, string displayName)
 {
     _report.AddDetails(new FileOutputReport()
     {
         ContentType   = contentType,
         DisplayName   = displayName,
         LocalFilePath = localFilePath
     });
 }
예제 #2
0
        public override void Set <T>(T target)
        {
            _report.AddDetails(new SetValueReport
            {
                Type  = typeof(T),
                Value = target
            });

            base.Set(target);
        }
예제 #3
0
        public override void WriteFile(string contentType, string localFilePath, string displayName)
        {
            _report.AddDetails(new FileOutputReport {
                ContentType   = contentType,
                DisplayName   = displayName,
                LocalFilePath = localFilePath
            });

            base.WriteFile(contentType, localFilePath, displayName);
        }
예제 #4
0
        public override AccessRight RightsFor(ElementRequest request, IEnumerable <IFieldAccessRule> securityRules, IEnumerable <IFieldAccessRule> logicRules)
        {
            var report = new FieldAccessReport(request.Accessor.Name);

            _debugReport.AddDetails(report);
            var securityRulesList = securityRules.ToArray();
            var logicRulesList    = logicRules.ToArray();

            securityRulesList.Each(rule => report.AddVote("Authorization", rule.ToString(), rule.RightsFor(request).Name));
            if (securityRulesList.Length > 1)
            {
                report.AddVote("Authorization", "Decision (most permissive wins)", getSecurityRights(request, securityRulesList).Name);
            }

            logicRulesList.Each(rule => report.AddVote("Logic", rule.ToString(), rule.RightsFor(request).Name));
            if (logicRulesList.Length > 1)
            {
                report.AddVote("Logic", "Decision (most restrictive wins)", getLogicRights(request, logicRulesList).Name);
            }

            var decision = base.RightsFor(request, securityRulesList, logicRulesList);

            report.AddVote("Effective", "(more restrictive of Logic and Authorization)", decision.Name);
            return(decision);
        }
예제 #5
0
 public void RecordLog(string message)
 {
     _report
     .AddDetails(new RequestLogEntry
     {
         Message = message
     });
 }
예제 #6
0
        public override AuthorizationRight IsAuthorized(IFubuRequest request, IEnumerable <IAuthorizationPolicy> policies)
        {
            var decision = base.IsAuthorized(request, policies);

            if (policies.Any())
            {
                var authorizationReport = new AuthorizationReport();
                policies.Each(p =>
                {
                    var rights = p.RightsFor(request);
                    authorizationReport.AddVote(p.ToString(), rights.Name);
                });
                authorizationReport.Decision = decision.Name;
                _report.AddDetails(authorizationReport);
            }
            return(decision);
        }