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

View File

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

View File

@ -1,3 +1,5 @@
import { success } from "toastr";
export default {
'&':'y',
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.',
sendLink: 'Enviar enlace de recuperación',
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',
logout: 'Cerrar sesión',

View File

@ -18,7 +18,16 @@ const form = useForm({
/** Métodos */
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>

View File

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