Skip to content

Commit f345e49

Browse files
committed
finalisation
1 parent 1c3f0b4 commit f345e49

File tree

5 files changed

+127
-117
lines changed

5 files changed

+127
-117
lines changed

nuxt.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export default defineNuxtConfig({
77
proxy: {
88
https: false,
99
proxies: {
10-
'/management': {
10+
'/management/passwd': {
1111
target: process.env.API_URL,
1212
changeOrigin: true,
1313
headers: {Authorization: 'Bearer ' + process.env.API_KEY},

src/components/LoginMenu.vue

Lines changed: 120 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
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
]"
@@ -38,23 +38,23 @@
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>
@@ -86,45 +86,40 @@
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>
126121
import {ref} from 'vue'
127-
import {computed,onMounted} from 'vue';
122+
import {computed, onMounted} from 'vue';
128123
129124
130125
const messageType = ref('bg-secondary')
@@ -140,43 +135,49 @@ const newpassword = ref('')
140135
const actionReset = ref('mail')
141136
const typeOfReset = ref('SMS')
142137
const code = ref('')
143-
const resetToken=ref('')
138+
const resetToken = ref('')
144139
const enableByMail = ref(true)
145140
const 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+
})
175176
const 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+
338343
function 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

src/pages/index.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<q-page class="window-height window-width row justify-center items-center">
2+
<q-page class="window-height window-width row justify-center items-center bg-image">
33
<LoginMenu></LoginMenu>
44
</q-page>
55
</template>
@@ -10,5 +10,10 @@ export default {
1010
</script>
1111

1212
<style scoped>
13+
.bg-image {
14+
background-image: url(/img/background.png);
15+
background-repeat: no-repeat;
16+
background-size: 100%;
17+
}
1318
1419
</style>

src/public/img/background.png

173 KB
Loading

src/public/img/logo.png

143 KB
Loading

0 commit comments

Comments
 (0)