use of com.auth0.flickr2.domain.User in project gravitee-api-management by gravitee-io.
the class UserServiceTest method shouldUpdateUser_UpdateFields_And_CreateFields.
@Test
public void shouldUpdateUser_UpdateFields_And_CreateFields() throws Exception {
final String USER_ID = "userid";
User user = new User();
user.setId(USER_ID);
user.setSourceId("sourceId");
Date updatedAt = new Date(1234567890L);
user.setUpdatedAt(updatedAt);
user.setFirstname("john");
user.setLastname("doe");
user.setEmail("john.doe@mail.domain");
when(userRepository.findById(USER_ID)).thenReturn(of(user));
UpdateUserEntity toUpdate = new UpdateUserEntity();
toUpdate.setEmail(user.getEmail());
toUpdate.setFirstname(user.getFirstname());
toUpdate.setLastname(user.getLastname());
toUpdate.setCustomFields(Maps.<String, Object>builder().put("fieldToUpdate", "valueUpdated").put("fieldToCreate", "newValue").build());
UserMetadataEntity existingField = new UserMetadataEntity();
existingField.setValue("value1");
existingField.setUserId(USER_ID);
existingField.setFormat(MetadataFormat.STRING);
existingField.setName("fieldToUpdate");
existingField.setKey("fieldToUpdate");
when(userMetadataService.findAllByUserId(USER_ID)).thenReturn(Arrays.asList(existingField));
userService.update(USER_ID, toUpdate);
verify(userMetadataService).update(argThat(entity -> entity.getKey().equals(existingField.getKey()) && entity.getName().equals(existingField.getName()) && entity.getUserId().equals(existingField.getUserId()) && entity.getValue().equals(toUpdate.getCustomFields().get(existingField.getKey()))));
verify(userMetadataService).create(argThat(entity -> entity.getName().equals("fieldToCreate") && entity.getUserId().equals(existingField.getUserId()) && entity.getValue().equals(toUpdate.getCustomFields().get("fieldToCreate"))));
}
use of com.auth0.flickr2.domain.User in project gravitee-api-management by gravitee-io.
the class UserServiceTest method createAlreadyPreRegisteredUser.
@Test
public void createAlreadyPreRegisteredUser() throws TechnicalException {
when(mockParameterService.findAsBoolean(Key.PORTAL_USERCREATION_ENABLED, "DEFAULT", ParameterReferenceType.ENVIRONMENT)).thenReturn(Boolean.TRUE);
when(environment.getProperty("jwt.secret")).thenReturn(JWT_SECRET);
when(passwordValidator.validate(anyString())).thenReturn(true);
User user = new User();
user.setId("CUSTOM_LONG_ID");
user.setEmail(EMAIL);
user.setFirstname(FIRST_NAME);
user.setLastname(LAST_NAME);
when(userRepository.findById(USER_NAME)).thenReturn(Optional.of(user));
when(userRepository.update(any(User.class))).thenReturn(user);
RegisterUserEntity userEntity = new RegisterUserEntity();
userEntity.setToken(createJWT(System.currentTimeMillis() / 1000 + 100));
userEntity.setPassword(PASSWORD);
userService.finalizeRegistration(userEntity);
verify(userRepository).update(argThat(userToCreate -> "CUSTOM_LONG_ID".equals(userToCreate.getId()) && EMAIL.equals(userToCreate.getEmail()) && FIRST_NAME.equals(userToCreate.getFirstname()) && LAST_NAME.equals(userToCreate.getLastname())));
}
use of com.auth0.flickr2.domain.User in project gravitee-api-management by gravitee-io.
the class UserServiceTest method shouldUpdateUser.
@Test
public void shouldUpdateUser() throws TechnicalException {
final String USER_ID = "myuserid";
final String USER_EMAIL = "my.user@acme.fr";
final String GIO_SOURCE = "gravitee";
User user = new User();
user.setId(USER_ID);
user.setEmail(EMAIL);
user.setFirstname(FIRST_NAME);
user.setLastname(LAST_NAME);
user.setSource(GIO_SOURCE);
user.setSourceId(USER_EMAIL);
user.setOrganizationId(ORGANIZATION);
when(userRepository.update(any(User.class))).thenAnswer(new Answer<User>() {
@Override
public User answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
return (User) args[0];
}
});
when(userRepository.findById(USER_ID)).thenReturn(Optional.of(user));
when(userRepository.findBySource(GIO_SOURCE, USER_EMAIL, ORGANIZATION)).thenReturn(Optional.empty());
when(updateUser.getEmail()).thenReturn(USER_EMAIL);
String UPDATED_LAST_NAME = LAST_NAME + "updated";
String UPDATED_FIRST_NAME = FIRST_NAME + "updated";
when(updateUser.getFirstname()).thenReturn(UPDATED_FIRST_NAME);
when(updateUser.getLastname()).thenReturn(UPDATED_LAST_NAME);
userService.update(user.getId(), updateUser);
verify(userRepository).update(argThat(userToUpdate -> USER_ID.equals(userToUpdate.getId()) && GIO_SOURCE.equals(userToUpdate.getSource()) && USER_EMAIL.equals(userToUpdate.getEmail()) && // update of sourceId authorized for gravitee source
USER_EMAIL.equals(userToUpdate.getSourceId()) && UPDATED_FIRST_NAME.equals(userToUpdate.getFirstname()) && UPDATED_LAST_NAME.equals(userToUpdate.getLastname())));
}
use of com.auth0.flickr2.domain.User in project gravitee-api-management by gravitee-io.
the class UserServiceImpl method delete.
@Override
public void delete(String id) {
try {
// If the users is PO of apps or apis, throw an exception
long apiCount = apiService.findByUser(id, null, false).stream().filter(entity -> entity.getPrimaryOwner().getId().equals(id)).count();
long applicationCount = applicationService.findByUser(GraviteeContext.getCurrentOrganization(), GraviteeContext.getCurrentEnvironment(), id).stream().filter(app -> app.getPrimaryOwner() != null).filter(app -> app.getPrimaryOwner().getId().equals(id)).count();
if (apiCount > 0 || applicationCount > 0) {
throw new StillPrimaryOwnerException(apiCount, applicationCount);
}
Optional<User> optionalUser = userRepository.findById(id);
if (!optionalUser.isPresent()) {
throw new UserNotFoundException(id);
}
membershipService.removeMemberMemberships(MembershipMemberType.USER, id);
User user = optionalUser.get();
// remove notifications
portalNotificationService.deleteAll(user.getId());
portalNotificationConfigService.deleteByUser(user.getId());
genericNotificationConfigService.deleteByUser(user);
// remove tokens
tokenService.revokeByUser(user.getId());
// change user datas
user.setSourceId("deleted-" + user.getSourceId());
user.setStatus(UserStatus.ARCHIVED);
user.setUpdatedAt(new Date());
if (anonymizeOnDelete) {
User anonym = new User();
anonym.setId(user.getId());
anonym.setCreatedAt(user.getCreatedAt());
anonym.setUpdatedAt(user.getUpdatedAt());
anonym.setStatus(user.getStatus());
anonym.setSource(user.getSource());
anonym.setLastConnectionAt(user.getLastConnectionAt());
anonym.setSourceId("deleted-" + user.getId());
anonym.setFirstname("Unknown");
anonym.setLastname("");
anonym.setLoginCount(user.getLoginCount());
user = anonym;
}
userRepository.update(user);
final UserEntity userEntity = convert(optionalUser.get(), false);
searchEngineService.delete(userEntity);
} catch (TechnicalException ex) {
LOGGER.error("An error occurs while trying to delete user", ex);
throw new TechnicalManagementException("An error occurs while trying to delete user", ex);
}
}
use of com.auth0.flickr2.domain.User in project gravitee-api-management by gravitee-io.
the class UserServiceImpl method resetPassword.
private void resetPassword(final String id, final String resetPageUrl) {
try {
LOGGER.debug("Resetting password of user id {}", id);
Optional<User> optionalUser = userRepository.findById(id);
if (!optionalUser.isPresent()) {
throw new UserNotFoundException(id);
}
final User user = optionalUser.get();
if (!isInternalUser(user)) {
throw new UserNotInternallyManagedException(id);
}
// do not perform this check if the request comes from an authenticated user (ie. admin or someone with right permission)
if (!isAuthenticated() || !canResetPassword()) {
AuditQuery query = new AuditQuery();
query.setEvents(Arrays.asList(User.AuditEvent.PASSWORD_RESET.name()));
query.setFrom(Instant.now().minus(1, ChronoUnit.HOURS).toEpochMilli());
query.setPage(1);
query.setSize(100);
MetadataPage<AuditEntity> events = auditService.search(query);
if (events != null) {
if (events.getContent().size() == 100) {
LOGGER.warn("More than 100 reset password received in less than 1 hour", user.getId());
}
Optional<AuditEntity> optReset = events.getContent().stream().filter(evt -> user.getId().equals(evt.getProperties().get(USER.name()))).findFirst();
if (optReset.isPresent()) {
LOGGER.warn("Multiple reset password received for user '{}' in less than 1 hour", user.getId());
throw new PasswordAlreadyResetException();
}
}
}
final Map<String, Object> params = getTokenRegistrationParams(convert(user, false), RESET_PASSWORD_PATH, RESET_PASSWORD, resetPageUrl);
notifierService.trigger(PortalHook.PASSWORD_RESET, params);
auditService.createOrganizationAuditLog(GraviteeContext.getCurrentOrganization(), Collections.singletonMap(USER, user.getId()), User.AuditEvent.PASSWORD_RESET, new Date(), null, null);
emailService.sendAsyncEmailNotification(new EmailNotificationBuilder().to(user.getEmail()).template(EmailNotificationBuilder.EmailTemplate.TEMPLATES_FOR_ACTION_USER_PASSWORD_RESET).params(params).build(), GraviteeContext.getCurrentContext());
} catch (TechnicalException ex) {
final String message = "An error occurs while trying to reset password for user " + id;
LOGGER.error(message, ex);
throw new TechnicalManagementException(message, ex);
}
}
Aggregations