Juan Felipe Zapata Moreno c44fc36fd5 Initial commit
2025-11-10 10:44:28 -06:00

77 lines
1.7 KiB
Vue

<script setup>
import { onMounted } from 'vue';
import { useRouter } from 'vue-router';
import { defineApiToken, defineCsrfToken, hasToken, useForm } from '@Services/Api.js'
import { defineUser } from '@Services/Page';
import { viewTo } from './Module.js';
import PrimaryButton from '@Holos/Button/Primary.vue'
import Input from '@Holos/Form/InputWithIcon.vue'
/** Definidores */
const router = useRouter();
/** Propiedades */
defineProps({
canResetPassword: Boolean,
status: String,
});
const form = useForm({
email: '',
password: ''
});
/** Métodos */
const login = () => {
form.post(route('auth.login'), {
onSuccess: (res) => {
defineApiToken(res.token)
defineUser(res.user)
defineCsrfToken(res.csrf)
location.replace('/')
}
});
};
/** Ciclos */
onMounted(() => {
if (hasToken()) {
router.push({ name: 'dashboard.index' });
}
})
</script>
<template>
<form @submit.prevent="login">
<Input
icon="mail"
id="email"
type="email"
v-model="form.email"
:onError="form.errors.email"
:placeholder="$t('email.title')"
/>
<Input
v-model="form.password"
icon="password"
id="password"
type="password"
:onError="form.errors.password"
:placeholder="$t('password')"
/>
<PrimaryButton class="!w-full">
{{ $t('auth.login') }}
</PrimaryButton>
<div class="flex justify-end mt-4">
<RouterLink
class="text-sm ml-2 hover:text-blue-200 cursor-pointer hover:-translate-y-1 duration-500 transition-all"
:to="viewTo({ name: 'forgot-password' })"
>
{{ $t('auth.forgotPassword.ask') }}
</RouterLink>
</div>
</form>
</template>