diff --git a/pages/login.vue b/pages/login.vue index 5ee4007..90ba1d2 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -3,7 +3,12 @@ definePageMeta({ layout: 'login' }) +const errorMessage = ref('') + const login = async () => { + // Clear any previous error messages + errorMessage.value = '' + const payload = { username: document.getElementById('username')?.value, password: document.getElementById('password')?.value @@ -11,18 +16,23 @@ const login = async () => { const config = useRuntimeConfig() const apiBase = config.public.apiBase const api_url = `${apiBase}/auth/token` - const { data: user } = await useFetch(api_url, { - method: 'POST', - body: payload - }) - if (!user.value) { - throw createError({ - statusCode: 401, - statusMessage: 'Unauthorized' + + try { + const { data: user } = await useFetch(api_url, { + method: 'POST', + body: payload }) + + if (!user.value) { + errorMessage.value = 'Kirjautuminen epäonnistui. Tarkista käyttäjätunnus ja salasana.' + return + } + + localStorage.setItem('user', JSON.stringify(user.value)) + navigateTo('/') + } catch (error) { + errorMessage.value = 'Kirjautuminen epäonnistui. Palvelimeen ei saada yhteyttä.' } - localStorage.setItem('user', JSON.stringify(user.value)) - navigateTo('/') } @@ -31,6 +41,9 @@ const login = async () => {