public AnnotatedAclEntry ResolveAclEntry(UnresolvedAclEntry e, SecurityTargetKind targetKind)
 {
     return(new AnnotatedAclEntry
     {
         Entry = new AclEntry
         {
             Privilege = Privileges.FirstOrDefault(p => p.SID == e.PrivilegeId),
             Subject = _memoizer.Memoize(new { e.SubjectId }, sid => SubjectProviders.Select(p => p.Find(sid.SubjectId)).FirstOrDefault(s => s != null)),
             Kind = e.Allow ? AclEntryKind.Allow : AclEntryKind.Deny
         },
         InheritedFrom = e.IsInherited ? ResolveTarget(e.SourceTarget, targetKind) : null
     });
 }
        public SecurityTarget ResolveTarget(BigTuple <Guid> id, SecurityTargetKind kind)
        {
            if (id.IsEmpty)
            {
                return(null);
            }

            var providers = kind == null ? null : _objectProvidersByKind.Value;
            var kinds     = kind == null?EnumerableEx.Return <SecurityObjectKind>(null).Repeat() : kind.ObjectKindsInOrder;

            return(new SecurityTarget(
                       id.AsEnumerable()
                       .Zip(kinds, (i, k) => _memoizer.Memoize(new { objectId = i }, _ =>
                                                               (k == null ? ObjectProviders : providers[k])
                                                               .EmptyIfNull()
                                                               .Select(p => p.Find(i))
                                                               .Where(obj => obj != null)
                                                               .FirstOrDefault()))
                       .ToList()));
        }
 public IEnumerable <SecurityPrivilege> PrivilegesFor(SecurityTargetKind targetKind)
 {
     return(Privileges.Where(p => p.AppliesTo(targetKind)));
 }
 public static IEnumerable <AnnotatedAclEntry> ResolveAcl <TDomain>(this IEnumerable <UnresolvedAclEntry> source,
                                                                    ISecurityService <TDomain> sec, SecurityTargetKind targetKind)
 {
     return(source.Select(e => sec.ResolveAclEntry(e, targetKind)));
 }
 public static IQueryable <BigTuple <Guid> > AllGrantedTargets <TDomain>(
     this ISecurityService <TDomain> service, ISecuritySubject subject, SecurityPrivilege privilege, SecurityTargetKind kind)
 {
     return(service.AllGrantedTargets(subject, privilege, kind.ObjectKindsInOrder.Count()));
 }
 public static IQueryable <BigTuple <Guid> > AllGrantedTargets <TDomain>(
     this ISecurityService <TDomain> service, ISecuritySubject subject, Expression <Func <Guid, bool> > privilegeFilter, SecurityTargetKind kind)
 {
     return(service.AllGrantedTargets(subject, privilegeFilter, kind.ObjectKindsInOrder.Count()));
 }
示例#7
0
 public static bool AppliesTo(this SecurityPrivilege priv, SecurityTargetKind targetKind)
 {
     //Contract.Requires( priv != null );
     return(targetKind == null ? false :
            targetKind.ApplicablePrivilegeSets.Any(priv.BelongsTo));
 }