/** * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.mifosplatform.useradministration.domain; import org.mifosplatform.infrastructure.core.domain.EmailDetail; import org.mifosplatform.infrastructure.core.service.PlatformEmailService; import org.mifosplatform.infrastructure.security.service.PlatformPasswordEncoder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class JpaUserDomainService implements UserDomainService { private final AppUserRepository userRepository; private final PlatformPasswordEncoder applicationPasswordEncoder; private final PlatformEmailService emailService; @Autowired public JpaUserDomainService(final AppUserRepository userRepository, final PlatformPasswordEncoder applicationPasswordEncoder, final PlatformEmailService emailService) { this.userRepository = userRepository; this.applicationPasswordEncoder = applicationPasswordEncoder; this.emailService = emailService; } @Transactional @Override public void create(final AppUser appUser, final Boolean sendPasswordToEmail) { generateKeyUsedForPasswordSalting(appUser); final String unencodedPassword = appUser.getPassword(); final String encodePassword = this.applicationPasswordEncoder.encode(appUser); appUser.updatePassword(encodePassword); this.userRepository.saveAndFlush(appUser); if (sendPasswordToEmail.booleanValue()) { final EmailDetail emailDetail = new EmailDetail(appUser.getOffice().getName(), appUser.getFirstname(), appUser.getEmail(), appUser.getUsername()); this.emailService.sendToUserAccount(emailDetail, unencodedPassword); } } private void generateKeyUsedForPasswordSalting(final AppUser appUser) { this.userRepository.save(appUser); } }