Search in sources :

Example 1 with User

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());
}
Also used : RoleEntity(io.gravitee.management.model.RoleEntity) UserRoleEntity(io.gravitee.management.model.UserRoleEntity) User(io.gravitee.repository.management.model.User) ArgumentMatcher(org.mockito.ArgumentMatcher) UserEntity(io.gravitee.management.model.UserEntity) NewExternalUserEntity(io.gravitee.management.model.NewExternalUserEntity) Test(org.junit.Test)

Example 2 with User

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);
    }
}
Also used : RoleScope(io.gravitee.repository.management.model.RoleScope) java.util(java.util) BCryptPasswordEncoder(org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder) NotificationParamsBuilder(io.gravitee.management.service.notification.NotificationParamsBuilder) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) MembershipDefaultReferenceId(io.gravitee.repository.management.model.MembershipDefaultReferenceId) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) EmailNotificationBuilder(io.gravitee.management.service.builder.EmailNotificationBuilder) StringUtils(org.apache.commons.lang3.StringUtils) Value(org.springframework.beans.factory.annotation.Value) DEFAULT_JWT_EMAIL_REGISTRATION_EXPIRE_AFTER(io.gravitee.management.service.common.JWTHelper.DefaultValues.DEFAULT_JWT_EMAIL_REGISTRATION_EXPIRE_AFTER) JWTVerifier(com.auth0.jwt.JWTVerifier) UUID(io.gravitee.common.utils.UUID) ConfigurableEnvironment(org.springframework.core.env.ConfigurableEnvironment) io.gravitee.management.model(io.gravitee.management.model) UserRepository(io.gravitee.repository.management.api.UserRepository) JWTSigner(com.auth0.jwt.JWTSigner) DEFAULT_JWT_ISSUER(io.gravitee.management.service.common.JWTHelper.DefaultValues.DEFAULT_JWT_ISSUER) UserNotFoundException(io.gravitee.management.service.exceptions.UserNotFoundException) Claims(io.gravitee.management.service.common.JWTHelper.Claims) MembershipReferenceType(io.gravitee.repository.management.model.MembershipReferenceType) UsernameAlreadyExistsException(io.gravitee.management.service.exceptions.UsernameAlreadyExistsException) Logger(org.slf4j.Logger) DefaultRoleNotFoundException(io.gravitee.management.service.exceptions.DefaultRoleNotFoundException) TechnicalManagementException(io.gravitee.management.service.exceptions.TechnicalManagementException) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) PortalHook(io.gravitee.management.service.notification.PortalHook) Collectors(java.util.stream.Collectors) IOUtils(org.apache.commons.io.IOUtils) Component(org.springframework.stereotype.Component) PasswordEncoder(org.springframework.security.crypto.password.PasswordEncoder) USER(io.gravitee.repository.management.model.Audit.AuditProperties.USER) io.gravitee.management.service(io.gravitee.management.service) User(io.gravitee.repository.management.model.User) io.gravitee.common.utils(io.gravitee.common.utils) DatatypeConverter(javax.xml.bind.DatatypeConverter) User(io.gravitee.repository.management.model.User) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) TechnicalManagementException(io.gravitee.management.service.exceptions.TechnicalManagementException)

Example 3 with User

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);
    }
}
Also used : UserNotFoundException(io.gravitee.management.service.exceptions.UserNotFoundException) User(io.gravitee.repository.management.model.User) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) TechnicalManagementException(io.gravitee.management.service.exceptions.TechnicalManagementException)

Example 4 with User

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);
    }
}
Also used : UserNotFoundException(io.gravitee.management.service.exceptions.UserNotFoundException) User(io.gravitee.repository.management.model.User) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) TechnicalManagementException(io.gravitee.management.service.exceptions.TechnicalManagementException)

Example 5 with User

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);
    }
}
Also used : UsernameAlreadyExistsException(io.gravitee.management.service.exceptions.UsernameAlreadyExistsException) User(io.gravitee.repository.management.model.User) JWTVerifier(com.auth0.jwt.JWTVerifier) TechnicalException(io.gravitee.repository.exceptions.TechnicalException) UserNotFoundException(io.gravitee.management.service.exceptions.UserNotFoundException) UsernameAlreadyExistsException(io.gravitee.management.service.exceptions.UsernameAlreadyExistsException) DefaultRoleNotFoundException(io.gravitee.management.service.exceptions.DefaultRoleNotFoundException) TechnicalManagementException(io.gravitee.management.service.exceptions.TechnicalManagementException) IOException(java.io.IOException) TechnicalManagementException(io.gravitee.management.service.exceptions.TechnicalManagementException)

Aggregations

User (io.gravitee.repository.management.model.User)12 TechnicalManagementException (io.gravitee.management.service.exceptions.TechnicalManagementException)9 TechnicalException (io.gravitee.repository.exceptions.TechnicalException)9 UserNotFoundException (io.gravitee.management.service.exceptions.UserNotFoundException)8 UsernameAlreadyExistsException (io.gravitee.management.service.exceptions.UsernameAlreadyExistsException)4 JWTVerifier (com.auth0.jwt.JWTVerifier)3 DefaultRoleNotFoundException (io.gravitee.management.service.exceptions.DefaultRoleNotFoundException)3 IOException (java.io.IOException)3 JWTSigner (com.auth0.jwt.JWTSigner)2 io.gravitee.common.utils (io.gravitee.common.utils)2 UUID (io.gravitee.common.utils.UUID)2 io.gravitee.management.model (io.gravitee.management.model)2 io.gravitee.management.service (io.gravitee.management.service)2 EmailNotificationBuilder (io.gravitee.management.service.builder.EmailNotificationBuilder)2 Claims (io.gravitee.management.service.common.JWTHelper.Claims)2 DEFAULT_JWT_EMAIL_REGISTRATION_EXPIRE_AFTER (io.gravitee.management.service.common.JWTHelper.DefaultValues.DEFAULT_JWT_EMAIL_REGISTRATION_EXPIRE_AFTER)2 DEFAULT_JWT_ISSUER (io.gravitee.management.service.common.JWTHelper.DefaultValues.DEFAULT_JWT_ISSUER)2 NotificationParamsBuilder (io.gravitee.management.service.notification.NotificationParamsBuilder)2 PortalHook (io.gravitee.management.service.notification.PortalHook)2 UserRepository (io.gravitee.repository.management.api.UserRepository)2