ADD: Recuperación de contraseña

This commit is contained in:
Moisés de Jesús Cortés Castellanos 2025-01-06 10:23:43 -06:00
parent b68bd0c27b
commit 31862e7cf5
5 changed files with 45 additions and 13 deletions

View File

@ -18,6 +18,7 @@ const emit = defineEmits([
/** Propiedades */ /** Propiedades */
const props = defineProps({ const props = defineProps({
class: String, class: String,
disabled: Boolean,
id: String, id: String,
modelValue: Number | String, modelValue: Number | String,
onError: String | Array, onError: String | Array,
@ -71,6 +72,8 @@ onMounted(() => {
v-bind="$attrs" v-bind="$attrs"
ref="input" ref="input"
class="input-primary" class="input-primary"
:class="{ 'cursor-not-allowed': disabled }"
:disabled="disabled"
:id="autoId" :id="autoId"
:placeholder="placeholder" :placeholder="placeholder"
:required="required" :required="required"

View File

@ -18,6 +18,7 @@ const emit = defineEmits([
/** Propiedades */ /** Propiedades */
const props = defineProps({ const props = defineProps({
class: String, class: String,
disabled: Boolean,
id: String, id: String,
icon: String, icon: String,
modelValue: Number | String, modelValue: Number | String,
@ -73,6 +74,8 @@ onMounted(() => {
v-model="value" v-model="value"
v-bind="$attrs" v-bind="$attrs"
class="pl-2 w-full outline-none border-none bg-transparent" class="pl-2 w-full outline-none border-none bg-transparent"
:class="{ 'cursor-not-allowed': disabled }"
:disabled="disabled"
:id="autoId" :id="autoId"
:placeholder="placeholder" :placeholder="placeholder"
:type="type" :type="type"

View File

@ -1,3 +1,5 @@
import { success } from "toastr";
export default { export default {
'&':'y', '&':'y',
account: { account: {
@ -101,6 +103,8 @@ export default {
description: '¿Ha olvidado su contraseña? No hay problema. Sólo tienes que indicarnos tu dirección de correo electrónico y te enviaremos un enlace para restablecer la contraseña que te permitirá elegir una nueva.', description: '¿Ha olvidado su contraseña? No hay problema. Sólo tienes que indicarnos tu dirección de correo electrónico y te enviaremos un enlace para restablecer la contraseña que te permitirá elegir una nueva.',
sendLink: 'Enviar enlace de recuperación', sendLink: 'Enviar enlace de recuperación',
title: 'Contraseña olvidada', title: 'Contraseña olvidada',
success: 'Se ha enviado un enlace de recuperación a su dirección de correo electrónico.',
error: 'Error al enviar el enlace de recuperación, intente más tarde.',
}, },
login: 'Iniciar sesión', login: 'Iniciar sesión',
logout: 'Cerrar sesión', logout: 'Cerrar sesión',

View File

@ -18,7 +18,16 @@ const form = useForm({
/** Métodos */ /** Métodos */
const submit = () => { const submit = () => {
form.post(route('password.email')); form.post(route('auth.forgot-password'), {
onSuccess: () => {
Notify.success(Lang('auth.forgotPassword.success'));
router.push({ name: 'index' });
},
onError: () => {
Notify.error(Lang('auth.forgotPassword.error'));
router.push({ name: 'index' });
}
});
}; };
</script> </script>

View File

@ -1,31 +1,45 @@
<script setup> <script setup>
import { onMounted, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { useForm } from '@Services/Api.js' import { useForm } from '@Services/Api.js'
import PrimaryButton from '@Holos/Button/Primary.vue'; import PrimaryButton from '@Holos/Button/Primary.vue';
import Input from '@Holos/Form/InputWithIcon.vue' import Input from '@Holos/Form/InputWithIcon.vue'
/** Propiedades */ /** Definidores */
const props = defineProps({ const vroute = useRoute();
email: String, const router = useRouter();
token: String,
});
/** Propiedades */
const form = useForm({ const form = useForm({
token: props.token, token: '',
email: props.email,
password: '', password: '',
password_confirmation: '', password_confirmation: '',
}); });
const email = ref('');
/** Métodos */ /** Métodos */
const submit = () => { const submit = () => {
form.post(route('password.update'), { form.post(route('auth.reset-password'), {
onSuccess: () => { onSuccess: () => {
Notify.success(Lang('auth.reset.success')); Notify.success(Lang('auth.reset.success'));
router.push({ name: 'index' })
}, },
onFinish: () => form.reset('password', 'password_confirmation'), onError: () => {
router.push({ name: 'index' });
}
}); });
}; };
onMounted(() => {
console.log('mount')
form.token = vroute.query.token;
email.value = vroute.query.email;
// router.replace({ query: {} });
})
</script> </script>
<template> <template>
@ -34,9 +48,8 @@ const submit = () => {
icon="mail" icon="mail"
id="email" id="email"
type="email" type="email"
v-model="form.email" v-model="email"
:onError="form.errors.email" disabled
:placeholder="$t('email.title')"
/> />
<Input <Input
icon="password" icon="password"