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.
 
 
 
 
 
 

80 lines
2.1 KiB

class Authenticate {
constructor() {
this._input = document.querySelector("#input-password")
this._form = document.querySelector("#pass-form > form")
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()
}
}
}
_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()
console.log("Start authentication")
this.startAuthentication()
}
}