diff --git a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/user/UserServiceImpl.java b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/user/UserServiceImpl.java index 66706506..8d56de3e 100644 --- a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/user/UserServiceImpl.java +++ b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/user/UserServiceImpl.java @@ -334,28 +334,54 @@ public class UserServiceImpl implements UserService { Preconditions.checkNotNull(user, I18n.get("User cannot be null.")); try { - if (!user.getSendEmailUponPasswordChange()) { + + Boolean sendEmailUponPasswordChange = user.getSendEmailUponPasswordChange(); + Boolean sendEmailUponAccountCreation = user.getSendEmailUponAccountCreation(); + + if(!sendEmailUponPasswordChange && !sendEmailUponAccountCreation){ return; } - if (user.equals(AuthUtils.getUser())) { - logger.debug("User {} changed own password.", user.getCode()); - return; + if(sendEmailUponPasswordChange){ + + if (user.equals(AuthUtils.getUser())) { + logger.debug("User {} changed own password.", user.getCode()); + return; + } + + AppBase appBase = Beans.get(AppBaseService.class).getAppBase(); + Template template = appBase.getPasswordChangedTemplate(); + + if (template == null) { + throw new AxelorException( + appBase, + TraceBackRepository.CATEGORY_NO_VALUE, + I18n.get("Template for changed password is missing.")); + } + + TemplateMessageService templateMessageService = Beans.get(TemplateMessageService.class); + templateMessageService.generateAndSendMessage(user, template); } - AppBase appBase = Beans.get(AppBaseService.class).getAppBase(); - Template template = appBase.getPasswordChangedTemplate(); + if(sendEmailUponAccountCreation){ + if (user.equals(AuthUtils.getUser())) { + logger.debug("User {} changed own password.", user.getCode()); + return; + } - if (template == null) { - throw new AxelorException( - appBase, - TraceBackRepository.CATEGORY_NO_VALUE, - I18n.get("Template for changed password is missing.")); + AppBase appBase = Beans.get(AppBaseService.class).getAppBase(); + Template template = appBase.getAccountCreationTemplate(); + + if (template == null) { + throw new AxelorException( + appBase, + TraceBackRepository.CATEGORY_NO_VALUE, + I18n.get("Template for account creation is missing.")); + } + + TemplateMessageService templateMessageService = Beans.get(TemplateMessageService.class); + templateMessageService.generateAndSendMessage(user, template); } - - TemplateMessageService templateMessageService = Beans.get(TemplateMessageService.class); - templateMessageService.generateAndSendMessage(user, template); - } finally { user.setTransientPassword(null); } diff --git a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml index f08b206e..dc245a11 100644 --- a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml +++ b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml @@ -74,8 +74,13 @@ + - + + + + + @@ -135,6 +140,7 @@ + diff --git a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/User.xml b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/User.xml index 518edd78..358b4667 100644 --- a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/User.xml +++ b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/User.xml @@ -36,6 +36,7 @@ + @@ -70,6 +71,7 @@ +