import '@maicol07/material-web-additions/card/elevated-card.js'; import '@material/web/button/filled-button.js'; import '@material/web/button/text-button.js'; import '@material/web/checkbox/checkbox.js'; import '@material/web/dialog/dialog.js'; import '@material/web/textfield/filled-text-field.js'; import { mdiAccountOutline, mdiEmailOutline, mdiLockOutline, mdiLockQuestion, mdiLoginVariant } from '@mdi/js'; import MdIcon from '@osm/Components/MdIcon'; import Page, {PageAttributes} from '@osm/Components/Page'; import {VnodeCollectionItem} from '@osm/typings/jsx'; import {showSnackbar} from '@osm/utils/misc'; import collect from 'collect.js'; import type { Vnode, VnodeDOM } from 'mithril'; import Stream from 'mithril/stream'; import { Form, FormSubmitEvent, Request, RequestError } from 'mithril-utilities'; export default class LoginPage extends Page { form = { username: Stream(''), password: Stream(''), remember: Stream(false) }; forgotPasswordForm = { email: Stream('') }; forgotPasswordDialogOpen = false; oncreate(vnode: VnodeDOM) { super.oncreate(vnode); this.element.querySelector('#resetPasswordSubmitButton')?.setAttribute('form', 'forgot-password'); } contents(vnode: Vnode) { return <>

{__('Accedi')}

{this.fields().toArray()}
{this.buttons().toArray()}
{__('Recupero password')}

{__('Inserisci il tuo indirizzo email per ricevere le istruzioni per il recupero della password.')}

{this.forgotPasswordFields().toArray()}
{__('Annulla')} {__('Invia')}
; } fields() { return collect({ username: ( ), password: ( ), remember: ( ) }); } forgotPasswordFields() { return collect({ email: ( ) }); } buttons() { return collect({ forgotPassword: ( {__('Password dimenticata')} ), login: ( {__('Accedi')} ) }); } async onLoginFormSubmit(event: FormSubmitEvent) { try { await Request.get(route('sanctum.csrf-cookie')); await Request.post('/login', event.data); } catch (error: any) { // This.loading.hide(); void showSnackbar((error as RequestError<{message: string}>).response.message, false); return; } window.location.href = route('dashboard'); } onForgotPasswordButtonClicked() { this.openForgotPasswordDialog(); } onForgotPasswordDialogCancelButtonClicked() { this.closeForgotPasswordDialog(); } openForgotPasswordDialog() { this.forgotPasswordDialogOpen = true; } closeForgotPasswordDialog() { this.forgotPasswordDialogOpen = false; } async onForgotPasswordFormSubmit(event: FormSubmitEvent) { try { await Request.post(route('password.email'), event.data); } catch (error: any) { void showSnackbar((error as RequestError<{message: string}>).response.message, false); return; } void showSnackbar(__('La password รจ stata inviata alla tua email')); this.closeForgotPasswordDialog(); } }