Skip to content

Commit

Permalink
KAA-1196: editUser method fixed on duplicate saving during editing ex…
Browse files Browse the repository at this point in the history
…isting user
  • Loading branch information
nocs00 committed Sep 1, 2016
1 parent a603e1f commit 1e6145d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 22 deletions.
Expand Up @@ -161,7 +161,7 @@ void checkAuthority(KaaAuthorityDto... authorities) throws KaaAdminServiceExcept

void checkUserId(String userId) throws KaaAdminServiceException {
AuthUserDto authUser = getCurrentUser();
if (authUser.getExternalUid() == null || !authUser.getExternalUid().equals(userId)) {
if (authUser.getId() == null || !authUser.getId().equals(userId)) {
throw new KaaAdminServiceException(ServiceErrorCode.PERMISSION_DENIED);
}
}
Expand Down
Expand Up @@ -101,34 +101,40 @@ public org.kaaproject.kaa.common.dto.admin.UserDto getUser(String userId) throws
@Override
public org.kaaproject.kaa.common.dto.admin.UserDto editUser(org.kaaproject.kaa.common.dto.admin.UserDto user)
throws KaaAdminServiceException {
User stored = userFacade.findByUserName(user.getUsername());
boolean createNewUser = (stored == null);
try {
User stored = userFacade.findByUserName(user.getUsername());
boolean createNewUser = (stored == null);

String tempPassword = null;
if (createNewUser) {
if(user.getAuthority().equals(KaaAuthorityDto.TENANT_ADMIN)){
checkAuthority(KaaAuthorityDto.KAA_ADMIN);
} else {
checkAuthority(KaaAuthorityDto.TENANT_ADMIN);
if (!isEmpty(user.getTenantId())) {
checkTenantId(user.getTenantId());
}
}

if (createNewUser) {
if(user.getAuthority().equals(KaaAuthorityDto.TENANT_ADMIN)){
checkAuthority(KaaAuthorityDto.KAA_ADMIN);
CreateUserResult result = userFacade.saveUserDto(user, passwordEncoder);
user.setExternalUid(result.getUserId().toString());
tempPassword = result.getPassword();
} else {
checkAuthority(KaaAuthorityDto.TENANT_ADMIN);
}
} else {
checkUserId(String.valueOf(stored.getId()));
}

try {
CreateUserResult result = userFacade.saveUserDto(user, passwordEncoder);
user.setExternalUid(result.getUserId().toString());
if (isEmpty(user.getId())) {
controlService.getUsers().stream()
.filter(u -> u.getUsername().equals(user.getUsername())).findFirst()
.ifPresent(u -> user.setId(u.getId()));
}
user.setExternalUid(String.valueOf(stored.getId()));
checkUserId(user.getId());

if (!isEmpty(user.getId())) {
UserDto storedUser = controlService.getUser(user.getId());
Utils.checkNotNull(storedUser);
if(!getCurrentUser().getAuthority().equals(KaaAuthorityDto.KAA_ADMIN)) {
checkTenantId(storedUser.getTenantId());
}
} else {
if(!getCurrentUser().getAuthority().equals(KaaAuthorityDto.KAA_ADMIN)) {
checkTenantId(getTenantId());
}
}

Long userId = saveUser(user);
org.kaaproject.kaa.common.dto.admin.UserDto userDto = new org.kaaproject.kaa.common.dto.admin.UserDto();
userDto.setId(user.getId());
Expand All @@ -143,8 +149,8 @@ public org.kaaproject.kaa.common.dto.admin.UserDto editUser(org.kaaproject.kaa.c
org.kaaproject.kaa.common.dto.UserDto savedUser = controlService.editUser(userDto);

org.kaaproject.kaa.common.dto.admin.UserDto editedUser = toUser(savedUser);
if (StringUtils.isNotBlank(result.getPassword())) {
editedUser.setTempPassword(result.getPassword());
if (StringUtils.isNotBlank(tempPassword)) {
editedUser.setTempPassword(tempPassword);
}
return editedUser;

Expand Down

0 comments on commit 1e6145d

Please sign in to comment.