Skip to content

Commit

Permalink
KAA-1442: editUser() fixed sending email with temp password
Browse files Browse the repository at this point in the history
  • Loading branch information
nocs00 committed Sep 23, 2016
1 parent 00eed4e commit 964eae0
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 55 deletions.
Expand Up @@ -49,6 +49,7 @@
import org.kaaproject.kaa.server.common.plugin.PluginConfig; import org.kaaproject.kaa.server.common.plugin.PluginConfig;
import org.kaaproject.kaa.server.common.plugin.PluginType; import org.kaaproject.kaa.server.common.plugin.PluginType;
import org.kaaproject.kaa.server.control.service.ControlService; import org.kaaproject.kaa.server.control.service.ControlService;
import org.kaaproject.kaa.server.control.service.exception.ControlServiceException;
import org.kaaproject.kaa.server.control.service.sdk.SchemaUtil; import org.kaaproject.kaa.server.control.service.sdk.SchemaUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
Expand All @@ -68,7 +69,9 @@
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;


import static org.kaaproject.kaa.server.admin.services.util.Utils.checkFieldUniquieness;
import static org.kaaproject.kaa.server.admin.services.util.Utils.getCurrentUser; import static org.kaaproject.kaa.server.admin.services.util.Utils.getCurrentUser;
import static org.kaaproject.kaa.server.admin.shared.schema.ConverterType.CONFIGURATION_FORM_AVRO_CONVERTER; import static org.kaaproject.kaa.server.admin.shared.schema.ConverterType.CONFIGURATION_FORM_AVRO_CONVERTER;
import static org.kaaproject.kaa.server.admin.shared.util.Utils.isEmpty; import static org.kaaproject.kaa.server.admin.shared.util.Utils.isEmpty;
Expand Down Expand Up @@ -301,7 +304,7 @@ RecordField createRecordFieldFromCtlSchemaAndBody(String ctlSchemaId, String bod
} }
} }


Long saveUser(org.kaaproject.kaa.common.dto.admin.UserDto user) throws Exception { CreateUserResult saveUser(org.kaaproject.kaa.common.dto.admin.UserDto user) throws Exception {
CreateUserResult result = userFacade.saveUserDto(user, passwordEncoder); CreateUserResult result = userFacade.saveUserDto(user, passwordEncoder);
try { try {
if (!isEmpty(result.getPassword())) { if (!isEmpty(result.getPassword())) {
Expand All @@ -320,7 +323,69 @@ Long saveUser(org.kaaproject.kaa.common.dto.admin.UserDto user) throws Exception
} }
throw new KaaAdminServiceException(String.valueOf(errorMessage.append("See server logs for details.")), ServiceErrorCode.GENERAL_ERROR); throw new KaaAdminServiceException(String.valueOf(errorMessage.append("See server logs for details.")), ServiceErrorCode.GENERAL_ERROR);
} }
return result.getUserId(); return result;
}

String createNewUser(org.kaaproject.kaa.common.dto.admin.UserDto user) throws Exception {
checkFieldUniquieness(
user.getUsername(),
userFacade.getAll().stream().map(u -> u.getUsername()).collect(Collectors.toSet()),
"userName"
);

checkFieldUniquieness(
user.getMail(),
userFacade.getAll().stream().map(u -> u.getMail()).collect(Collectors.toSet()),
"email"
);

CreateUserResult result = saveUser(user);
user.setExternalUid(result.getUserId().toString());
return result.getPassword();
}

void editUserFacadeUser(org.kaaproject.kaa.common.dto.admin.UserDto user)
throws KaaAdminServiceException, ControlServiceException {
User storedUserOld = userFacade.findByUserName(user.getUsername());

user.setExternalUid(String.valueOf(storedUserOld.getId()));
UserDto storedUserNew = controlService.getUser(user.getId());
Utils.checkNotNull(storedUserNew);
if(!getCurrentUser().getAuthority().equals(KaaAuthorityDto.KAA_ADMIN)) {
checkTenantId(storedUserNew.getTenantId());
}

storedUserOld.setMail(user.getMail());
storedUserOld.setFirstName(user.getFirstName());
storedUserOld.setLastName(user.getLastName());
userFacade.save(storedUserOld);
}

org.kaaproject.kaa.common.dto.admin.UserDto editControlServiceUser(org.kaaproject.kaa.common.dto.admin.UserDto user)
throws KaaAdminServiceException, ControlServiceException {
if (!isEmpty(getTenantId())) {
user.setTenantId(getTenantId());
} else {
user.setTenantId(user.getTenantId());
}
org.kaaproject.kaa.common.dto.UserDto savedUser = controlService.editUser(user);

return toUser(savedUser);
}

void checkCreateUserPermission(UserDto user) throws KaaAdminServiceException {
if(user.getAuthority().equals(KaaAuthorityDto.TENANT_ADMIN)){
checkAuthority(KaaAuthorityDto.KAA_ADMIN);
} else {
checkAuthority(KaaAuthorityDto.TENANT_ADMIN);
if (!isEmpty(user.getTenantId())) {
checkTenantId(user.getTenantId());
}
}
}

void checkEditUserPermission(UserDto user) throws KaaAdminServiceException, ControlServiceException {
checkUserId(user.getId());
} }


