예제 #1
0
 private IEnumerable <GroupPermission> GetGroupPermissionByGroupAndPIds(AccessControlServiceContext context, string groupIdentifier, IEnumerable <long> permissionIds)
 {
     return(from cgp in context.GroupPermissions
            where cgp.GroupIdentification == groupIdentifier &&
            permissionIds.Contains(cgp.PermissionId)
            select cgp);
 }
예제 #2
0
 private GroupPermission GetGroupPermissionByGroupAndPId(AccessControlServiceContext context, string groupIdentifier, long permissionId)
 {
     return((from cgp in context.GroupPermissions
             where cgp.GroupIdentification == groupIdentifier &&
             cgp.PermissionId == permissionId
             select cgp).SingleOrDefault());
 }
예제 #3
0
        private IEnumerable <Permission> GetChildPermissionsRange(AccessControlServiceContext context, IEnumerable <long> permissionIds)
        {
            List <Permission> permissions = new List <Permission>();

            foreach (var id in permissionIds)
            {
                permissions.AddRange(GetChildPermissions(context, id));
            }
            return(permissions);
        }
예제 #4
0
 private void LinkPermissionInfos(AccessControlServiceContext context, GroupPermission groupPermission, ref List <PermissionInfo> ret)
 {
     try
     {
         if (!groupPermission.IsGranted)
         {
             return;
         }
         var                 gp               = groupPermission;
         PermissionInfo      p                = null;
         PermissionInfo      childP           = null;
         Func <long, string> gpPermissionName = (long id) => (from permission in context.Permissions where permission.PermissionId == id select permission.PermissionName).FirstOrDefault();
         while (gp != null)
         {
             if (p != null)
             {
                 childP = p;
             }
             var permissionName = gpPermissionName(gp.PermissionId);
             p = ret.Any(pi => pi.Name == permissionName) ?
                 ret.First(pi => pi.Name == permissionName) :
                 new PermissionInfo {
                 Name = permissionName, ParentPermission = null
             };
             if (childP != null)
             {
                 childP.ParentPermission = p;
             }
             if (!ret.Any(pi => pi.Name == p.Name))
             {
                 ret.Add(p);
             }
             var parentPermission = (from pp in context.Permissions.Include(x => x.ParentPermission)
                                     where pp.PermissionId == gp.PermissionId
                                     select pp.ParentPermission).SingleOrDefault();
             if (parentPermission != null)
             {
                 gp = (from gg in context.GroupPermissions
                       where gg.PermissionId == parentPermission.PermissionId &&
                       gg.GroupIdentification == gp.GroupIdentification
                       select gg).SingleOrDefault();
             }
             else
             {
                 gp = null;
             }
         }
     }
     catch (Exception e)
     {
     }
 }
예제 #5
0
 private Permission GetParentPermission(AccessControlServiceContext context, Permission p)
 {
     return((from parentPermission in context.Permissions
             where parentPermission.PermissionId == p.ParentPermissionId
             select parentPermission).SingleOrDefault());
 }
예제 #6
0
 private IEnumerable <Permission> GetChildPermissions(AccessControlServiceContext context, long permissionId)
 {
     return(from cp in context.Permissions
            where cp.ParentPermissionId == permissionId
            select cp);
 }