55 <q-toolbar-title >Gestion de votre accès</q-toolbar-title >
66 </q-toolbar >
77 <q-card-section class =" col-lg-4 flex items-center mobile-hide" >
8- <q-img src =" /logo.png" style =" max-width : 100% ;width :500px ;" />
8+ <q-img src =" /img/ logo.png" style =" max-width : 100% ;width :500px ;" />
99 </q-card-section >
1010 <q-card-section class =" col-ms-8 column" >
1111 <div class =" q-pa-md row-md" >
1212 <q-btn-toggle
13- v-model =" action"
14- @click =" resetData()"
15- spread
16- no-caps
17- rounded
18- unelevated
19- toggle-color =" primary"
20- color =" white"
21- text-color =" primary"
22- :options =" [
13+ v-model =" action"
14+ @click =" resetData()"
15+ spread
16+ no-caps
17+ rounded
18+ unelevated
19+ toggle-color =" primary"
20+ color =" white"
21+ text-color =" primary"
22+ :options =" [
2323 {label: 'Changer votre mot de passe', value: 'change'},
2424 {label: 'Reinitialiser votre mot de passe', value: 'reset'}
2525 ]"
3838 :entropy-bad =" passwordPolicies.minComplexity"
3939 :entropy-good =" passwordPolicies.goodComplexity"
4040 :check-pwned =" passwordPolicies.checkPwned"
41- >
41+ >
4242
4343 </input-new-password >
4444 </div >
4545 <div v-show =" action == 'reset'" class =" row-md" >
4646 <div class =" q-pa-md row-md" >
4747 <q-btn-toggle
48- @click =" actionResetRenit()"
49- v-model =" actionReset"
50- spread
51- no-caps
52- rounded
53- unelevated
54- toggle-color =" warning"
55- color =" white"
56- text-color =" primary"
57- :options =" optionsReset()"
48+ @click =" actionResetRenit()"
49+ v-model =" actionReset"
50+ spread
51+ no-caps
52+ rounded
53+ unelevated
54+ toggle-color =" warning"
55+ color =" white"
56+ text-color =" primary"
57+ :options =" optionsReset()"
5858 />
5959 </div >
6060 <q-input v-model =" username" label =" Utilisateur" type =" text" ></q-input >
8686 <q-dialog v-model =" messageSms" persistent >
8787 <q-card style =" min-width : 350px " >
8888 <q-card-section >
89- <div class =" text-h5" >Saisissez le code reçu par {{ typeOfReset }}</div >
90- </q-card-section >
91-
92- <q-card-section >
93- <div class =" row" >
94- </div >
95- <div class =" row" >
96- <q-input class =" input self-center" maxlength =" 6" mask =" ######" style =" width :100% ;font-size : 30px " rounded outlined v-model =" code" autofocus />
97- </div >
98-
99- <q-card-section >
100- <div class =" text-h5" >Définisez votre nouveau mot de passe</div >
101- </q-card-section >
102- <input-new-password v-model =" newpassword"
103- :min =" passwordPolicies.len"
104- :min-upper =" passwordPolicies.hasUpperCase"
105- :min-lower =" passwordPolicies.hasLowerCase"
106- :min-number =" passwordPolicies.hasNumbers"
107- :min-special =" passwordPolicies.hasSpecialChars"
108- :min-entropy =" passwordPolicies.minComplexity"
109- :entropy-bad =" passwordPolicies.minComplexity"
110- :entropy-good =" passwordPolicies.goodComplexity"
111- :check-pwned =" passwordPolicies.checkPwned"
112- >
89+ <q-card-section >
90+ <div class =" text-h5" >Saisissez le code reçu par {{ typeOfReset }}</div >
91+ <q-input class =" input self-center" maxlength =" 6" mask =" ######" style =" width :100% ;font-size : 30px " rounded
92+ outlined v-model =" code" autofocus />
93+ </q-card-section >
94+ <q-card-section >
95+ <div class =" text-h5" >Définisez votre nouveau mot de passe</div >
96+ </q-card-section >
97+ <input-new-password v-model =" newpassword"
98+ :min =" passwordPolicies.len"
99+ :min-upper =" passwordPolicies.hasUpperCase"
100+ :min-lower =" passwordPolicies.hasLowerCase"
101+ :min-number =" passwordPolicies.hasNumbers"
102+ :min-special =" passwordPolicies.hasSpecialChars"
103+ :min-entropy =" passwordPolicies.minComplexity"
104+ :entropy-bad =" passwordPolicies.minComplexity"
105+ :entropy-good =" passwordPolicies.goodComplexity"
106+ :check-pwned =" passwordPolicies.checkPwned"
107+ >
113108
114- </input-new-password >
109+ </input-new-password >
115110
116111 </q-card-section >
117112 <q-card-actions align =" right" class =" text-primary" >
118113 <q-btn @click =" doReloadPage" flat label =" Abandonner" v-close-popup />
119- <q-btn @click =" actionSendReset" flat label =" Valider" v-close-popup />
114+ <q-btn @click =" actionSendReset" flat label =" Valider" v-close-popup :disabled = " enableValidationCode " />
120115 </q-card-actions >
121116 </q-card >
122117 </q-dialog >
123118</template >
124119
125120<script setup>
126121import {ref } from ' vue'
127- import {computed ,onMounted } from ' vue' ;
122+ import {computed , onMounted } from ' vue' ;
128123
129124
130125const messageType = ref (' bg-secondary' )
@@ -140,43 +135,49 @@ const newpassword = ref('')
140135const actionReset = ref (' mail' )
141136const typeOfReset = ref (' SMS' )
142137const code = ref (' ' )
143- const resetToken = ref (' ' )
138+ const resetToken = ref (' ' )
144139const enableByMail = ref (true )
145140const enableBySms = ref (true )
146- const passwordPolicies = ref ({
147- bannedTime: 3600 ,
148- checkPwned: true ,
149- goodComplexity: 60 ,
150- hasLowerCase: 1 ,
151- hasNumbers: 1 ,
152- hasSpecialChars: 1 ,
153- hasUpperCase: 1 ,
154- len: 10 ,
155- maxRetry: 10 ,
156- minComplexity: 20 ,
157- resetBySms: false ,
141+ const passwordPolicies = ref ({
142+ bannedTime: 3600 ,
143+ checkPwned: true ,
144+ goodComplexity: 60 ,
145+ hasLowerCase: 1 ,
146+ hasNumbers: 1 ,
147+ hasSpecialChars: 1 ,
148+ hasUpperCase: 1 ,
149+ len: 10 ,
150+ maxRetry: 10 ,
151+ minComplexity: 20 ,
152+ resetBySms: false ,
158153 redirectUrl: ' '
159154})
160- onMounted (async ()=> {
161- const requestOptions = { method: ' GET' }
162- let rep= await fetch (' /management/passwd/getpolicies' )
163- if (rep .status === 200 ){
164- let response = await rep .json ();
165- passwordPolicies .value = response .data
166- enableBySms .value = passwordPolicies .value .resetBySms
167- } else {
168- messageAction .value = ' reloadPage'
169- messageText .value = ' Une erreur c est produite : ' + rep .status
170- messageType .value = ' bg-negative'
171- message .value = true
172- }
173- }
155+ onMounted (async () => {
156+ const requestOptions = {method: ' GET' }
157+ let rep = await fetch (' /management/passwd/getpolicies' )
158+ if (rep .status === 200 ) {
159+ let response = await rep .json ();
160+ passwordPolicies .value = response .data
161+ enableBySms .value = passwordPolicies .value .resetBySms
162+ } else {
163+ messageAction .value = ' reloadPage'
164+ messageText .value = ' Une erreur c est produite : ' + rep .status
165+ messageType .value = ' bg-negative'
166+ message .value = true
167+ }
168+ }
174169)
170+ const enableValidationCode = computed (() => {
171+ if (code .value !== ' ' && newpassword .value !== ' ' ) {
172+ return false
173+ }
174+ return true
175+ })
175176const enableValidation = computed (() => {
176177 if (action .value === ' change' ) {
177178 if (username .value !== ' ' &&
178- oldpassword .value !== ' ' &&
179- newpassword .value !== ' ' ) {
179+ oldpassword .value !== ' ' &&
180+ newpassword .value !== ' ' ) {
180181 return false
181182 }
182183 }
@@ -230,33 +231,33 @@ function envoi() {
230231 loading .value = true
231232 enableValidation .value = false
232233 fetch (' /management/passwd/change' , requestOptions)
233- .then (async response => {
234- const isJson = response .headers .get (' content-type' )? .includes (' application/json' );
235- const data = isJson && await response .json ();
236- console .log (' status :' + data .status )
237- // check for error response
238- if (response .status === 200 ){
234+ .then (async response => {
235+ const isJson = response .headers .get (' content-type' )? .includes (' application/json' );
236+ const data = isJson && await response .json ();
237+ console .log (' status :' + data .status )
238+ // check for error response
239+ if (response .status === 200 ) {
239240 messageAction .value = ' redirect'
240241 messageText .value = ' Votre mot de passe a été changé. Vous pouvez vous connecter'
241242 messageType .value = ' bg-secondary'
242243 message .value = true
243- } else if (response .status === 400 ){
244+ } else if (response .status === 400 ) {
244245 messageAction .value = ' reloadPage'
245246 messageText .value = ' Erreur d\' authentification. Veuillez réessayer.'
246247 messageType .value = ' bg-negative'
247248 message .value = true
248- }else {
249- const error = (data && data .message ) || response .status ;
250- return Promise .reject (error);
251- }
252- })
253- .catch (error => {
254- messageAction .value = ' reloadPage'
255- messageText .value = ' Une erreur c est produite : ' + error
256- messageType .value = ' bg-negative'
257- message .value = true
258- console .error (' There was an error!' , error);
259- })
249+ } else {
250+ const error = (data && data .message ) || response .status ;
251+ return Promise .reject (error);
252+ }
253+ })
254+ .catch (error => {
255+ messageAction .value = ' reloadPage'
256+ messageText .value = ' Une erreur c est produite : ' + error
257+ messageType .value = ' bg-negative'
258+ message .value = true
259+ console .error (' There was an error!' , error);
260+ })
260261
261262 }
262263}
@@ -266,12 +267,12 @@ function actionInitReset(resetType) {
266267 const requestOptions = {
267268 method: ' POST' ,
268269 headers: {' Content-Type' : ' application/json' },
269- body: JSON .stringify ({uid: username .value ,type: resetType})
270+ body: JSON .stringify ({uid: username .value , type: resetType})
270271 }
271- if (resetType === 0 ){
272- typeOfReset .value = ' mail'
273- }else {
274- typeOfReset .value = ' SMS'
272+ if (resetType === 0 ) {
273+ typeOfReset .value = ' mail'
274+ } else {
275+ typeOfReset .value = ' SMS'
275276 }
276277
277278 loading .value = true
@@ -282,10 +283,10 @@ function actionInitReset(resetType) {
282283 const data = isJson && await response .json ();
283284 console .log (' status :' + data .status )
284285 // check for error response
285- if (response .status === 200 ){
286- resetToken .value = data .token
287- messageSms .value = true
288- } else {
286+ if (response .status === 200 ) {
287+ resetToken .value = data .token
288+ messageSms .value = true
289+ } else {
289290 messageAction .value = ' reloadPage'
290291 messageText .value = ' Une erreur c est produite : ' + error
291292 messageType .value = ' bg-negative'
@@ -301,26 +302,29 @@ function actionInitReset(resetType) {
301302 })
302303
303304}
304- function actionSendReset (){
305+
306+ function actionSendReset () {
305307 const requestOptions = {
306308 method: ' POST' ,
307309 headers: {' Content-Type' : ' application/json' },
308- body: JSON .stringify ({token: resetToken .value ,
309- code: parseInt (code .value ),
310- newpassword: newpassword .value })
310+ body: JSON .stringify ({
311+ token: resetToken .value ,
312+ code: parseInt (code .value ),
313+ newpassword: newpassword .value
314+ })
311315 }
312316 fetch (' /management/passwd/resetbycode' , requestOptions)
313317 .then (async response => {
314318 const isJson = response .headers .get (' content-type' )? .includes (' application/json' );
315319 const data = isJson && await response .json ();
316320 console .log (' status :' + data .status )
317321 // check for error response
318- if (response .status === 200 ){
319- messageAction .value = ' redirect'
322+ if (response .status === 200 ) {
323+ messageAction .value = ' redirect'
320324 messageText .value = ' Votre mot de passe a été reinitialisé'
321- messageType .value = ' positive'
325+ messageType .value = ' bg- positive'
322326 message .value = true
323- } else {
327+ } else {
324328 messageAction .value = ' reloadPage'
325329 messageText .value = ' Une erreur c\' est produite : ' + error
326330 messageType .value = ' bg-negative'
@@ -335,12 +339,13 @@ function actionSendReset(){
335339 console .error (' There was an error!' , error);
336340 })
337341}
342+
338343function doActionMessage () {
339344 if (messageAction .value === ' reloadPage' ) {
340345 window .location .reload ()
341346 }
342347 if (messageAction .value === ' redirect' ) {
343- window .location .replace (passwordPolicies .value .redirectUrl )
348+ window .location .replace (passwordPolicies .value .redirectUrl )
344349 }
345350}
346351
0 commit comments