void setPluginJsonConfigurationFromRaw(PluginDto plugin, PluginType type) { void setPluginJsonConfigurationFromRaw(PluginDto plugin, PluginType type) {
Expand Down
Expand Up @@ -20,7 +20,6 @@
import org.kaaproject.kaa.common.dto.KaaAuthorityDto; import org.kaaproject.kaa.common.dto.KaaAuthorityDto;
import org.kaaproject.kaa.common.dto.UserDto; import org.kaaproject.kaa.common.dto.UserDto;
import org.kaaproject.kaa.common.dto.admin.UserProfileUpdateDto; import org.kaaproject.kaa.common.dto.admin.UserProfileUpdateDto;
import org.kaaproject.kaa.server.admin.services.entity.CreateUserResult;
import org.kaaproject.kaa.server.admin.services.entity.User; import org.kaaproject.kaa.server.admin.services.entity.User;
import org.kaaproject.kaa.server.admin.services.util.Utils; import org.kaaproject.kaa.server.admin.services.util.Utils;
import org.kaaproject.kaa.server.admin.shared.services.KaaAdminServiceException; import org.kaaproject.kaa.server.admin.shared.services.KaaAdminServiceException;
Expand All @@ -29,9 +28,7 @@


import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;


import static org.kaaproject.kaa.server.admin.services.util.Utils.checkFieldUniquieness;
import static org.kaaproject.kaa.server.admin.services.util.Utils.getCurrentUser; import static org.kaaproject.kaa.server.admin.services.util.Utils.getCurrentUser;
import static org.kaaproject.kaa.server.admin.shared.util.Utils.isEmpty; import static org.kaaproject.kaa.server.admin.shared.util.Utils.isEmpty;


Expand Down Expand Up @@ -104,67 +101,22 @@ public org.kaaproject.kaa.common.dto.admin.UserDto getUser(String userId) throws
public org.kaaproject.kaa.common.dto.admin.UserDto editUser(org.kaaproject.kaa.common.dto.admin.UserDto user) public org.kaaproject.kaa.common.dto.admin.UserDto editUser(org.kaaproject.kaa.common.dto.admin.UserDto user)
throws KaaAdminServiceException { throws KaaAdminServiceException {
try { try {

boolean createNewUser = (user.getId() == null); boolean createNewUser = (user.getId() == null);


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

checkFieldUniquieness(
user.getMail(),
userFacade.getAll().stream().map(u -> u.getMail()).collect(Collectors.toSet()),
"email"
);

checkFieldUniquieness(
user.getUsername(),
userFacade.getAll().stream().map(u -> u.getUsername()).collect(Collectors.toSet()),
"userName"
);

CreateUserResult result = userFacade.saveUserDto(user, passwordEncoder);
user.setExternalUid(result.getUserId().toString());
tempPassword = result.getPassword();
} else {
User stored = userFacade.findByUserName(user.getUsername());

user.setExternalUid(String.valueOf(stored.getId()));
checkUserId(user.getId());

UserDto storedUser = controlService.getUser(user.getId());
Utils.checkNotNull(storedUser);
if(!getCurrentUser().getAuthority().equals(KaaAuthorityDto.KAA_ADMIN)) {
checkTenantId(storedUser.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());
userDto.setUsername(user.getUsername());
userDto.setExternalUid(userId.toString());
if (!isEmpty(getTenantId())) {
userDto.setTenantId(getTenantId());
} else { } else {
userDto.setTenantId(user.getTenantId()); checkEditUserPermission(user);
editUserFacadeUser(user);
} }
userDto.setAuthority(user.getAuthority());
org.kaaproject.kaa.common.dto.UserDto savedUser = controlService.editUser(userDto);


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

} catch (Exception e) { } catch (Exception e) {
throw Utils.handleException(e); throw Utils.handleException(e);
} }
Expand Down

0 comments on commit 964eae0

Please sign in to comment.