import { client, navigateTo } from "../../index.js"; import { clear, fill_errors } from "../../utils/formUtils.js"; import AbstractNonAuthentifiedView from "../abstracts/AbstractNonAuthentified.js"; async function login(redirectTo = '/home') { clear('innerHTML', ['username', 'password', 'login']); let username = document.getElementById('usernameInput').value; let password = document.getElementById('passwordInput').value; if (username === '') { document.getElementById('username').innerHTML = 'This field may not be blank.'; } if (password === '') { document.getElementById('password').innerHTML = 'This field may not be blank.'; } if (username === '' || password === '') return; let response = await client.login(username, password); if (response.status == 200) { await client.notice.disconnect(); await client.notice.connect(); navigateTo(redirectTo); } else { let error = await response.json(); fill_errors(error, "innerHTML"); } } export default class extends AbstractNonAuthentifiedView { constructor(params, lastUrlBeforeLogin = '/home') { super(params, "Login", lastUrlBeforeLogin); this.redirectTo = lastUrlBeforeLogin; } async postInit() { let usernameField = document.getElementById('usernameInput'); usernameField.addEventListener('keydown', ev => { if (ev.key === 'Enter') login(this.redirectTo); }); usernameField.focus(); let passwordField = document.getElementById('passwordInput'); passwordField.addEventListener('keydown', ev => { if (ev.key === 'Enter') login(this.redirectTo); }); document.getElementById('loginButton').onclick = _ => login(this.redirectTo); } async getHtml() { return `