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); }
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); }