branch feature/1_socialauth updated (6ad03011 -> c04a57ed)
This is an automated email from the git hooks/post-receive script. New change to branch feature/1_socialauth in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git from 6ad03011 refs #1 gestion des tiers de connexion + style du login new c04a57ed refs #1 erreur si l'utilisateur veut se connecter via un service tiers et que son email est deja utilisé par un autre compte Pollen 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 c04a57ed346b619226b41e2a5b204fe3544e8add Author: Kevin Morin <morin@codelutin.com> Date: Tue Aug 29 17:57:01 2017 +0200 refs #1 erreur si l'utilisateur veut se connecter via un service tiers et que son email est deja utilisé par un autre compte Pollen Summary of changes: .../pollen/rest/api/PollenRestApiApplication.java | 2 ++ .../PollenEmailAlreadyUsedExceptionMapper.java | 20 ++++++++++++++ .../pollen/services/service/SocialAuthService.java | 4 +++ .../security/PollenEmailAlreadyUsedException.java | 11 ++++++++ pollen-ui-riot-js/src/main/web/i18n.json | 2 ++ pollen-ui-riot-js/src/main/web/img/logo.png | Bin 0 -> 10506 bytes pollen-ui-riot-js/src/main/web/tag/Pollen.tag.html | 18 +++++++++++-- .../src/main/web/tag/PollenMessageManager.tag.html | 2 ++ .../src/main/web/tag/admin/LoginProviders.tag.html | 30 ++++++++++----------- 9 files changed, 71 insertions(+), 18 deletions(-) create mode 100644 pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/exceptionMappers/PollenEmailAlreadyUsedExceptionMapper.java create mode 100644 pollen-services/src/main/java/org/chorem/pollen/services/service/security/PollenEmailAlreadyUsedException.java create mode 100644 pollen-ui-riot-js/src/main/web/img/logo.png -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/1_socialauth in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit c04a57ed346b619226b41e2a5b204fe3544e8add Author: Kevin Morin <morin@codelutin.com> Date: Tue Aug 29 17:57:01 2017 +0200 refs #1 erreur si l'utilisateur veut se connecter via un service tiers et que son email est deja utilisé par un autre compte Pollen --- .../pollen/rest/api/PollenRestApiApplication.java | 2 ++ .../PollenEmailAlreadyUsedExceptionMapper.java | 20 ++++++++++++++ .../pollen/services/service/SocialAuthService.java | 4 +++ .../security/PollenEmailAlreadyUsedException.java | 11 ++++++++ pollen-ui-riot-js/src/main/web/i18n.json | 2 ++ pollen-ui-riot-js/src/main/web/img/logo.png | Bin 0 -> 10506 bytes pollen-ui-riot-js/src/main/web/tag/Pollen.tag.html | 18 +++++++++++-- .../src/main/web/tag/PollenMessageManager.tag.html | 2 ++ .../src/main/web/tag/admin/LoginProviders.tag.html | 30 ++++++++++----------- 9 files changed, 71 insertions(+), 18 deletions(-) diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplication.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplication.java index 897dfbcf..271b223a 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplication.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplication.java @@ -7,6 +7,7 @@ import org.chorem.pollen.rest.api.exceptionMappers.FavoriteListImportExceptionMa import org.chorem.pollen.rest.api.exceptionMappers.InvalidEntityLinkExceptionMapper; import org.chorem.pollen.rest.api.exceptionMappers.InvalidFormExceptionMapper; import org.chorem.pollen.rest.api.exceptionMappers.PollenAuthenticationExceptionMapper; +import org.chorem.pollen.rest.api.exceptionMappers.PollenEmailAlreadyUsedExceptionMapper; import org.chorem.pollen.rest.api.exceptionMappers.PollenEmailNotValidatedExceptionMapper; import org.chorem.pollen.rest.api.exceptionMappers.PollenInvalidEmailActivationTokenExceptionMapper; import org.chorem.pollen.rest.api.exceptionMappers.PollenInvalidPermissionExceptionMapper; @@ -61,6 +62,7 @@ public class PollenRestApiApplication extends Application { new PollenInvalidPermissionExceptionMapper(), new PollenInvalidEmailActivationTokenExceptionMapper(), new PollenEmailNotValidatedExceptionMapper(), + new PollenEmailAlreadyUsedExceptionMapper(), new PollenUserBannedExceptionMapper(), new InvalidFormExceptionMapper(), new FavoriteListImportExceptionMapper(), diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/exceptionMappers/PollenEmailAlreadyUsedExceptionMapper.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/exceptionMappers/PollenEmailAlreadyUsedExceptionMapper.java new file mode 100644 index 00000000..3b1ec37b --- /dev/null +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/exceptionMappers/PollenEmailAlreadyUsedExceptionMapper.java @@ -0,0 +1,20 @@ +package org.chorem.pollen.rest.api.exceptionMappers; + +import org.chorem.pollen.services.service.security.PollenEmailAlreadyUsedException; + +import javax.ws.rs.core.Response; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class PollenEmailAlreadyUsedExceptionMapper extends PollenAbstractExceptionMapper<PollenEmailAlreadyUsedException> { + + public PollenEmailAlreadyUsedExceptionMapper() { + super(Response.Status.FORBIDDEN); + } + + @Override + protected Object getEntity(PollenEmailAlreadyUsedException exception) { + return "emailAlreadyUsed"; + } +} diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java index 2e136aa7..8c9f7284 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java @@ -18,6 +18,7 @@ import org.chorem.pollen.persistence.entity.UserCredential; import org.chorem.pollen.persistence.entity.UserCredentialImpl; import org.chorem.pollen.services.bean.LoginProviderBean; import org.chorem.pollen.services.bean.PollenEntityRef; +import org.chorem.pollen.services.service.security.PollenEmailAlreadyUsedException; import java.util.ArrayList; import java.util.List; @@ -56,6 +57,9 @@ public class SocialAuthService extends PollenServiceSupport { } pollenUser = pollenUserForCredential.get(); + } else if (userDao.emailExists(p.getEmail())) { + throw new PollenEmailAlreadyUsedException(); + } else { if (log.isInfoEnabled()) { log.info("create new user : " + name); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/PollenEmailAlreadyUsedException.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/PollenEmailAlreadyUsedException.java new file mode 100644 index 00000000..afd67772 --- /dev/null +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/PollenEmailAlreadyUsedException.java @@ -0,0 +1,11 @@ +package org.chorem.pollen.services.service.security; + +/** + * @author Kevin Morin (Code Lutin) + */ +public class PollenEmailAlreadyUsedException extends Exception { + + public PollenEmailAlreadyUsedException() { + super("emailAlreadyUsed"); + } +} diff --git a/pollen-ui-riot-js/src/main/web/i18n.json b/pollen-ui-riot-js/src/main/web/i18n.json index ce320eaa..4dea55f4 100644 --- a/pollen-ui-riot-js/src/main/web/i18n.json +++ b/pollen-ui-riot-js/src/main/web/i18n.json @@ -13,6 +13,7 @@ "main_editPoll" : "Edition du sondage", "main_userProfile" : "Mon profil", "main_favoriteLists" : "Listes de votants", + "main_emailAlreadyUsed": "L'adresse email du compte avec lequel vous essayez de vous connecter, est déjà utilisée par un autre compte Pollen.", "pagination_all": "Tous", "pagination_resultsPerPage": "Résultats par page", "summary_choices": "Choix", @@ -566,6 +567,7 @@ "main_editPoll" : "Poll edition", "main_userProfile" : "My profile", "main_favoriteLists" : "List of favorites", + "main_emailAlreadyUsed": "The email address of the account you are connecting with is already used by another Pollen account.", "pagination_all": "All", "pagination_resultsPerPage": "Results per page", "summary_choices": "Choices", diff --git a/pollen-ui-riot-js/src/main/web/img/logo.png b/pollen-ui-riot-js/src/main/web/img/logo.png new file mode 100644 index 00000000..79c5e328 Binary files /dev/null and b/pollen-ui-riot-js/src/main/web/img/logo.png differ diff --git a/pollen-ui-riot-js/src/main/web/tag/Pollen.tag.html b/pollen-ui-riot-js/src/main/web/tag/Pollen.tag.html index 5a4114b6..a64d7482 100644 --- a/pollen-ui-riot-js/src/main/web/tag/Pollen.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/Pollen.tag.html @@ -71,15 +71,22 @@ require("./popup/InformationPopup.tag.html"); this.updatePageTitle(); }); + let route = require("riot-route"); + let Message = require("../js/Message"); + this.on("mount", () => { this.listen("locale", this.onLocaleChange); this.listen("unauthorize", this.refs.signIn.open); this.listen("signIn", this.refs.signIn.open); this.listen("closeSignIn", this.refs.signIn.close); + this.listen("messageManagerReady", () => { + let q = route.query(); + if (q.error) { + this.bus.trigger("message", new Message(decodeURIComponent(this._l(q.error)), "error")); + } + }); }); - let route = require("riot-route"); - route("/poll/create", () => { this.bus.trigger("pageChanged", "home"); riot.mount(this.refs.content, "createpoll"); @@ -230,6 +237,13 @@ require("./popup/InformationPopup.tag.html"); let currentPage = localStorage.getItem("currentPage"); localStorage.removeItem("currentPage"); location.href = session.pollenUIContext.uiEndPoint + "/" + currentPage; + }, (e) => { + let currentPage = localStorage.getItem("currentPage"); + localStorage.removeItem("currentPage"); + console.log(e); + e.text().then(label => { + location.href = session.pollenUIContext.uiEndPoint + "/" + currentPage + "?error=" + label; + }); }); } else { diff --git a/pollen-ui-riot-js/src/main/web/tag/PollenMessageManager.tag.html b/pollen-ui-riot-js/src/main/web/tag/PollenMessageManager.tag.html index 6b3854fa..d8fbabdc 100644 --- a/pollen-ui-riot-js/src/main/web/tag/PollenMessageManager.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/PollenMessageManager.tag.html @@ -31,8 +31,10 @@ }, message.timeout * 1000); }; + this.on("mount", () => { this.listen("message", this.handleMessages); + this.bus.trigger("messageManagerReady"); }); this.closeMessage = (messageId) => (e) => { diff --git a/pollen-ui-riot-js/src/main/web/tag/admin/LoginProviders.tag.html b/pollen-ui-riot-js/src/main/web/tag/admin/LoginProviders.tag.html index 49e06b1c..29e16779 100644 --- a/pollen-ui-riot-js/src/main/web/tag/admin/LoginProviders.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/admin/LoginProviders.tag.html @@ -82,23 +82,21 @@ require("../components/HumanInput.tag.html"); e.preventDefault(); e.stopPropagation(); let loginProvider = this.loginProviders[index]; - this.confirm(this.__.deleteMessage).then((confirm) => { - if (confirm) { - if (!loginProvider.id) { - this.loginProviders.splice(index, 1); - this.availableLoginProviders.push(loginProvider.name); - this.availableLoginProviders.sort(); - this.update(); - } else { - authService.deleteLoginProvider(loginProvider).then(() => { - this.loginProviders.splice(index, 1); - this.availableLoginProviders.push(loginProvider.name); - this.availableLoginProviders.sort(); - this.update(); - }); + this.confirm(this.__.deleteMessage) + .then((confirm) => { + if (!confirm) { + return Promise.reject(); } - } - }); + if (confirm && loginProvider.id) { + return authService.deleteLoginProvider(loginProvider); + } + }) + .then(() => { + this.loginProviders.splice(index, 1); + this.availableLoginProviders.push(loginProvider.name); + this.availableLoginProviders.sort(); + this.update(); + }); }; this.saveLoginProvider = (index) => (e) => { -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm