Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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));
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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));
        }