branch develop updated (984fbd9 -> cf69dca)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git from 984fbd9 Merge branch 'develop' of https://git.codelutin.com/coselmar into develop new cf69dca Add two default users in applications Fix mail support on user account creation The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit cf69dca56579074d6e26eb5e33c1e02d58217018 Author: Yannick Martel <martel@©odelutin.com> Date: Fri Nov 21 16:22:10 2014 +0100 Add two default users in applications Fix mail support on user account creation Summary of changes: .../src/main/xmi/coselmar-model.zargo | Bin 6024 -> 6029 bytes .../coselmar/beans/UserAccountCreatedMail.java | 4 +- .../coselmar/converter/BeanEntityConverter.java | 6 +-- .../services/CoselmarRestRequestContext.java | 4 +- .../CoselmarServicesApplicationContext.java | 8 ++++ .../services/CoselmarSimpleServiceSupport.java | 40 ++++++++++++++++ .../services/CoselmarWebServiceSupport.java | 6 +-- .../services/v1/InitialisationService.java | 52 +++++++++++++++++++++ .../coselmar/services/v1/UsersWebService.java | 27 ++++++----- .../i18n/coselmar-services_en_GB.properties | 1 + .../i18n/coselmar-services_fr_FR.properties | 1 + .../resources/mail/UserAccountCreatedMail.mustache | 2 +- .../mail/UserAccountCreatedMail_fr.mustache | 2 +- 13 files changed, 127 insertions(+), 26 deletions(-) create mode 100644 coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarSimpleServiceSupport.java create mode 100644 coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/InitialisationService.java create mode 100644 coselmar-rest/src/main/resources/i18n/coselmar-services_en_GB.properties create mode 100644 coselmar-rest/src/main/resources/i18n/coselmar-services_fr_FR.properties -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit cf69dca56579074d6e26eb5e33c1e02d58217018 Author: Yannick Martel <martel@©odelutin.com> Date: Fri Nov 21 16:22:10 2014 +0100 Add two default users in applications Fix mail support on user account creation --- .../src/main/xmi/coselmar-model.zargo | Bin 6024 -> 6029 bytes .../coselmar/beans/UserAccountCreatedMail.java | 4 +- .../coselmar/converter/BeanEntityConverter.java | 6 +-- .../services/CoselmarRestRequestContext.java | 4 +- .../CoselmarServicesApplicationContext.java | 8 ++++ .../services/CoselmarSimpleServiceSupport.java | 40 ++++++++++++++++ .../services/CoselmarWebServiceSupport.java | 6 +-- .../services/v1/InitialisationService.java | 52 +++++++++++++++++++++ .../coselmar/services/v1/UsersWebService.java | 27 ++++++----- .../i18n/coselmar-services_en_GB.properties | 1 + .../i18n/coselmar-services_fr_FR.properties | 1 + .../resources/mail/UserAccountCreatedMail.mustache | 2 +- .../mail/UserAccountCreatedMail_fr.mustache | 2 +- 13 files changed, 127 insertions(+), 26 deletions(-) diff --git a/coselmar-persistence/src/main/xmi/coselmar-model.zargo b/coselmar-persistence/src/main/xmi/coselmar-model.zargo index bcd73e2..11e04de 100644 Binary files a/coselmar-persistence/src/main/xmi/coselmar-model.zargo and b/coselmar-persistence/src/main/xmi/coselmar-model.zargo differ diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/UserAccountCreatedMail.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/UserAccountCreatedMail.java index 4c82196..dab6969 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/UserAccountCreatedMail.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/UserAccountCreatedMail.java @@ -40,9 +40,9 @@ public class UserAccountCreatedMail { public String getSubject() { String fullname = Strings.nullToEmpty(user.getFirstName()) + " " + Strings.nullToEmpty(user.getName()); if (StringUtils.isBlank(fullname)) { - return I18n.l(locale, "coselmar.service.mail.UserAccountCreatedEmail.subject", user.getMail()); + return I18n.l(locale, "coselmar.service.mail.UserAccountCreatedMail.subject", user.getMail()); } - return I18n.l(locale, "coselmar.service.mail.UserAccountCreatedEmail.subject", fullname); + return I18n.l(locale, "coselmar.service.mail.UserAccountCreatedMail.subject", fullname); } @Override diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java index 5475788..f024037 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java @@ -28,8 +28,8 @@ import java.util.Date; import fr.ifremer.coselmar.beans.DocumentBean; import fr.ifremer.coselmar.beans.UserBean; +import fr.ifremer.coselmar.persistence.entity.CoselmarUser; import fr.ifremer.coselmar.persistence.entity.Document; -import fr.ifremer.coselmar.persistence.entity.User; /** * @author ymartel <martel@codelutin.com> @@ -48,8 +48,8 @@ public class BeanEntityConverter { document.getMimeType()); } - public static UserBean toBean(User user) { - String userLightId = user.getTopiaId().replace(User.class.getCanonicalName() + "_", ""); + public static UserBean toBean(CoselmarUser user) { + String userLightId = user.getTopiaId().replace(CoselmarUser.class.getCanonicalName() + "_", ""); return new UserBean(userLightId, user.getFirstname(), user.getName(), diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarRestRequestContext.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarRestRequestContext.java index b00fd11..a6eab47 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarRestRequestContext.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarRestRequestContext.java @@ -41,8 +41,8 @@ public class CoselmarRestRequestContext { } public static void setRequestContext(HttpContext httpContext, - CoselmarRestRequestContext serviceContext) { - httpContext.getRequest().setAttribute(REQUEST_COSELMAR_REQUEST_CONTEXT, serviceContext); + CoselmarRestRequestContext requestContext) { + httpContext.getRequest().setAttribute(REQUEST_COSELMAR_REQUEST_CONTEXT, requestContext); } protected CoselmarServicesContext servicesContext; diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarServicesApplicationContext.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarServicesApplicationContext.java index ab7e88d..3ebc006 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarServicesApplicationContext.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarServicesApplicationContext.java @@ -36,6 +36,7 @@ import fr.ifremer.coselmar.persistence.CoselmarPersistenceContext; import fr.ifremer.coselmar.persistence.CoselmarTopiaApplicationContext; import fr.ifremer.coselmar.persistence.CoselmarTopiaPersistenceContext; import fr.ifremer.coselmar.services.config.CoselmarServicesConfig; +import fr.ifremer.coselmar.services.v1.InitialisationService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.LogManager; @@ -218,6 +219,13 @@ public class CoselmarServicesApplicationContext implements CoselmarApplicationCo I18n.init(initializer, Locale.FRANCE); + {//Init some users + CoselmarTopiaPersistenceContext persistenceContext = newPersistenceContext(); + CoselmarServicesContext serviceContext = newServiceContext(persistenceContext, Locale.FRANCE); + serviceContext.newService(InitialisationService.class).createDefaultUsers(); + persistenceContext.close(); + } + started.set(true); } diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarSimpleServiceSupport.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarSimpleServiceSupport.java new file mode 100644 index 0000000..74edaef --- /dev/null +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarSimpleServiceSupport.java @@ -0,0 +1,40 @@ +package fr.ifremer.coselmar.services; + +import fr.ifremer.coselmar.persistence.CoselmarPersistenceContext; +import fr.ifremer.coselmar.persistence.entity.CoselmarUserTopiaDao; +import fr.ifremer.coselmar.services.config.CoselmarServicesConfig; + +/** + * @author ymartel <martel@codelutin.com> + */ +public class CoselmarSimpleServiceSupport implements CoselmarService { + + protected CoselmarServicesContext servicesContext; + + @Override + public void setServicesContext(CoselmarServicesContext servicesContext) { + this.servicesContext = servicesContext; + } + + protected CoselmarPersistenceContext getPersistenceContext() { + return servicesContext.getPersistenceContext(); + } + + protected CoselmarServicesConfig getCoselmarServicesConfig() { + return servicesContext.getCoselmarServicesConfig(); + } + + protected CoselmarUserTopiaDao getCoselmarUserDao() { + return getPersistenceContext().getCoselmarUserDao(); + } + + public void commit() { + getPersistenceContext().commit(); + } + + public void rollback() { + getPersistenceContext().rollback(); + } + + +} diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarWebServiceSupport.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarWebServiceSupport.java index 386619f..8e24e97 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarWebServiceSupport.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/CoselmarWebServiceSupport.java @@ -28,8 +28,8 @@ import java.util.Date; import java.util.Locale; import fr.ifremer.coselmar.persistence.CoselmarPersistenceContext; +import fr.ifremer.coselmar.persistence.entity.CoselmarUserTopiaDao; import fr.ifremer.coselmar.persistence.entity.DocumentTopiaDao; -import fr.ifremer.coselmar.persistence.entity.UserTopiaDao; import fr.ifremer.coselmar.services.config.CoselmarServicesConfig; import fr.ifremer.coselmar.services.v1.DocumentsWebService; import org.debux.webmotion.server.WebMotionController; @@ -94,8 +94,8 @@ public abstract class CoselmarWebServiceSupport extends WebMotionController impl return getPersistenceContext().getDocumentDao(); } - protected UserTopiaDao getUserDao() { - return getPersistenceContext().getUserDao(); + protected CoselmarUserTopiaDao getCoselmarUserDao() { + return getPersistenceContext().getCoselmarUserDao(); } public void commit() { diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/InitialisationService.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/InitialisationService.java new file mode 100644 index 0000000..98b9834 --- /dev/null +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/InitialisationService.java @@ -0,0 +1,52 @@ +package fr.ifremer.coselmar.services.v1; + +import fr.ifremer.coselmar.persistence.entity.CoselmarUser; +import fr.ifremer.coselmar.persistence.entity.CoselmarUserRole; +import fr.ifremer.coselmar.services.CoselmarSimpleServiceSupport; + +/** + * @author ymartel <martel@codelutin.com> + */ +public class InitialisationService extends CoselmarSimpleServiceSupport { + + /** + * Create Two default users for the application <strong>if there is no users in application</strong>. + * So, this operation is called in {@link fr.ifremer.coselmar.services.CoselmarApplicationContext#init()}, when application is starting. + * + */ + public void createDefaultUsers() { + + if (getCoselmarUserDao().count() == 0) { + + // set an admin user + CoselmarUser admin = getCoselmarUserDao().create(); + admin.setFirstname("Admin"); + admin.setMail("admin@temporary.coselmar"); + admin.setOrganization("Coselmar"); + admin.setRole(CoselmarUserRole.ADMIN); + + String salt = servicesContext.generateSalt(); + String encodedPassword = servicesContext.encodePassword(salt, "manager1234"); + admin.setPassword(encodedPassword); + admin.setSalt(salt); + + commit(); + + // Set a lambda expert + CoselmarUser user = getCoselmarUserDao().create(); + user.setFirstname("Lambda"); + user.setName("Expert"); + user.setMail("lambda.expert@temporary.coselmar"); + user.setRole(CoselmarUserRole.EXPERT); + + String lambdaSalt = servicesContext.generateSalt(); + String lambdaPassword = servicesContext.encodePassword(lambdaSalt, "manager1234"); + admin.setPassword(lambdaPassword); + admin.setSalt(lambdaSalt); + + commit(); + + } + } + +} diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/UsersWebService.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/UsersWebService.java index 433c7c4..6e99a34 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/UsersWebService.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/UsersWebService.java @@ -17,8 +17,8 @@ import com.google.common.base.Preconditions; import fr.ifremer.coselmar.beans.UserAccountCreatedMail; import fr.ifremer.coselmar.beans.UserBean; import fr.ifremer.coselmar.converter.BeanEntityConverter; -import fr.ifremer.coselmar.persistence.entity.User; -import fr.ifremer.coselmar.persistence.entity.UserRole; +import fr.ifremer.coselmar.persistence.entity.CoselmarUser; +import fr.ifremer.coselmar.persistence.entity.CoselmarUserRole; import fr.ifremer.coselmar.services.CoselmarTechnicalException; import fr.ifremer.coselmar.services.CoselmarWebServiceSupport; import fr.ifremer.coselmar.services.config.CoselmarServicesConfig; @@ -43,25 +43,25 @@ public class UsersWebService extends CoselmarWebServiceSupport { public UserBean getUser(String userId) { // reconstitute full id - String fullId = User.class.getCanonicalName() + "_" + userId; + String fullId = CoselmarUser.class.getCanonicalName() + "_" + userId; - User user = getUserDao().forTopiaIdEquals(fullId).findUnique(); + CoselmarUser user = getCoselmarUserDao().forTopiaIdEquals(fullId).findUnique(); UserBean userBean = BeanEntityConverter.toBean(user); return userBean; } public List<UserBean> getUsers(String searchKey) { - List<User> userList; + List<CoselmarUser> userList; if (StringUtils.isNotBlank(searchKey)) { //TODO find on all parts ? userList = new ArrayList<>(); } else { - userList = getUserDao().findAll(); + userList = getCoselmarUserDao().findAll(); } List<UserBean> result = new ArrayList<>(userList.size()); - for (User user : userList) { + for (CoselmarUser user : userList) { UserBean userBean = BeanEntityConverter.toBean(user); result.add(userBean); } @@ -72,13 +72,13 @@ public class UsersWebService extends CoselmarWebServiceSupport { public void addUser(UserBean user) { Preconditions.checkNotNull(user); - User userEntity = getUserDao().create(); + CoselmarUser userEntity = getCoselmarUserDao().create(); userEntity.setFirstname(user.getFirstName()); userEntity.setName(user.getName()); String mail = getCleanMail(user.getMail()); userEntity.setMail(mail); - userEntity.setRole(UserRole.valueOf(user.getRole().toUpperCase())); + userEntity.setRole(CoselmarUserRole.valueOf(user.getRole().toUpperCase())); userEntity.setQualification(user.getQualification()); String password = user.getPassword(); @@ -111,7 +111,7 @@ public class UsersWebService extends CoselmarWebServiceSupport { Preconditions.checkNotNull(mail); Preconditions.checkNotNull(password); - User user = getUserDao().forMailEquals(getCleanMail(mail)).findAny(); + CoselmarUser user = getCoselmarUserDao().forMailEquals(getCleanMail(mail)).findAny(); String salt = user.getSalt(); String encodedPassword = getServicesContext().encodePassword(salt, password); @@ -141,15 +141,14 @@ public class UsersWebService extends CoselmarWebServiceSupport { public void deleteUser(String userId) { // reconstitute full id - String fullId = User.class.getCanonicalName() + "_" + userId; + String fullId = CoselmarUser.class.getCanonicalName() + "_" + userId; - User user = getUserDao().forTopiaIdEquals(fullId).findUnique(); - getUserDao().delete(user); + CoselmarUser user = getCoselmarUserDao().forTopiaIdEquals(fullId).findUnique(); + getCoselmarUserDao().delete(user); commit(); } - ///////////////////////////////////////////// /////////////// MAIL PART /////////////// ///////////////////////////////////////////// diff --git a/coselmar-rest/src/main/resources/i18n/coselmar-services_en_GB.properties b/coselmar-rest/src/main/resources/i18n/coselmar-services_en_GB.properties new file mode 100644 index 0000000..4fbad7d --- /dev/null +++ b/coselmar-rest/src/main/resources/i18n/coselmar-services_en_GB.properties @@ -0,0 +1 @@ +coselmar.service.mail.UserAccountCreatedMail.subject=[Coselmar] Account creation %s \ No newline at end of file diff --git a/coselmar-rest/src/main/resources/i18n/coselmar-services_fr_FR.properties b/coselmar-rest/src/main/resources/i18n/coselmar-services_fr_FR.properties new file mode 100644 index 0000000..a445de0 --- /dev/null +++ b/coselmar-rest/src/main/resources/i18n/coselmar-services_fr_FR.properties @@ -0,0 +1 @@ +coselmar.service.mail.UserAccountCreatedMail.subject=[Coselmar] Création du compte %s \ No newline at end of file diff --git a/coselmar-rest/src/main/resources/mail/UserAccountCreatedMail.mustache b/coselmar-rest/src/main/resources/mail/UserAccountCreatedMail.mustache index 10265c0..cc66848 100644 --- a/coselmar-rest/src/main/resources/mail/UserAccountCreatedMail.mustache +++ b/coselmar-rest/src/main/resources/mail/UserAccountCreatedMail.mustache @@ -2,7 +2,7 @@ Welcome {{user.name}}, An account has been created for you on the web application Coselmar. -Email: {{user.email}} +Email: {{user.mail}} Password: {{password}} You can now access to your account by logging on the <a href="{{coselmarUrl}}">Coselmar</a> website. \ No newline at end of file diff --git a/coselmar-rest/src/main/resources/mail/UserAccountCreatedMail_fr.mustache b/coselmar-rest/src/main/resources/mail/UserAccountCreatedMail_fr.mustache index ec531e4..c573235 100644 --- a/coselmar-rest/src/main/resources/mail/UserAccountCreatedMail_fr.mustache +++ b/coselmar-rest/src/main/resources/mail/UserAccountCreatedMail_fr.mustache @@ -2,7 +2,7 @@ Bonjour {{user.name}}, Un compte vous a été ouvert sur l'application Coselmar. -Courriel: {{user.email}} +Courriel: {{user.mail}} Password: {{password}} Vous pouvez dès à présent accéder à l'application en vous connectant sur <a href="{{coselmarUrl}}">Coselmar</a>. \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm