import { ClosureComponent, Component, Children } from "mithril"; import { m } from "./components.ts"; import * as store from "./store.ts"; import * as notifications from "./notifications.ts"; import * as overlay from "./overlay.ts"; import changePasswordComponent from "./change-password-component.ts"; export function init( args: Record, ): Promise> { return Promise.resolve(args); } export const component: ClosureComponent = (): Component => { let username = ""; let password = ""; let remember = false; function logIn(e: MouseEvent): boolean { e.target["disabled"] = true; store .logIn(username, password, remember) .then(() => { location.reload(); }) .catch((err) => { notifications.push("error", err.response || err.message); e.target["disabled"] = false; }); return false; } function changePassword(): void { const cb = (): Children => { const attrs = { onPasswordChange: () => { overlay.close(cb); m.redraw(); }, }; return m(changePasswordComponent, attrs); }; overlay.open(cb); } return { view: (vnode) => { if (window.username) m.route.set(vnode.attrs["continue"] || "/"); document.title = "Login - GenieACS"; return (

Log in to continue

{ username = e.target.value; }} />
{ password = e.target.value; }} />
{ remember = e.target.checked; }} />
); }, }; };