// GET: Groups public async Task<ActionResult> Index() { var viewModel = new GroupsMembersViewModel(); List<Group> groupList = new List<Group>(); List<User> memberList = new List<User>(); viewModel.Groups = groupList; viewModel.GroupMembers = memberList; try { ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient(); IPagedCollection<IGroup> pagedCollection = await client.Groups.ExecuteAsync(); do { List<IGroup> groups = pagedCollection.CurrentPage.ToList(); foreach (IGroup group in groups) { groupList.Add((Group)group); } pagedCollection = pagedCollection.GetNextPageAsync().Result; } while (pagedCollection != null); } catch (Exception e) { if (Request.QueryString["reauth"] == "True") { HttpContext.GetOwinContext() .Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType); } ViewBag.ErrorMessage = "AuthorizationRequired"; return View(viewModel); } return View(viewModel); }
public async Task<ActionResult> GetGroupMembers(string objectId) { var viewModel = new GroupsMembersViewModel(); List<Group> groupList = new List<Group>(); List<User> memberList = new List<User>(); viewModel.Groups = groupList; viewModel.GroupMembers = memberList; try { ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient(); #region GetGroups IPagedCollection<IGroup> pagedCollection = await client.Groups.ExecuteAsync(); do { List<IGroup> groups = pagedCollection.CurrentPage.ToList(); foreach (IGroup group in groups) { groupList.Add((Group)group); } pagedCollection = pagedCollection.GetNextPageAsync().Result; } while (pagedCollection != null); #endregion #region Populate selected group members if (string.IsNullOrEmpty(objectId)) return View("Index",viewModel); var selectedGroup = await client.Groups.Where (g => g.ObjectId == objectId).ExecuteSingleAsync(); IGroupFetcher groupFetcher = (IGroupFetcher)selectedGroup; IPagedCollection<IDirectoryObject> members = groupFetcher.Members.ExecuteAsync().Result; do { List<IDirectoryObject> directoryObjects = members.CurrentPage.ToList(); foreach (IDirectoryObject member in directoryObjects) { var user = member as User; viewModel.GroupMembers.Add(user); } members = members.MorePagesAvailable ? members = members.GetNextPageAsync().Result : null; } while (members != null); #endregion } catch (Exception e) { if (Request.QueryString["reauth"] == "True") { HttpContext.GetOwinContext() .Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType); } ViewBag.ErrorMessage = "AuthorizationRequired"; return View("Index", viewModel); } return View("Index", viewModel); }