From 70b46f383c31948e8cf3775f650eecc06e2d05a1 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Fri, 19 Oct 2012 16:49:12 +0000 Subject: [PATCH] [MRM-1699] Re implement remember me in new UI. git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1400163 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/webapp/js/archiva/main.js | 15 +++++-- .../src/main/webapp/js/redback/user.js | 43 ++++++++++++++++--- .../webapp/js/templates/archiva/menu.html | 1 - .../webapp/js/templates/redback/login.html | 5 ++- 4 files changed, 51 insertions(+), 13 deletions(-) diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js index 62c959b67..395c4565f 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js @@ -28,19 +28,26 @@ function(jquery,ui,sammy,tmpl,i18n,jqueryCookie,bootstrap,archivaSearch,jqueryVa * @param user see user.js */ reccordLoginCookie=function(user) { - $.cookie('redback_login', ko.toJSON(user)); + $.cookie('archiva_login', ko.toJSON(user)); }; getUserFromLoginCookie=function(){ - return $.parseJSON($.cookie('redback_login')); + var cookieContent=$.cookie('archiva_login'); + $.log("archiva_login cookie content:"+cookieContent); + return $.parseJSON(cookieContent); }; deleteLoginCookie=function(){ - $.cookie('redback_login', null); + $.cookie('archiva_login', null); }; logout=function(doScreenChange){ - deleteLoginCookie(); + //deleteLoginCookie(); + var user = getUserFromLoginCookie(); + if(user){ + user.logged=false; + reccordLoginCookie(user); + } $("#login-link").show(); $("#register-link").show(); $("#logout-link").hide(); diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/user.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/user.js index 3655ca61a..18813aaf8 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/user.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/user.js @@ -76,6 +76,10 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { this.modified=ko.observable(false); + this.rememberme=false; + this.password=null; + this.logged=false; + this.remove = function() { if (ownerViewModel) { ownerViewModel.users.destroy(this); @@ -142,7 +146,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { checkCreateAdminLink(); checkSecurityLinks(); } - loginCall(currentAdminUser.username(), currentAdminUser.password(),onSuccessCall); + loginCall(currentAdminUser.username(), currentAdminUser.password(),false,onSuccessCall); if(succesCallbackFn){ succesCallbackFn(); } @@ -344,6 +348,17 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { }); } + var user=getUserFromLoginCookie(); + if(user){ + $.log("found user in cookie rememberme:"+(user.rememberme)); + if(user.rememberme){ + $("#user-login-form-username" ).val(user.username); + $("#user-login-form-password" ).val(user.password); + } + } else { + $.log("user not in cookie"); + } + var userLoginForm = $("#user-login-form"); userLoginForm.validate({ @@ -382,6 +397,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { } if (logged == true) { var user = mapUser(result); + if (user.passwordChangeRequired()==true){ changePasswordBox(true,false,user); return; @@ -389,10 +405,16 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { // not really needed as an exception is returned but "ceintures et bretelles" as we said in French :-) if (user.locked()==true){ $.log("user locked"); - displayErrorMessage($.i18n.prop("accout.locked")); + displayErrorMessage($.i18n.prop("account.locked")); return } + // FIXME check validated + user.rememberme=window.redbackModel.rememberme; + if(user.rememberme){ + user.password=window.redbackModel.password; + } + $.log("user.rememberme:"+(user.rememberme)); reccordLoginCookie(user); $("#login-link").hide(); $("#logout-link").show(); @@ -426,7 +448,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { * @param result */ var completeLoginCallbackFn=function(){ - $("#modal-login-ok").removeAttr("disabled"); + $("#modal-login-ok").button("reset"); $("#small-spinner").remove(); // force current screen reload to consider user karma window.sammyArchivaApplication.refresh(); @@ -512,18 +534,24 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { */ login=function(){ $.log("user.js#login"); + $("#modal-login-err-message").html(""); var valid = $("#user-login-form").valid(); if (!valid) { return; } - $("#modal-login-ok").attr("disabled","disabled"); + $("#modal-login-ok").button("loading"); //#modal-login-footer $('#modal-login-footer').append(smallSpinnerImg()); - loginCall($("#user-login-form-username").val(),$("#user-login-form-password").val() + var rememberme=($("#user-login-form-rememberme" ).attr('checked')=='checked'); + $.log("rememberme:"+rememberme); + window.redbackModel.rememberme=rememberme; + window.redbackModel.password=$("#user-login-form-password").val(); + + loginCall($("#user-login-form-username").val(),window.redbackModel.password,rememberme ,successLoginCallbackFn,errorLoginCallbackFn,completeLoginCallbackFn); } @@ -532,11 +560,12 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { * call REST method for login * @param username * @param password + * @param rememberme * @param successCallbackFn * @param errorCallbackFn * @param completeCallbackFn */ - loginCall=function(username,password,successCallbackFn, errorCallbackFn, completeCallbackFn) { + loginCall=function(username,password,rememberme,successCallbackFn, errorCallbackFn, completeCallbackFn) { var url = 'restServices/redbackServices/loginService/logIn'; $.ajax({ @@ -717,7 +746,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) { if (registration==true) { $.log("changePassword#sucess,registration:"+registration); displaySuccessMessage($.i18n.prop('change.password.success.section.title')) - loginCall(user.username(), $("#passwordChangeFormNewPassword").val(),successLoginCallbackFn, + loginCall(user.username(), $("#passwordChangeFormNewPassword").val(),true,successLoginCallbackFn, function(data){ displayRestError(data,"modal-password-change-content"); } diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/menu.html b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/menu.html index 438188a96..504eaaf63 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/menu.html +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/menu.html @@ -101,7 +101,6 @@
  • diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/redback/login.html b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/redback/login.html index c2dc12d9f..9228b2218 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/redback/login.html +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/redback/login.html @@ -41,7 +41,10 @@ -- 2.39.5