@ -4,59 +4,65 @@
-- >
< template >
< form class = "login-form" @submit.prevent ="submit" >
< fieldset class = "login-form__fieldset" >
< NcTextField id = "user"
: value . sync = "user"
name = "user"
: maxlength = "255"
autocapitalize = "off"
: label = "t('core', 'Login or email')"
: error = "userNameInputLengthIs255"
: helper - text = "userInputHelperText"
required
@ change = "updateUsername" / >
< LoginButton : value = "t('core', 'Reset password')" / >
< NcNoteCard v -if = " message = = = ' send -success ' "
type = "success" >
{ { t ( 'core' , 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.' ) } }
< / NcNoteCard >
< NcNoteCard v -else -if = " message = = = ' send -error ' "
type = "error" >
{ { t ( 'core' , 'Couldn\'t send reset email. Please contact your administrator.' ) } }
< / NcNoteCard >
< NcNoteCard v -else -if = " message = = = ' reset -error ' "
type = "error" >
{ { t ( 'core' , 'Password cannot be changed. Please contact your administrator.' ) } }
< / NcNoteCard >
< a class = "login-form__link"
href = "#"
@ click . prevent = "$emit('abort')" >
{ { t ( 'core' , 'Back to login' ) } }
< / a >
< / fieldset >
< form class = "reset-password-form" @submit.prevent ="submit" >
< h2 > { { t ( 'core' , 'Reset password' ) } } < / h2 >
< NcTextField id = "user"
: value . sync = "user"
name = "user"
: maxlength = "255"
autocapitalize = "off"
: label = "t('core', 'Login or email')"
: error = "userNameInputLengthIs255"
: helper - text = "userInputHelperText"
required
@ change = "updateUsername" / >
< LoginButton :loading ="loading" : value = "t('core', 'Reset password')" / >
< NcButton type = "tertiary" wide @click ="$emit('abort')" >
{ { t ( 'core' , 'Back to login' ) } }
< / NcButton >
< NcNoteCard v -if = " message = = = ' send -success ' "
type = "success" >
{ { t ( 'core' , 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.' ) } }
< / NcNoteCard >
< NcNoteCard v -else -if = " message = = = ' send -error ' "
type = "error" >
{ { t ( 'core' , 'Couldn\'t send reset email. Please contact your administrator.' ) } }
< / NcNoteCard >
< NcNoteCard v -else -if = " message = = = ' reset -error ' "
type = "error" >
{ { t ( 'core' , 'Password cannot be changed. Please contact your administrator.' ) } }
< / NcNoteCard >
< / form >
< / template >
< script >
import axios from '@nextcloud/axios'
< script lang = "ts" >
import { generateUrl } from '@nextcloud/router'
import LoginButton from './LoginButton.vue'
import { defineComponent } from 'vue'
import axios from '@nextcloud/axios'
import NcButton from '@nextcloud/vue/components/NcButton'
import NcTextField from '@nextcloud/vue/components/NcTextField'
import NcNoteCard from '@nextcloud/vue/components/NcNoteCard'
import AuthMixin from '../../mixins/auth.js'
import LoginButton from './LoginButton.vue'
import logger from '../../logger.js'
export default {
export default defineComponent ( {
name : 'ResetPassword' ,
components : {
LoginButton ,
NcButton ,
NcNoteCard ,
NcTextField ,
} ,
mixins : [ AuthMixin ] ,
props : {
username : {
type : String ,
@ -67,11 +73,12 @@ export default {
required : true ,
} ,
} ,
data ( ) {
return {
error : false ,
loading : false ,
message : undefined ,
message : '' ,
user : this . username ,
}
} ,
@ -84,56 +91,38 @@ export default {
updateUsername ( ) {
this . $emit ( 'update:username' , this . user )
} ,
submit ( ) {
async submit ( ) {
this . loading = true
this . error = false
this . message = ''
const url = generateUrl ( '/lostpassword/email' )
const data = {
user : this . user ,
}
try {
const { data } = await axios . post ( url , { user : this . user } )
if ( data . status !== 'success' ) {
throw new Error ( ` got status ${ data . status } ` )
}
this . message = 'send-success'
} catch ( error ) {
logger . error ( 'could not send reset email request' , { error } )
return axios . post ( url , data )
. then ( resp => resp . data )
. then ( data => {
if ( data . status !== 'success' ) {
throw new Error ( ` got status ${ data . status } ` )
}
this . message = 'send-success'
} )
. catch ( e => {
console . error ( 'could not send reset email request' , e )
this . error = true
this . message = 'send-error'
} )
. then ( ( ) => { this . loading = false } )
this . error = true
this . message = 'send-error'
} finally {
this . loading = false
}
} ,
} ,
}
} )
< / script >
< style lang = "scss" scoped >
. login - form {
text - align : start ;
font - size : 1 rem ;
& _ _fieldset {
width : 100 % ;
display : flex ;
flex - direction : column ;
gap : .5 rem ;
}
& _ _link {
display : block ;
font - weight : normal ! important ;
cursor : pointer ;
font - size : var ( -- default - font - size ) ;
text - align : center ;
padding : .5 rem 1 rem 1 rem 1 rem ;
}
. reset - password - form {
display : flex ;
flex - direction : column ;
gap : .5 rem ;
width : 100 % ;
}
< / style >