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