Пример #1
0
        public void GetListPermissionsForPrincipal(int groupId, string siteUrl, Action<List<Data.GroupPermission>, Exception> reply)
        {
            ClientRequestSucceededEventHandler SuccessHandler = null;
            ClientRequestFailedEventHandler FailureHandler = null;

            ClientContext ictx = new ClientContext(siteUrl);

            Web website = ictx.Web;
            IEnumerable<List> lists = null;
            
            lists = ictx.LoadQuery(website.Lists.Include(                              
                             lst => lst.Title,
                             lst => lst.RoleAssignments.Include(
                              rm => rm.Member.Id,
                              rm => rm.Member.LoginName,
                              rm => rm.RoleDefinitionBindings.Include(
                              rd => rd.Description,
                              rd => rd.Hidden,
                              rd => rd.Id,
                              rd => rd.Name,
                              rd => rd.RoleTypeKind)
                              ).Where(r => r.Member.Id == groupId)));


            SuccessHandler = (s, e) =>
            {                
                List<Data.GroupPermission> listPermissions = new List<Data.GroupPermission>();
                foreach (List lst in lists)
                {
                    SecurableObject curlst = lst as SecurableObject;
                    if (curlst.RoleAssignments != null && curlst.RoleAssignments.Count > 0)
                    {                
                        Data.GroupPermission pl = new Data.GroupPermission();
                        pl.Name = lst.Title;                        
                        foreach (RoleAssignment r in curlst.RoleAssignments)
                        {
                            foreach (RoleDefinition rd in r.RoleDefinitionBindings)
                            {
                                pl.Permissions.Add(new PermissionLevel()
                                {
                                    Description = rd.Description,
                                    LevelName = rd.Name,
                                    Mask = rd.Id,
                                    IsLevelEnabled = !rd.Hidden,
                                    IsEditable = !rd.Hidden
                                });
                            }
                        }
                        listPermissions.Add(pl);                        
                    }                        
                }
                reply(listPermissions, null);
            };

            FailureHandler = (s, e) =>
            {
                Logger.AddLog(_log, e.Exception);
                reply(null, e.Exception);
            };

            ictx.ExecuteQueryAsync(SuccessHandler, FailureHandler);
        }
Пример #2
0
        public void GetSitePermissionsForPrincipal(int groupId, string siteUrl, Action<Data.GroupPermission, Exception> reply)
        {
            ClientRequestSucceededEventHandler SuccessHandler = null;
            ClientRequestFailedEventHandler FailureHandler = null;

            ClientContext ictx = new ClientContext(siteUrl);

            Web website = ictx.Web;                              
            IEnumerable<RoleAssignment> roles = null;

            roles = ictx.LoadQuery(website.RoleAssignments.Include(
                              ras => ras.Member,
                              ras => ras.RoleDefinitionBindings.Include(
                              rdb => rdb.Description,
                              rdb => rdb.Hidden,
                              rdb => rdb.Id,
                              rdb => rdb.Name,
                              rdb => rdb.RoleTypeKind)
                              ).Where (ras=> ras.Member.Id == groupId));

              
            SuccessHandler = (s, e) =>
            {
                List<PermissionLevel> pl = new List<PermissionLevel>();
                foreach (RoleAssignment r in roles)
                {                    
                    foreach (RoleDefinition rd in  r.RoleDefinitionBindings)
                    {
                        pl.Add(new PermissionLevel() { 
                        Description = rd.Description,
                        LevelName = rd.Name,
                        Mask = rd.Id,
                        IsLevelEnabled = !rd.Hidden,
                        IsEditable = !rd.Hidden
                    });
                    }                    
                }
                Data.GroupPermission perm = new Data.GroupPermission();
                perm.Name = siteUrl;
                perm.Permissions = pl;

                reply(perm, null);
            };

            FailureHandler = (s, e) =>
            {
                Logger.AddLog(_log, e.Exception);
                reply(null, e.Exception);
            };

            ictx.ExecuteQueryAsync(SuccessHandler, FailureHandler);
        }