private Result RemoveGroupRole(string userId, string roleId)
        {
            BaseSpecification <GroupUserEntity> baseSpecification = new BaseSpecification <GroupUserEntity>();

            baseSpecification.AddFilter(x => x.UserId == userId);
            baseSpecification.AddFilter(x => x.RoleId == roleId);

            GroupUserEntity groupUser = _groupUserRepository.SingleOrDefault(baseSpecification);

            if (groupUser == null)
            {
                _logger.LogError($"No GroupUser. UserId {userId}, roleId {roleId}");
                return(Result.Fail("no_group_user", "No GroupUser"));
            }

            groupUser.UpdateRole(null);

            bool updateResult = _groupUserRepository.Update(groupUser);

            if (!updateResult)
            {
                _logger.LogError($"Failed to update GroupUser. UserId {userId}, roleId {roleId}");
                return(Result.Fail("failed_to_update_group_user", "Failed to update GroupUser"));
            }

            return(Result.Ok());
        }
        public Result ChangeRole(long groupUserId, string roleId, string userId)
        {
            _logger.LogInformation($"Changing GroupUser role. GroupUserId {groupUserId}, roleId {roleId}");

            Result roleValidResult = RoleIsValid(roleId);

            if (roleValidResult.Failure)
            {
                return(Result.Fail(roleValidResult.Errors));
            }

            List <RoleListData> canAssigneGroupRoles = _groupUserStore.CanAssigneGroupRoles();

            if (!canAssigneGroupRoles.Any(x => x.Id == roleId))
            {
                _logger.LogError($"User does not have permission to assign role. RoleId {roleId}");
                return(Result.Fail("no_permission", "No Permission"));
            }

            Result <GroupUserEntity> getGroupUserResult = _groupUserStore.Get(groupUserId);

            if (getGroupUserResult.Failure)
            {
                return(Result.Fail(getGroupUserResult.Errors));
            }

            GroupUserEntity groupUser = getGroupUserResult.Value;

            List <RoleListData> canManageGroupRoles = _groupUserStore.CanManageGroupRoles();

            if (!canManageGroupRoles.Any(x => x.Id != groupUser.RoleId))
            {
                _logger.LogError($"User does not have permission to manage role. GroupUserId {groupUserId} RoleId {roleId}");
                return(Result.Fail("no_permission", "No Permission"));
            }

            if (!_groupUserStore.CanChangeOwnRole())
            {
                if (groupUser.UserId == userId)
                {
                    _logger.LogError($"User can not change his own role");
                    return(Result.Fail("user_can_not_change_his_own_role", "User can not change his own role"));
                }
            }

            groupUser.UpdateRole(roleId);

            bool updateResult = _groupUserRepository.Update(groupUser);

            if (!updateResult)
            {
                _logger.LogError($"Failed to change group user role. GroupUserId {groupUserId}, roleId {roleId}");
                return(Result.Fail("failed_to_cahnge_group_user_role", "Failed to change GroupUser role"));
            }

            return(Result.Ok());
        }
Beispiel #3
0
        private async Task <Result> ChangeRoleAsync(long groupUserId, string roleId, string userId)
        {
            _logger.LogInformation($"Changing GroupUser role. GroupUserId {groupUserId}, roleId {roleId}");

            Result roleValidResult = await RoleIsValid(roleId);

            if (roleValidResult.Failure)
            {
                return(Result.Fail(roleValidResult));
            }

            List <RoleListData> canAssigneGroupRoles = _groupUserStore.CanAssigneGroupRoles();

            if (!canAssigneGroupRoles.Any(x => x.Id == roleId))
            {
                _logger.LogError($"User does not have permission to assign role. RoleId {roleId}");
                return(Result.Fail(NO_PERMISSION));
            }

            Core.Models.Result.Result <GroupUserEntity> getGroupUserResult = _groupUserStore.Get(groupUserId);
            if (getGroupUserResult.Failure)
            {
                return(getGroupUserResult.ToNewResult());
            }

            GroupUserEntity groupUser = getGroupUserResult.Value;

            List <RoleListData> canManageGroupRoles = _groupUserStore.CanManageGroupRoles();

            if (!canManageGroupRoles.Any(x => x.Id != groupUser.RoleId))
            {
                _logger.LogError($"User does not have permission to manage role. GroupUserId {groupUserId} RoleId {roleId}");
                return(Result.Fail(NO_PERMISSION));
            }

            if (!_groupUserStore.CanChangeOwnRole())
            {
                if (groupUser.UserId == userId)
                {
                    _logger.LogError($"User can not change his own role");
                    return(Result.Fail(USER_CAN_NOT_CHANGE_HIS_OWN_ROLE));
                }
            }

            groupUser.UpdateRole(roleId);

            bool updateResult = await _groupUserDAO.Update(groupUser);

            if (!updateResult)
            {
                _logger.LogError($"Failed to change group user role. GroupUserId {groupUserId}, roleId {roleId}");
                return(Result.Fail(FAILED_TO_CAHNGE_GROUP_USER_ROLE));
            }

            return(Result.Ok());
        }