3996 |
14 Jun 16 |
nicklas |
var Login = function() |
3996 |
14 Jun 16 |
nicklas |
2 |
{ |
3996 |
14 Jun 16 |
nicklas |
var login = {}; |
3998 |
15 Jun 16 |
nicklas |
var debug = 0; |
3996 |
14 Jun 16 |
nicklas |
5 |
|
3996 |
14 Jun 16 |
nicklas |
login.initPage = function() |
3996 |
14 Jun 16 |
nicklas |
7 |
{ |
3996 |
14 Jun 16 |
nicklas |
8 |
|
3996 |
14 Jun 16 |
nicklas |
Events.doOnEnter('yubikey', login.doLogin); |
3996 |
14 Jun 16 |
nicklas |
Buttons.addClickHandler('btnLogin', login.doLogin); |
3996 |
14 Jun 16 |
nicklas |
11 |
|
3996 |
14 Jun 16 |
nicklas |
Events.addEventHandler('username', 'keyup', login.inputOnChange); |
3996 |
14 Jun 16 |
nicklas |
Events.addEventHandler('password', 'keyup', login.inputOnChange); |
3996 |
14 Jun 16 |
nicklas |
Events.addEventHandler('yubikey', 'keyup', login.inputOnChange); |
3996 |
14 Jun 16 |
nicklas |
15 |
|
3996 |
14 Jun 16 |
nicklas |
var username = Doc.element('username'); |
3996 |
14 Jun 16 |
nicklas |
if (!username.value) |
3996 |
14 Jun 16 |
nicklas |
18 |
{ |
3996 |
14 Jun 16 |
nicklas |
username.focus(); |
3996 |
14 Jun 16 |
nicklas |
20 |
} |
3996 |
14 Jun 16 |
nicklas |
else |
3996 |
14 Jun 16 |
nicklas |
22 |
{ |
3996 |
14 Jun 16 |
nicklas |
Doc.addClass('username', 'not-empty'); |
3996 |
14 Jun 16 |
nicklas |
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 |
login.inputOnChange = function(event) |
3996 |
14 Jun 16 |
nicklas |
29 |
{ |
3996 |
14 Jun 16 |
nicklas |
Doc.removeClass(event.currentTarget, 'not-valid'); |
3996 |
14 Jun 16 |
nicklas |
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 |
login.doLogin = function() |
3996 |
14 Jun 16 |
nicklas |
35 |
{ |
3996 |
14 Jun 16 |
nicklas |
var username = Doc.element('username'); |
3996 |
14 Jun 16 |
nicklas |
var password = Doc.element('password'); |
3996 |
14 Jun 16 |
nicklas |
var yubikey = Doc.element('yubikey'); |
3996 |
14 Jun 16 |
nicklas |
39 |
|
3996 |
14 Jun 16 |
nicklas |
var msg; |
3996 |
14 Jun 16 |
nicklas |
var focusElement = null; |
3996 |
14 Jun 16 |
nicklas |
if (!yubikey.value) |
3996 |
14 Jun 16 |
nicklas |
43 |
{ |
3996 |
14 Jun 16 |
nicklas |
Doc.addClass(yubikey, 'not-valid'); |
3996 |
14 Jun 16 |
nicklas |
msg = 'Koppla in din YubiKey i datorn och tryck på knappen!'; |
3996 |
14 Jun 16 |
nicklas |
focusElement = yubikey; |
3996 |
14 Jun 16 |
nicklas |
47 |
} |
3996 |
14 Jun 16 |
nicklas |
if (!password.value) |
3996 |
14 Jun 16 |
nicklas |
49 |
{ |
3996 |
14 Jun 16 |
nicklas |
Doc.addClass(password, 'not-valid'); |
3996 |
14 Jun 16 |
nicklas |
msg = 'Skriv in ditt lösenord!'; |
3996 |
14 Jun 16 |
nicklas |
focusElement = password; |
3996 |
14 Jun 16 |
nicklas |
53 |
} |
3996 |
14 Jun 16 |
nicklas |
if (!username.value) |
3996 |
14 Jun 16 |
nicklas |
55 |
{ |
3996 |
14 Jun 16 |
nicklas |
Doc.addClass(username, 'not-valid'); |
3996 |
14 Jun 16 |
nicklas |
msg = 'Du måste ange ditt användarnamn!'; |
3996 |
14 Jun 16 |
nicklas |
focusElement = username; |
3996 |
14 Jun 16 |
nicklas |
59 |
} |
3996 |
14 Jun 16 |
nicklas |
60 |
|
3996 |
14 Jun 16 |
nicklas |
if (focusElement) focusElement.focus(); |
3998 |
15 Jun 16 |
nicklas |
Doc.element('message').innerHTML = msg || 'Loggar in...'; |
3997 |
14 Jun 16 |
nicklas |
if (msg) return; |
3997 |
14 Jun 16 |
nicklas |
64 |
|
3997 |
14 Jun 16 |
nicklas |
65 |
|
3997 |
14 Jun 16 |
nicklas |
var submitInfo = {}; |
3997 |
14 Jun 16 |
nicklas |
submitInfo.username = username.value; |
3997 |
14 Jun 16 |
nicklas |
submitInfo.password = password.value; |
3997 |
14 Jun 16 |
nicklas |
submitInfo.yubikey = yubikey.value; |
3997 |
14 Jun 16 |
nicklas |
70 |
|
3997 |
14 Jun 16 |
nicklas |
yubikey.value = ''; |
3997 |
14 Jun 16 |
nicklas |
72 |
|
4010 |
23 Jun 16 |
nicklas |
var url = '../Delivery.servlet'; |
4010 |
23 Jun 16 |
nicklas |
url += '?cmd=Login'; |
3997 |
14 Jun 16 |
nicklas |
75 |
|
3998 |
15 Jun 16 |
nicklas |
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 |
login.whenLoginFailed = function(response, error) |
3997 |
14 Jun 16 |
nicklas |
80 |
{ |
3998 |
15 Jun 16 |
nicklas |
if (debug) |
3997 |
14 Jun 16 |
nicklas |
82 |
{ |
3998 |
15 Jun 16 |
nicklas |
App.debug(response); |
3998 |
15 Jun 16 |
nicklas |
App.debug(error); |
3997 |
14 Jun 16 |
nicklas |
85 |
} |
3998 |
15 Jun 16 |
nicklas |
86 |
|
3998 |
15 Jun 16 |
nicklas |
var err = login.translateError(response ? response.message : error.toString()); |
3998 |
15 Jun 16 |
nicklas |
if (err.focusElement) |
3997 |
14 Jun 16 |
nicklas |
89 |
{ |
3998 |
15 Jun 16 |
nicklas |
Doc.addClass(err.focusElement, 'not-valid'); |
3998 |
15 Jun 16 |
nicklas |
Doc.element(err.focusElement).focus(); |
3998 |
15 Jun 16 |
nicklas |
Doc.element(err.focusElement).select(); |
3997 |
14 Jun 16 |
nicklas |
93 |
} |
3998 |
15 Jun 16 |
nicklas |
94 |
|
3998 |
15 Jun 16 |
nicklas |
var msg = 'Det gick inte att logga in!'; |
3998 |
15 Jun 16 |
nicklas |
msg += '<div class="login-failed" title="'+Strings.encodeTags(err.originalMessage)+'">'; |
3998 |
15 Jun 16 |
nicklas |
msg += Strings.encodeTags(err.message)+'</div>'; |
3998 |
15 Jun 16 |
nicklas |
98 |
|
3998 |
15 Jun 16 |
nicklas |
Doc.element('message').innerHTML = msg; |
3998 |
15 Jun 16 |
nicklas |
100 |
} |
3998 |
15 Jun 16 |
nicklas |
101 |
|
3998 |
15 Jun 16 |
nicklas |
login.whenLoggedIn = function(response) |
3998 |
15 Jun 16 |
nicklas |
103 |
{ |
4010 |
23 Jun 16 |
nicklas |
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 |
Translate some common error messages to Swedish. Returns an object with |
3998 |
15 Jun 16 |
nicklas |
* originalMessage: The original error message |
3998 |
15 Jun 16 |
nicklas |
* message: The translated error message (or the original if no translation was found |
3998 |
15 Jun 16 |
nicklas |
* focusElement: The element in the login form that is not valid |
3998 |
15 Jun 16 |
nicklas |
112 |
*/ |
3998 |
15 Jun 16 |
nicklas |
login.translateError = function(message) |
3998 |
15 Jun 16 |
nicklas |
114 |
{ |
3998 |
15 Jun 16 |
nicklas |
var err = {}; |
3998 |
15 Jun 16 |
nicklas |
err.originalMessage = message; |
3998 |
15 Jun 16 |
nicklas |
err.message = message; |
3998 |
15 Jun 16 |
nicklas |
118 |
|
3998 |
15 Jun 16 |
nicklas |
if (message.indexOf('Invalid YubiKey') >= 0 || message.indexOf('BAD_OTP') >= 0) |
3998 |
15 Jun 16 |
nicklas |
120 |
{ |
3998 |
15 Jun 16 |
nicklas |
err.message = 'Ogiltigt YubiKey lösenord'; |
3998 |
15 Jun 16 |
nicklas |
err.focusElement = 'yubikey'; |
3998 |
15 Jun 16 |
nicklas |
123 |
} |
3998 |
15 Jun 16 |
nicklas |
else if (message.indexOf('REPLAYED_OTP') >= 0) |
3998 |
15 Jun 16 |
nicklas |
125 |
{ |
3998 |
15 Jun 16 |
nicklas |
err.message = 'YubiKey lösenordet har redan använts'; |
3998 |
15 Jun 16 |
nicklas |
err.focusElement = 'yubikey'; |
3998 |
15 Jun 16 |
nicklas |
128 |
} |
3998 |
15 Jun 16 |
nicklas |
else if (message.indexOf('Unknown username') >= 0) |
3998 |
15 Jun 16 |
nicklas |
130 |
{ |
3998 |
15 Jun 16 |
nicklas |
err.message = 'Okänt användarnamn'; |
3998 |
15 Jun 16 |
nicklas |
err.focusElement = 'username'; |
3998 |
15 Jun 16 |
nicklas |
133 |
} |
3998 |
15 Jun 16 |
nicklas |
else if (message.indexOf('YubiKey doesn\'t belong to user') >= 0) |
3998 |
15 Jun 16 |
nicklas |
135 |
{ |
3998 |
15 Jun 16 |
nicklas |
err.message = 'YubiKey:n hör inte ihop med den här användaren'; |
3998 |
15 Jun 16 |
nicklas |
err.focusElement = 'username'; |
3998 |
15 Jun 16 |
nicklas |
138 |
} |
3998 |
15 Jun 16 |
nicklas |
else if (message.indexOf('flagged for deletion') >= 0 || |
3998 |
15 Jun 16 |
nicklas |
message.indexOf('is disabled') >=0 || |
3998 |
15 Jun 16 |
nicklas |
message.indexOf('account has expired') >= 0) |
3998 |
15 Jun 16 |
nicklas |
142 |
{ |
3998 |
15 Jun 16 |
nicklas |
err.message = 'Användarkontot har upphört att gälla'; |
3998 |
15 Jun 16 |
nicklas |
err.focusElement = 'username'; |
3998 |
15 Jun 16 |
nicklas |
145 |
} |
3998 |
15 Jun 16 |
nicklas |
else if (message.indexOf('password for login') >= 0) |
3998 |
15 Jun 16 |
nicklas |
147 |
{ |
3998 |
15 Jun 16 |
nicklas |
err.message = 'Felaktigt lösenord'; |
3998 |
15 Jun 16 |
nicklas |
err.focusElement = 'password'; |
3998 |
15 Jun 16 |
nicklas |
150 |
} |
3998 |
15 Jun 16 |
nicklas |
else if (message.indexOf('Not allowed to use Client') >= 0) |
3998 |
15 Jun 16 |
nicklas |
152 |
{ |
3998 |
15 Jun 16 |
nicklas |
err.message = 'Åtkomst nekad'; |
3998 |
15 Jun 16 |
nicklas |
err.focusElement = 'username'; |
3998 |
15 Jun 16 |
nicklas |
155 |
} |
3998 |
15 Jun 16 |
nicklas |
156 |
|
3998 |
15 Jun 16 |
nicklas |
return err; |
3998 |
15 Jun 16 |
nicklas |
158 |
} |
3998 |
15 Jun 16 |
nicklas |
159 |
|
3996 |
14 Jun 16 |
nicklas |
return login; |
3996 |
14 Jun 16 |
nicklas |
161 |
}(); |
3996 |
14 Jun 16 |
nicklas |
162 |
|
3996 |
14 Jun 16 |
nicklas |
Doc.onLoad(Login.initPage); |