extensions/net.sf.basedb.reggie/trunk/resources/delivery/login.js

Code
Comments
Other
Rev Date Author Line
3996 14 Jun 16 nicklas 1 var Login = function()
3996 14 Jun 16 nicklas 2 {
3996 14 Jun 16 nicklas 3   var login = {};
3998 15 Jun 16 nicklas 4   var debug = 0;
3996 14 Jun 16 nicklas 5   
3996 14 Jun 16 nicklas 6   login.initPage = function()
3996 14 Jun 16 nicklas 7   {
3996 14 Jun 16 nicklas 8     
3996 14 Jun 16 nicklas 9     Events.doOnEnter('yubikey', login.doLogin);
3996 14 Jun 16 nicklas 10     Buttons.addClickHandler('btnLogin', login.doLogin);
3996 14 Jun 16 nicklas 11     
3996 14 Jun 16 nicklas 12     Events.addEventHandler('username', 'keyup', login.inputOnChange);
3996 14 Jun 16 nicklas 13     Events.addEventHandler('password', 'keyup', login.inputOnChange);
3996 14 Jun 16 nicklas 14     Events.addEventHandler('yubikey', 'keyup', login.inputOnChange);
3996 14 Jun 16 nicklas 15     
3996 14 Jun 16 nicklas 16     var username = Doc.element('username');
3996 14 Jun 16 nicklas 17     if (!username.value)
3996 14 Jun 16 nicklas 18     {
3996 14 Jun 16 nicklas 19       username.focus();
3996 14 Jun 16 nicklas 20     }
3996 14 Jun 16 nicklas 21     else
3996 14 Jun 16 nicklas 22     {
3996 14 Jun 16 nicklas 23       Doc.addClass('username', 'not-empty');
3996 14 Jun 16 nicklas 24       Doc.element('password').focus();
3996 14 Jun 16 nicklas 25     }
3996 14 Jun 16 nicklas 26   }
3996 14 Jun 16 nicklas 27
3996 14 Jun 16 nicklas 28   login.inputOnChange = function(event)
3996 14 Jun 16 nicklas 29   {
3996 14 Jun 16 nicklas 30     Doc.removeClass(event.currentTarget, 'not-valid');
3996 14 Jun 16 nicklas 31     Doc.addOrRemoveClass(event.currentTarget, 'not-empty', event.currentTarget.value);
3996 14 Jun 16 nicklas 32   }
3996 14 Jun 16 nicklas 33   
3996 14 Jun 16 nicklas 34   login.doLogin = function()
3996 14 Jun 16 nicklas 35   {
3996 14 Jun 16 nicklas 36     var username = Doc.element('username');
3996 14 Jun 16 nicklas 37     var password = Doc.element('password');
3996 14 Jun 16 nicklas 38     var yubikey = Doc.element('yubikey');
3996 14 Jun 16 nicklas 39     
3996 14 Jun 16 nicklas 40     var msg;
3996 14 Jun 16 nicklas 41     var focusElement = null;
3996 14 Jun 16 nicklas 42     if (!yubikey.value) 
3996 14 Jun 16 nicklas 43     {
3996 14 Jun 16 nicklas 44       Doc.addClass(yubikey, 'not-valid');
3996 14 Jun 16 nicklas 45       msg = 'Koppla in din YubiKey i datorn och tryck på knappen!';
3996 14 Jun 16 nicklas 46       focusElement = yubikey;
3996 14 Jun 16 nicklas 47     }
3996 14 Jun 16 nicklas 48     if (!password.value) 
3996 14 Jun 16 nicklas 49     {
3996 14 Jun 16 nicklas 50       Doc.addClass(password, 'not-valid');
3996 14 Jun 16 nicklas 51       msg = 'Skriv in ditt lösenord!';
3996 14 Jun 16 nicklas 52       focusElement = password;
3996 14 Jun 16 nicklas 53     }
3996 14 Jun 16 nicklas 54     if (!username.value) 
3996 14 Jun 16 nicklas 55     {
3996 14 Jun 16 nicklas 56       Doc.addClass(username, 'not-valid');
3996 14 Jun 16 nicklas 57       msg = 'Du måste ange ditt användarnamn!';
3996 14 Jun 16 nicklas 58       focusElement = username;
3996 14 Jun 16 nicklas 59     }
3996 14 Jun 16 nicklas 60     
3996 14 Jun 16 nicklas 61     if (focusElement) focusElement.focus();
3998 15 Jun 16 nicklas 62     Doc.element('message').innerHTML = msg || 'Loggar in...';
3997 14 Jun 16 nicklas 63     if (msg) return;
3997 14 Jun 16 nicklas 64     
3997 14 Jun 16 nicklas 65     
3997 14 Jun 16 nicklas 66     var submitInfo = {};
3997 14 Jun 16 nicklas 67     submitInfo.username = username.value;
3997 14 Jun 16 nicklas 68     submitInfo.password = password.value;
3997 14 Jun 16 nicklas 69     submitInfo.yubikey = yubikey.value;
3997 14 Jun 16 nicklas 70     
3997 14 Jun 16 nicklas 71     yubikey.value = '';
3997 14 Jun 16 nicklas 72     
4010 23 Jun 16 nicklas 73     var url = '../Delivery.servlet';
4010 23 Jun 16 nicklas 74     url += '?cmd=Login';
3997 14 Jun 16 nicklas 75     
3998 15 Jun 16 nicklas 76     Wizard.asyncJsonRequest(url, login.whenLoggedIn, 'POST', JSON.stringify(submitInfo), login.whenLoginFailed);
3996 14 Jun 16 nicklas 77   }
3996 14 Jun 16 nicklas 78   
3998 15 Jun 16 nicklas 79   login.whenLoginFailed = function(response, error)
3997 14 Jun 16 nicklas 80   {
3998 15 Jun 16 nicklas 81     if (debug) 
3997 14 Jun 16 nicklas 82     {
3998 15 Jun 16 nicklas 83       App.debug(response);
3998 15 Jun 16 nicklas 84       App.debug(error);
3997 14 Jun 16 nicklas 85     }
3998 15 Jun 16 nicklas 86     
3998 15 Jun 16 nicklas 87     var err = login.translateError(response ? response.message : error.toString());
3998 15 Jun 16 nicklas 88     if (err.focusElement)
3997 14 Jun 16 nicklas 89     {
3998 15 Jun 16 nicklas 90       Doc.addClass(err.focusElement, 'not-valid');
3998 15 Jun 16 nicklas 91       Doc.element(err.focusElement).focus();
3998 15 Jun 16 nicklas 92       Doc.element(err.focusElement).select();
3997 14 Jun 16 nicklas 93     }
3998 15 Jun 16 nicklas 94     
3998 15 Jun 16 nicklas 95     var msg = 'Det gick inte att logga in!';
3998 15 Jun 16 nicklas 96     msg += '<div class="login-failed" title="'+Strings.encodeTags(err.originalMessage)+'">';
3998 15 Jun 16 nicklas 97     msg += Strings.encodeTags(err.message)+'</div>';
3998 15 Jun 16 nicklas 98     
3998 15 Jun 16 nicklas 99     Doc.element('message').innerHTML = msg;    
3998 15 Jun 16 nicklas 100   }
3998 15 Jun 16 nicklas 101   
3998 15 Jun 16 nicklas 102   login.whenLoggedIn = function(response)
3998 15 Jun 16 nicklas 103   {
4010 23 Jun 16 nicklas 104     location.href = 'list.jsp?ID='+response.ID;
3997 14 Jun 16 nicklas 105   }
3997 14 Jun 16 nicklas 106   
3998 15 Jun 16 nicklas 107   /**
3998 15 Jun 16 nicklas 108     Translate some common error messages to Swedish. Returns an object with
3998 15 Jun 16 nicklas 109     * originalMessage: The original error message
3998 15 Jun 16 nicklas 110     * message: The translated error message (or the original if no translation was found
3998 15 Jun 16 nicklas 111     * focusElement: The element in the login form that is not valid
3998 15 Jun 16 nicklas 112    */
3998 15 Jun 16 nicklas 113   login.translateError = function(message)
3998 15 Jun 16 nicklas 114   {
3998 15 Jun 16 nicklas 115     var err = {};
3998 15 Jun 16 nicklas 116     err.originalMessage = message;
3998 15 Jun 16 nicklas 117     err.message = message;
3998 15 Jun 16 nicklas 118     
3998 15 Jun 16 nicklas 119     if (message.indexOf('Invalid YubiKey') >= 0 || message.indexOf('BAD_OTP') >= 0)
3998 15 Jun 16 nicklas 120     {
3998 15 Jun 16 nicklas 121       err.message = 'Ogiltigt YubiKey lösenord';
3998 15 Jun 16 nicklas 122       err.focusElement = 'yubikey';
3998 15 Jun 16 nicklas 123     }
3998 15 Jun 16 nicklas 124     else if (message.indexOf('REPLAYED_OTP') >= 0)
3998 15 Jun 16 nicklas 125     {
3998 15 Jun 16 nicklas 126       err.message = 'YubiKey lösenordet har redan använts';
3998 15 Jun 16 nicklas 127       err.focusElement = 'yubikey';
3998 15 Jun 16 nicklas 128     }
3998 15 Jun 16 nicklas 129     else if (message.indexOf('Unknown username') >= 0)
3998 15 Jun 16 nicklas 130     {
3998 15 Jun 16 nicklas 131       err.message = 'Okänt användarnamn';
3998 15 Jun 16 nicklas 132       err.focusElement = 'username';
3998 15 Jun 16 nicklas 133     }
3998 15 Jun 16 nicklas 134     else if (message.indexOf('YubiKey doesn\'t belong to user') >= 0)
3998 15 Jun 16 nicklas 135     {
3998 15 Jun 16 nicklas 136       err.message = 'YubiKey:n hör inte ihop med den här användaren';
3998 15 Jun 16 nicklas 137       err.focusElement = 'username';
3998 15 Jun 16 nicklas 138     }
3998 15 Jun 16 nicklas 139     else if (message.indexOf('flagged for deletion') >= 0 || 
3998 15 Jun 16 nicklas 140         message.indexOf('is disabled') >=0 ||
3998 15 Jun 16 nicklas 141         message.indexOf('account has expired') >= 0)
3998 15 Jun 16 nicklas 142     {
3998 15 Jun 16 nicklas 143       err.message = 'Användarkontot har upphört att gälla';
3998 15 Jun 16 nicklas 144       err.focusElement = 'username';
3998 15 Jun 16 nicklas 145     }
3998 15 Jun 16 nicklas 146     else if (message.indexOf('password for login') >= 0)
3998 15 Jun 16 nicklas 147     {
3998 15 Jun 16 nicklas 148       err.message = 'Felaktigt lösenord';
3998 15 Jun 16 nicklas 149       err.focusElement = 'password';
3998 15 Jun 16 nicklas 150     }
3998 15 Jun 16 nicklas 151     else if (message.indexOf('Not allowed to use Client') >= 0)
3998 15 Jun 16 nicklas 152     {
3998 15 Jun 16 nicklas 153       err.message = 'Åtkomst nekad';
3998 15 Jun 16 nicklas 154       err.focusElement = 'username';
3998 15 Jun 16 nicklas 155     }
3998 15 Jun 16 nicklas 156     
3998 15 Jun 16 nicklas 157     return err;
3998 15 Jun 16 nicklas 158   }
3998 15 Jun 16 nicklas 159   
3996 14 Jun 16 nicklas 160   return login;
3996 14 Jun 16 nicklas 161 }();
3996 14 Jun 16 nicklas 162
3996 14 Jun 16 nicklas 163 Doc.onLoad(Login.initPage);