/
login.js
81 lines (65 loc) · 2.28 KB
/
login.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
* Will get included into the login dialog, NOT into the regular OctoPrint
* web application.
*/
$(function () {
var OctoPrint = window.OctoPrint;
OctoPrint.loginui = {
startedUp: false
};
var overlayElement = $("#login-overlay");
var errorCredentialsElement = $("#login-error-credentials");
var errorRateElement = $("#login-error-rate");
var offlineElement = $("#login-offline");
var buttonElement = $("#login-button");
var reconnectElement = $("#login-reconnect");
var ignoreDisconnect = false;
buttonElement.click(function () {
var usernameElement = $("#login-user");
var passwordElement = $("#login-password");
var rememberElement = $("#login-remember");
var username = usernameElement.val();
var password = passwordElement.val();
var remember = rememberElement.prop("checked");
overlayElement.addClass("in");
errorCredentialsElement.removeClass("in");
errorRateElement.removeClass("in");
OctoPrint.browser
.login(username, password, remember)
.done(() => {
ignoreDisconnect = true;
window.location.href = REDIRECT_URL;
})
.fail((xhr) => {
usernameElement.val(USER_ID);
passwordElement.val("");
if (USER_ID) {
passwordElement.focus();
} else {
usernameElement.focus();
}
overlayElement.removeClass("in");
if (xhr.status === 429) {
errorRateElement.addClass("in");
} else {
errorCredentialsElement.addClass("in");
}
});
return false;
});
OctoPrint.options.baseurl = BASE_URL;
OctoPrint.socket.onConnected = () => {
buttonElement.prop("disabled", false);
offlineElement.removeClass("in");
};
OctoPrint.socket.onDisconnected = () => {
if (ignoreDisconnect) return;
buttonElement.prop("disabled", true);
offlineElement.addClass("in");
};
reconnectElement.click(() => {
OctoPrint.socket.reconnect();
});
OctoPrint.socket.connect();
OctoPrint.loginui.startedUp = true;
});