public async Task <ActionResult <UserGroupResult> > GetAllOfUser(string id) { UserGroupResult result = new UserGroupResult(); if (string.IsNullOrEmpty(id)) { result.IsSuccessful = false; result.ErrorMessages.Add("No user id provided"); return(BadRequest(result)); } var user = await _userProvider.GetUserAsync(); bool isAdmin = await _userProvider.IsUserAdminAsync(); bool isCurrentUser = id == user.Id; if (!(isAdmin || isCurrentUser)) { result.IsSuccessful = false; result.ErrorMessages.Add("Not authorized to access"); return(Unauthorized(result)); } result.IsSuccessful = true; result.ResultData = await _userGroups.GetAllOfUserAsync(id); return(Ok(result)); }
public async Task <ActionResult <UserGroupResult> > CreateUserGroup(UserGroup group) { UserGroupResult result = new UserGroupResult(); var user = await _userProvider.GetUserAsync(); group.OwnerId = user.Id; try { var createdGroup = await _userGroups.CreateAsync(group); result.IsSuccessful = true; result.ResultData.Add(createdGroup); } catch (ItemAlreadyExistsException e) { result.IsSuccessful = false; result.ErrorMessages.Add("Item already exists"); result.ErrorMessages.Add(e.Message); return(Conflict(result)); } catch (Exception e) { result.IsSuccessful = false; result.ErrorMessages.Add("Internal server error"); result.ErrorMessages.Add(e.Message); throw e; } return(Ok(result)); }
public async Task <ActionResult <UserGroupResult> > GetUserGroups() { UserGroupResult result = new UserGroupResult(); List <UserGroup> groups = new List <UserGroup>(); var user = await _userProvider.GetUserAsync(); bool isAdmin = await _userProvider.IsUserAdminAsync(); if (isAdmin) { groups = await _userGroups.GetAllAsync(); } else { groups = await _userGroups.GetAllOfUserAsync(user.Id); } foreach (var group in groups) { group.Owner = await _userRepository.GetUserByIdAsync(group.OwnerId); } result.IsSuccessful = true; result.ResultData = groups; return(Ok(result)); }
public UserGroupResult Find(long id) { Data.Entity.UserGroup entity = UserGroupDao.Find(id); UserGroupResult result = UserGroupResultConverter.Convert(entity); return(result); }
public async Task <ActionResult <UserGroupResult> > GetUserGroup(string id) { UserGroupResult result = new UserGroupResult(); var user = await _userProvider.GetUserAsync(); try { bool isAdmin = await _userProvider.IsUserAdminAsync(); bool isUserInGroup = await _userGroups.UserIsInGroupAsync(id, user.Id); if (!(isAdmin || isUserInGroup)) { result.IsSuccessful = false; result.ErrorMessages.Add("User requesting this resource is not allowed to access"); return(Unauthorized(result)); } var group = await _userGroups.GetAsync(id); group.Owner = await _userRepository.GetUserByIdAsync(group.OwnerId); foreach (var member in group.Members) { var dbUser = await _userRepository.GetUserByIdAsync(member.Id); member.UserName = dbUser.UserName; member.Email = dbUser.Email; } result.ResultData.Add(group); result.IsSuccessful = true; } catch (ItemNotFoundException e) { result.IsSuccessful = false; result.ErrorMessages.Add(e.Message); return(NotFound(result)); } return(Ok(result)); }
public async Task <ActionResult <UserGroupResult> > DeleteUserGroup(string id) { var result = new UserGroupResult(); var currentUser = await _userProvider.GetUserAsync(); bool isUserInGroup = await _userGroups.UserIsInGroupAsync(id, currentUser.Id); bool isAdmin = await _userProvider.IsUserAdminAsync(); if (!(isAdmin || isUserInGroup)) { result.IsSuccessful = false; result.ErrorMessages.Add("Not authorized"); return(Unauthorized(result)); } try { var group = await _userGroups.GetAsync(id); if (!(await _userGroups.DeleteByIdAsync(id))) { result.IsSuccessful = false; result.ErrorMessages.Add($"Could not delete item '{id}'"); return(UnprocessableEntity(result)); } if (!(await _userRepository.RemoveStandardUserGroupId(id))) { _logger.LogWarning($"Could not remove '{id}' from at least one user"); } } catch (ItemNotFoundException e) { result.IsSuccessful = false; result.ErrorMessages.Add(e.Message); return(NotFound(result)); } result.IsSuccessful = true; return(Ok(result)); }
public List <UserGroupResult> GetUserGroup(string alias) { var ret = new List <UserGroupResult>(); var runspace = this.CreateRunspace(); var powershell = PowerShell.Create(); var command = new PSCommand(); var script = "Get-DistributionGroup -ResultSize unlimited -Filter \"Members - like \"\"$((Get - Mailbox " + alias + ").DistinguishedName)\"\"\" |fl name,PrimarySmtpAddress,RequireSenderAuthenticationEnabled,AcceptMessagesOnlyFrom"; command.AddScript(script); powershell.Commands = command; try { runspace.Open(); powershell.Runspace = runspace; Collection <PSObject> results = powershell.Invoke(); if (results != null) { foreach (var psobj in results) { var log = new UserGroupResult(); log.Name = psobj.Properties["Name"].Value.ToString(); log.PrimarySmtpAddress = psobj.Properties["PrimarySmtpAddress"].Value.ToString(); log.RequireSenderAuthenticationEnabled = psobj.Properties["RequireSenderAuthenticationEnabled"].Value.ToString(); log.AcceptMessagesOnlyFrom = psobj.Properties["AcceptMessagesOnlyFrom"].Value.ToString(); ret.Add(log); } } } catch (Exception ex) { this._log.Error("获取用户分组失败", ex); } finally { runspace.Dispose(); powershell.Dispose(); } return(ret); }
public async Task <ActionResult <UserGroupResult> > AddUserToGroup(string id, [FromBody] ShoppingUserModel user) { var result = new UserGroupResult(); var currentUser = await _userProvider.GetUserAsync(); bool isUserInGroup = await _userGroups.UserIsInGroupAsync(id, currentUser.Id); bool isAdmin = await _userProvider.IsUserAdminAsync(); if (!(isAdmin || isUserInGroup)) { result.IsSuccessful = false; result.ErrorMessages.Add("Not authorized"); return(Unauthorized(result)); } try { var group = await _userGroups.AddUserToGroup(id, user); group.Owner = await _userRepository.GetUserByIdAsync(group.OwnerId); foreach (var member in group.Members) { var dbUser = await _userRepository.GetUserByIdAsync(member.Id); member.UserName = dbUser.UserName; member.Email = dbUser.Email; } result.IsSuccessful = true; result.ResultData.Add(group); } catch (Exception e) { result.IsSuccessful = false; result.ErrorMessages.Add(e.Message); throw e; } return(Ok(result)); }
public async Task <ActionResult <UserGroupResult> > GetUserGroupsOfShoppingList(string id) { var result = new UserGroupResult(); var user = await _users.GetUserAsync(); bool isAdmin = await _users.IsUserAdminAsync(); bool isInList = await _shoppingLists.IsOfUserAsync(id, user.Id); if (!(isInList || isAdmin)) { result.IsSuccessful = false; result.ErrorMessages.Add("Not authorized"); return(Unauthorized(result)); } result.IsSuccessful = true; result.ResultData = await _userGroupShoppingLists.GetUserGroupsOfShoppingListAsync(id); return(Ok(result)); }