Files
Eurovision-25-frontend/pages/login.vue
T
2025-05-10 13:04:30 +03:00

54 lines
1.5 KiB
Vue

<script setup lang="ts">
definePageMeta({
layout: 'login'
})
const login = async () => {
const payload = {
username: document.getElementById('username')?.value,
password: document.getElementById('password')?.value
}
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'
})
}
localStorage.setItem('user', JSON.stringify(user.value))
navigateTo('/')
}
</script>
<template>
<div class="p-6">
<div class="flex flex-col gap-4 m-6 bg-slate-300 rounded-2xl p-6 shadow-md text-sm">
<h1 class="text-center font-bold text-lg">Kirjaudu</h1>
<form @submit.prevent="login" class="">
<label>Käyttäjätunnus
<input class="textfield" type="text" id="username" placeholder="Käyttäjätunnus" />
</label>
<label>Salasana
<input class="textfield" type="password" id="password" placeholder="Salasana" />
</label>
<button type="submit" class="btn-primary">Kirjaudu</button>
</form>
</div>
</div>
</template>
<style>
.textfield {
border: none;
border-bottom: 1px solid #ccc;
max-width: 80%;
padding: 6px;
}
</style>