use of io.gravitee.repository.management.model.User in project gravitee-management-rest-api by gravitee-io.
the class UserServiceTest method shouldCreate.
@Test
public void shouldCreate() throws TechnicalException {
when(newUser.getUsername()).thenReturn(USER_NAME);
when(newUser.getEmail()).thenReturn(EMAIL);
when(newUser.getFirstname()).thenReturn(FIRST_NAME);
when(newUser.getLastname()).thenReturn(LAST_NAME);
when(userRepository.findById(USER_NAME)).thenReturn(Optional.empty());
when(user.getId()).thenReturn(USER_NAME);
when(user.getUsername()).thenReturn(USER_NAME);
when(user.getEmail()).thenReturn(EMAIL);
when(user.getFirstname()).thenReturn(FIRST_NAME);
when(user.getLastname()).thenReturn(LAST_NAME);
when(user.getPassword()).thenReturn(PASSWORD);
when(user.getCreatedAt()).thenReturn(date);
when(user.getUpdatedAt()).thenReturn(date);
when(userRepository.create(any(User.class))).thenReturn(user);
RoleEntity role = mock(RoleEntity.class);
when(role.getScope()).thenReturn(io.gravitee.management.model.permissions.RoleScope.PORTAL);
when(role.getName()).thenReturn("USER");
when(roleService.findDefaultRoleByScopes(RoleScope.MANAGEMENT, RoleScope.PORTAL)).thenReturn(Collections.singletonList(role));
when(membershipService.getRole(MembershipReferenceType.PORTAL, MembershipDefaultReferenceId.DEFAULT.name(), user.getId(), RoleScope.PORTAL)).thenReturn(role);
final UserEntity createdUserEntity = userService.create(newUser, false);
verify(userRepository).create(argThat(new ArgumentMatcher<User>() {
public boolean matches(final Object argument) {
final User userToCreate = (User) argument;
return USER_NAME.equals(userToCreate.getUsername()) && EMAIL.equals(userToCreate.getEmail()) && FIRST_NAME.equals(userToCreate.getFirstname()) && LAST_NAME.equals(userToCreate.getLastname()) && userToCreate.getCreatedAt() != null && userToCreate.getUpdatedAt() != null && userToCreate.getCreatedAt().equals(userToCreate.getUpdatedAt());
}
}));
assertEquals(USER_NAME, createdUserEntity.getUsername());
assertEquals(FIRST_NAME, createdUserEntity.getFirstname());
assertEquals(LAST_NAME, createdUserEntity.getLastname());
assertEquals(EMAIL, createdUserEntity.getEmail());
assertEquals(PASSWORD, createdUserEntity.getPassword());
assertEquals(ROLES, createdUserEntity.getRoles());
assertEquals(date, createdUserEntity.getCreatedAt());
assertEquals(date, createdUserEntity.getUpdatedAt());
}
use of io.gravitee.repository.management.model.User in project gravitee-management-rest-api by gravitee-io.
the class UserServiceImpl method findAll.
@Override
public Set<UserEntity> findAll(boolean loadRoles) {
try {
LOGGER.debug("Find all users");
Set<User> users = userRepository.findAll();
return users.stream().map(u -> convert(u, loadRoles)).collect(Collectors.toSet());
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to find all users", ex);
throw new TechnicalManagementException("An error occurs while trying to find all users", ex);
}
}
use of io.gravitee.repository.management.model.User in project gravitee-management-rest-api by gravitee-io.
the class UserServiceImpl method findByUsername.
@Override
public UserEntity findByUsername(String username, boolean loadRoles) {
try {
LOGGER.debug("Find user by name: {}", username);
Optional<User> optionalUser = userRepository.findByUsername(username);
if (optionalUser.isPresent()) {
return convert(optionalUser.get(), loadRoles);
}
// should never happen
throw new UserNotFoundException(username);
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to find user using its username {}", username, ex);
throw new TechnicalManagementException("An error occurs while trying to find user using its username " + username, ex);
}
}
use of io.gravitee.repository.management.model.User in project gravitee-management-rest-api by gravitee-io.
the class UserServiceImpl method update.
@Override
public UserEntity update(UpdateUserEntity updateUserEntity) {
try {
LOGGER.debug("Updating {}", updateUserEntity);
Optional<User> checkUser = userRepository.findByUsername(updateUserEntity.getUsername());
if (!checkUser.isPresent()) {
throw new UserNotFoundException(updateUserEntity.getUsername());
}
User user = checkUser.get();
User previousUser = new User(user);
// Set date fields
user.setUpdatedAt(new Date());
// Set variant fields
user.setPicture(updateUserEntity.getPicture());
user.setFirstname(updateUserEntity.getFirstname());
user.setLastname(updateUserEntity.getLastname());
User updatedUser = userRepository.update(user);
auditService.createPortalAuditLog(Collections.singletonMap(USER, user.getUsername()), User.AuditEvent.USER_UPDATED, user.getUpdatedAt(), previousUser, user);
return convert(updatedUser, true);
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to update {}", updateUserEntity, ex);
throw new TechnicalManagementException("An error occurs while trying update " + updateUserEntity, ex);
}
}
use of io.gravitee.repository.management.model.User in project gravitee-management-rest-api by gravitee-io.
the class UserServiceImpl method create.
/**
* Allows to complete the creation of a user which is pre-created.
* @param registerUserEntity a valid token and a password
* @return the user
*/
@Override
public UserEntity create(final RegisterUserEntity registerUserEntity) {
checkUserRegistrationEnabled();
try {
final String jwtSecret = environment.getProperty("jwt.secret");
if (jwtSecret == null || jwtSecret.isEmpty()) {
throw new IllegalStateException("JWT secret is mandatory");
}
final Map<String, Object> claims = new JWTVerifier(jwtSecret).verify(registerUserEntity.getToken());
final NewUserEntity newUserEntity = new NewUserEntity();
newUserEntity.setUsername(claims.get(Claims.SUBJECT).toString());
newUserEntity.setEmail(claims.get(Claims.EMAIL).toString());
newUserEntity.setFirstname(claims.get(Claims.FIRSTNAME).toString());
newUserEntity.setLastname(claims.get(Claims.LASTNAME).toString());
newUserEntity.setPassword(registerUserEntity.getPassword());
LOGGER.debug("Create an internal user {}", newUserEntity);
Optional<User> checkUser = userRepository.findByUsername(newUserEntity.getUsername());
if (checkUser.isPresent() && StringUtils.isNotBlank(checkUser.get().getPassword())) {
throw new UsernameAlreadyExistsException(newUserEntity.getUsername());
}
User user = convert(newUserEntity);
user.setId(UUID.toString(UUID.random()));
// Encrypt password if internal user
if (user.getPassword() != null) {
user.setPassword(passwordEncoder.encode(user.getPassword()));
}
// Set date fields
user.setUpdatedAt(new Date());
user = userRepository.update(user);
auditService.createPortalAuditLog(Collections.singletonMap(USER, user.getUsername()), User.AuditEvent.USER_CREATED, user.getUpdatedAt(), null, user);
return convert(user, true);
} catch (Exception ex) {
LOGGER.error("An error occurs while trying to create an internal user with the token {}", registerUserEntity.getToken(), ex);
throw new TechnicalManagementException(ex.getMessage(), ex);
}
}
Aggregations