You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.5 KiB
91 lines
2.5 KiB
class Authenticate { |
|
constructor() { |
|
this._input = document.querySelector("#input-password"); |
|
this._form = document.querySelector("#pass-form > form"); |
|
this._input_eye = document.querySelector("#pass-eye"); |
|
this._password = ""; |
|
this._init(); |
|
} |
|
|
|
_setForm() { |
|
this._form.addEventListener("submit", (e) => { |
|
e.preventDefault(); |
|
var inputs = this._form.querySelectorAll("input"); |
|
var data = getArrayForm(inputs); |
|
if (!data) return false; |
|
this._password = data.password; |
|
this._respond(); |
|
}); |
|
} |
|
_setAuthentication_done() { |
|
window.authentication_done = () => { |
|
if (lightdm.is_authenticated) { |
|
this._authentication_done(); |
|
} else { |
|
this._authentication_failed(); |
|
} |
|
}; |
|
} |
|
_setPasswordEye() { |
|
this._input_eye.addEventListener("click", () => { |
|
if (this._input.type === "password") { |
|
this._input.type = "text"; |
|
} else { |
|
this._input.type = "password"; |
|
} |
|
}); |
|
} |
|
|
|
_respond() { |
|
var input = document.querySelector("#input-password"); |
|
let username = accounts.getDefaultUserName(); |
|
input.blur(); |
|
input.disabled = true; |
|
if (username == accounts._guestAccount && lightdm.has_guest_account) { |
|
lightdm.authenticate_as_guest(); |
|
} else { |
|
lightdm.respond(this._password); |
|
} |
|
} |
|
|
|
startAuthentication() { |
|
lightdm.cancel_authentication(); |
|
let username = accounts.getDefaultUserName(); |
|
if (username == accounts._guestAccount && lightdm.has_guest_account) return; |
|
lightdm.authenticate(String(accounts.getDefaultUserName())); |
|
} |
|
|
|
async _authentication_done() { |
|
var form = document.querySelector("#login-form"); |
|
form.classList.add("success"); |
|
|
|
await wait(500); |
|
var defSession = String(sessions.getDefaultSession()); |
|
var body = document.querySelector("body"); |
|
body.style.opacity = 0; |
|
|
|
await wait(1000); |
|
console.log("Session started with", defSession); |
|
lightdm.start_session(defSession); |
|
} |
|
|
|
async _authentication_failed() { |
|
this.startAuthentication(); |
|
var input = document.querySelector("#input-password"); |
|
document.querySelector("#login-form").classList.add("failed"); |
|
input.blur(); |
|
input.value = ""; |
|
input.disabled = false; |
|
|
|
await wait(2000); |
|
document.querySelector("#login-form").classList.remove("failed"); |
|
} |
|
|
|
_init() { |
|
this._setForm(); |
|
this._setAuthentication_done(); |
|
this._setPasswordEye(); |
|
console.log("Start authentication"); |
|
this.startAuthentication(); |
|
} |
|
}
|
|
|