From 7dd286d6d68351866ce9ee8420887f2c5f4c1b28 Mon Sep 17 00:00:00 2001 From: Pierre Date: Wed, 24 May 2017 18:05:09 +0200 Subject: [PATCH] Login form on homepage working --- .../js/components/menuBar/notAuthenticated.js | 123 +++++++++++------- assets/js/pages/login.js | 27 ++-- assets/js/user/userLogin.js | 3 + 3 files changed, 93 insertions(+), 60 deletions(-) diff --git a/assets/js/components/menuBar/notAuthenticated.js b/assets/js/components/menuBar/notAuthenticated.js index 5301bbd9..8bed64bb 100644 --- a/assets/js/components/menuBar/notAuthenticated.js +++ b/assets/js/components/menuBar/notAuthenticated.js @@ -5,63 +5,88 @@ */ ComunicWeb.components.menuBar.notAuthenticated = { - /** - * Add not-authenticated user specific elements - * - * @param {HTMLElement} container The container element of the Menubar - */ - addElements: function(container){ + /** + * Add not-authenticated user specific elements + * + * @param {HTMLElement} container The container element of the Menubar + */ + addElements: function(container){ - //Create an auto-collapsed element - var navbarCollapse = createElem("div", container); - navbarCollapse.id = "navbar-collapse"; - navbarCollapse.className = "navbar-collapse pull-right collapse"; + //Create an auto-collapsed element + var navbarCollapse = createElem("div", container); + navbarCollapse.id = "navbar-collapse"; + navbarCollapse.className = "navbar-collapse pull-right collapse"; - //Create login form - var loginForm = createElem("form", navbarCollapse); - loginForm.className = "navbar-form navbar-left menubar-loginForm"; - loginForm.setAttribute("role", "login"); + //Create login form + var loginForm = createElem("form", navbarCollapse); + loginForm.className = "navbar-form navbar-left menubar-loginForm"; + loginForm.setAttribute("role", "login"); - loginForm.onsubmit = function(){ - //Try to login user; in case of failure redirect to login page - //TODO : implement - //In case of error - ComunicWeb.common.page.openPage("login", { - loginFailedMessage: true, - }); + //Add email address formGroup + var emailFormGroup = createElem("div", loginForm); + emailFormGroup.className = "form-group"; - return false; - } + //Add email input + var emailInput = createElem("input", emailFormGroup); + emailInput.className = "form-control"; + emailInput.placeholder = "Email address"; + emailInput.type = "email"; + emailInput.value = ComunicWeb.components.mailCaching.get(); - //Add email address formGroup - var emailFormGroup = createElem("div", loginForm); - emailFormGroup.className = "form-group"; + //Add password formGroup + var passwordFormGroup = createElem("div", loginForm); + passwordFormGroup.className = "form-group"; - //Add email input - var emailInput = createElem("input", emailFormGroup); - emailInput.className = "form-control"; - emailInput.placeholder = "Email address"; - emailInput.type = "email"; - emailInput.value = ComunicWeb.components.mailCaching.get(); + //Add password input + var passwordInput = createElem("input", passwordFormGroup); + passwordInput.className = "form-control"; + passwordInput.placeholder = "Password"; + passwordInput.type = "password"; - //Add password formGroup - var passwordFormGroup = createElem("div", loginForm); - passwordFormGroup.className = "form-group"; + //Add submit button formGroup + var submitFromGroup = createElem("div", loginForm); + submitFromGroup.className = "form-group"; - //Add password input - var passwordInput = createElem("input", passwordFormGroup); - passwordInput.className = "form-control"; - passwordInput.placeholder = "Password"; - passwordInput.type = "password"; + //Add submit input + var submitInput = createElem("input", submitFromGroup); + submitInput.className = "form-control"; + submitInput.value = "Login"; + submitInput.type = "submit"; - //Add submit button formGroup - var submitFromGroup = createElem("div", loginForm); - submitFromGroup.className = "form-group"; + //Add submit form behaviour + loginForm.onsubmit = function(){ + //Enable screen overlay (use .remove() to remove) + var screenOverlay = ComunicWeb.common.page.showTransparentWaitSplashScreen(); - //Add submit input - var submitInput = createElem("input", submitFromGroup); - submitInput.className = "form-control"; - submitInput.value = "Login"; - submitInput.type = "submit"; - } + //Try to login user; in case of failure redirect to login page + //What to do once user is logged in (or not) + var afterTryLogin = function(loginResult){ + + //First, remove overlay + screenOverlay.remove(); + + //Check if login failed + if(!loginResult){ + + //Redirect to login page + ComunicWeb.common.page.openPage("login", { + loginFailedMessage: true, + emailInput: emailInput.value, + }); + + //Return false + return false; + } + + //Open home page + ComunicWeb.common.page.openPage("home"); + }; + + //Try to login user + ComunicWeb.user.userLogin.loginUser(emailInput.value, passwordInput.value, false, afterTryLogin); + + //Block form + return false; + } + } } \ No newline at end of file diff --git a/assets/js/pages/login.js b/assets/js/pages/login.js index 0fb220a2..a16e5c66 100644 --- a/assets/js/pages/login.js +++ b/assets/js/pages/login.js @@ -13,6 +13,11 @@ ComunicWeb.pages.login = { * @returns {Boolean} False if it fails */ openLoginPage: function(additionnalData, targetElement){ + + //Prevent errors + if(!additionnalData) + additionnalData = {}; + //First, check if user is already logged in or not if(ComunicWeb.user.userLogin.getUserLoginState() === true){ //Log message @@ -55,12 +60,15 @@ ComunicWeb.pages.login = { //loginButton.onclick = ComunicWeb.pages.login.loginSubmit; loginBody.onsubmit = ComunicWeb.pages.login.loginSubmit; - //Check if additionnal data were specified - if(additionnalData){ - //Check if we have to display a login failed message - if(additionnalData.loginFailedMessage) - ComunicWeb.pages.login.displayLoginError(); - } + + //Check now additional parametres changes + //Check if a specific email address was specified + if(additionnalData.emailInput) + byId("usermail").value = additionnalData.emailInput; + + //Check if we have to display a login failed message + if(additionnalData.loginFailedMessage) + ComunicWeb.pages.login.displayLoginError(); }; //Apply template @@ -104,9 +112,6 @@ ComunicWeb.pages.login = { //First, remove overlay screenOverlay.remove(); - //Save email address - ComunicWeb.components.mailCaching.set(usermail); - //Check if login failed if(!loginResult){ @@ -117,8 +122,8 @@ ComunicWeb.pages.login = { return false; } - //Open home page - ComunicWeb.common.page.openPage("home"); + //Open home page + ComunicWeb.common.page.openPage("home"); }; //Try to login user diff --git a/assets/js/user/userLogin.js b/assets/js/user/userLogin.js index b5d7167c..09a20c28 100644 --- a/assets/js/user/userLogin.js +++ b/assets/js/user/userLogin.js @@ -161,6 +161,9 @@ ComunicWeb.user.userLogin = { storageType = "session"; } ComunicWeb.user.loginTokens.setUserTokens(result.tokens, storageType); + + //Save email address + ComunicWeb.components.mailCaching.set(usermail); } //Perform next action if login failed