import { type Ref, defineComponent, inject, ref } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRoute, useRouter } from 'vue-router'; import axios from 'axios'; import { useLoginModal } from '@/account/login-modal'; import type AccountService from '../account.service'; export default defineComponent({ setup() { const authenticationError: Ref = ref(false); const login: Ref = ref(null); const password: Ref = ref(null); const rememberMe: Ref = ref(false); const { hideLogin } = useLoginModal(); const route = useRoute(); const router = useRouter(); const previousState = () => router.go(-1); const accountService = inject('accountService'); const doLogin = async () => { const data = `username=${encodeURIComponent(login.value)}&password=${encodeURIComponent(password.value)}&remember-me=${rememberMe.value}&submit=Login`; try { await axios.post('api/authentication', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }); authenticationError.value = false; hideLogin(); await accountService.retrieveAccount(); if (route.path === '/forbidden') { previousState(); } } catch { authenticationError.value = true; } }; return { authenticationError, login, password, rememberMe, accountService, doLogin, t$: useI18n().t, }; }, });