Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2015 the original author or authors
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * 	http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package com.clusterra.iam.core.application.user;
 
 import  org.springframework.beans.factory.annotation.Autowired;
 import  org.springframework.context.ApplicationEventPublisher;
 import  org.springframework.stereotype.Component;
 import  org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;

Author(s):
Alexander Fyodorov
Denis Kuchugurov
 
 @Component
 public class UserCommandServiceImpl implements UserCommandService {
 
     private static final Logger log = LoggerFactory.getLogger(UserCommandServiceImpl.class);
 
     @Autowired
 
     @Autowired
     private UserRepository userRepository;
 
     @Autowired
 
     @Autowired
     private ApplicationEventPublisher applicationEventPublisher;
 
 
     @Transactional
         User user = createUser(tenantIdemail);
 
         user.setActivationToken();
 
         .save(user);
 
         .publishEvent(new UserInvitedEvent(thistenantIdnew UserId(user.getId()), emailuser.getActivationToken().getToken()));
         return user;
     }
 
 
     @Transactional
     public User activate(String activationTokenString loginString passwordString firstNameString lastNamethrows InvalidUserActivationTokenExceptionLoginAlreadyExistsException {
 
         if (StringUtils.isEmpty(activationToken)) {
             throw new InvalidUserActivationTokenException(activationToken);
         }
 
         User user = .findByActivationToken(activationToken);
         if (user == null) {
             throw new InvalidUserActivationTokenException(activationToken);
         }
 
         if (.findByLogin(login) != null) {
             throw new LoginAlreadyExistsException(login);
         }
        user.setFirstName(firstName);
        user.setLastName(lastName);
        user.setCredentials(login.encrypt(password));
        user.enable();
        user.resetActivationToken();
        UserId userId = new UserId(user.getId());
        .publishEvent(new UserActivatedEvent(thisuser.getPerson().getContactInformation().getEmail(), loginnew TenantId(user.getTenant().getId()), userId));
        return user;
    }
    @Transactional
    public User resetPassword(String passwordTokenString passwordthrows InvalidPasswordTokenExceptionUserDisabledException {
        User user = .findByPasswordToken(passwordToken);
        if (user == null) {
            throw new InvalidPasswordTokenException(passwordToken);
        }
        if (!user.isEnabled()) {
            throw new UserDisabledException(user.getLogin());
        }
        setPassword(userpassword);
        return user;
    }
    private void setPassword(User userString password) {
        user.updatePassword(.encrypt(password));
        user.resetPasswordToken();
        String email = user.getPerson().getContactInformation().getEmail();
        .publishEvent(new PasswordChangedEvent(thisnew UserId(user.getId()), email));
    }
    @Transactional
    public User changePassword(UserId userIdString passwordthrows UserNotFoundException {
        User user = getUser(userId);
        setPassword(userpassword);
        return user;
    }
    @Transactional
    public User enable(UserId userIdthrows UserNotFoundException {
        User user = getUser(userId);
        user.enable();
        .publishEvent(new UserEnabledEvent(thisuserId));
        return user;
    }
    @Transactional
    public User create(TenantId tenantIdString loginString emailString passwordString firstNameString lastNamethrows EmailAlreadyExistsExceptionInvalidEmailExceptionLoginAlreadyExistsExceptionTenantNotFoundException {
        User user = createUser(tenantIdemail);
        if (.findByLogin(login) != null) {
            throw new LoginAlreadyExistsException(login);
        }
        user.setCredentials(login.encrypt(password));
        user.setFirstName(firstName);
        user.setLastName(lastName);
        user.enable();
        .save(user);
        return user;
    }
        checkEmail(email);
        Tenant tenant = .find(tenantId);
        User user = new User(EmailValidor.validate(email), tenant);
        .save(user);
        .publishEvent(new UserCreatedEvent(thistenantIdnew UserId(user.getId())));
        return user;
    }
    @Transactional
    public void delete(UserId userIdthrows UserNotFoundException {
        User user = getUser(userId);
        delete(user);
    }
    private void delete(User user) {
        .publishEvent(new UserDeletingEvent(thisnew UserId(user.getId())));
        .delete(user);
        .publishEvent(new UserDeletedEvent(thisnew UserId(user.getId())));
    }
    @Transactional
    public User disable(UserId userIdthrows UserNotFoundException {
        User user = getUser(userId);
        user.disable();
        .publishEvent(new UserDisabledEvent(thisuserId));
        return user;
    }
    @Transactional
    public void updateLogin(UserId userIdString loginthrows LoginAlreadyExistsExceptionUserNotFoundException {
        User user = getUser(userId);
        String oldLogin = user.getLogin();
        if (oldLogin.equals(login)) {
            return;
        }
        if (.findByLogin(login) != null) {
            throw new LoginAlreadyExistsException(login);
        }
        user.setLogin(login);
        .publishEvent(new UserLoginUpdatedEvent(thisnew TenantId(user.getTenant().getId()), userIdoldLoginuser.getLogin()));
    }
    @Transactional
        User user = getUser(userId);
        String oldEmail = user.getPerson().getContactInformation().getEmail();
        email = email.trim().toLowerCase();
        if (oldEmail.equals(email)) {
            return;
        }
        checkEmail(email);
        user.changeEmail(EmailValidor.validate(email));
        .publishEvent(new UserEmailUpdatedEvent(thisuserIdoldEmailemail));
    }
    @Transactional
    public User updateName(UserId userIdString firstNameString lastNamethrows UserNotFoundException {
        User user = getUser(userId);
        String oldFirstName = user.getPerson().getFirstName();
        String oldLastName = user.getPerson().getLastName();
        if (oldFirstName.equals(firstName) && oldLastName.equals(lastName)) {
            return user;
        }
        user.setFirstName(firstName);
        user.setLastName(lastName);
        .publishEvent(new UserDisplayNameUpdatedEvent(thisuserIdfirstNamelastName));
        return user;
    }
    @Transactional
    public User updateAvatar(UserId userIdString avatarIdthrows UserNotFoundException {
        User user = getUser(userId);
        user.setAvatarId(avatarId);
        return user;
    }
    @Transactional
    public void forgotPassword(String loginOrEmailthrows UserDisabledException {
        Validate.notEmpty(loginOrEmail"loginOrEmail is empty");
        User user = .findByLoginOrEmail(loginOrEmail);
        if (user == null) {
            return;
        }
        if (!user.isEnabled()) {
            throw new UserDisabledException(user.getLogin());
        }
        user.setPasswordToken();
        String email = user.getPerson().getContactInformation().getEmail();
        .publishEvent(new ChangePasswordRequestedEvent(thisuser.getPasswordToken(), email));
    }
    @Transactional
    public User cancelInvitation(UserId userIdthrows UserNotFoundException {
        User user = getUser(userId);
        user.resetActivationToken();
        .delete(user);
        return user;
    }
    @Transactional
    public void deleteByTenantId(TenantId tenantId) {
        List<Userusers = .findByTenantId(tenantId.getId());
        for (User user : users) {
            delete(user);
        }
    }
    private User getUser(UserId userIdthrows UserNotFoundException {
        User user = .findOne(userId.getId());
        if (user == null) {
            throw new UserNotFoundException(userId);
        }
        return user;
    }
    private void checkEmail(String emailthrows InvalidEmailExceptionEmailAlreadyExistsException {
        EmailValidor.validate(email);
        if (.findByEmail(email) != null) {
            throw new EmailAlreadyExistsException(email);
        }
    }
New to GrepCode? Check out our FAQ X