Skip to content

Commit 8df91e9

Browse files
committed
save
1 parent dae816a commit 8df91e9

File tree

10 files changed

+480
-96
lines changed

10 files changed

+480
-96
lines changed

src/components/password-policy.vue

Lines changed: 0 additions & 89 deletions
This file was deleted.
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
<template>
2+
<div>
3+
<div class="row q-gutter-sm">
4+
<h5>Politique des mots de passe</h5>
5+
</div>
6+
<div class="q-pa-md q-gutter-md">
7+
8+
<div class="row">
9+
<div class="col-4">
10+
<q-input type="number" outlined v-model="len" input-class="text-right" label="Longueur minimale " dense> </q-input>
11+
</div>
12+
<div class="col-4">
13+
<q-input type="number" outlined v-model="minComplexity" input-class="text-right" label="Entropie minimale " dense> </q-input>
14+
</div>
15+
<div class="col-4">
16+
<q-input type="number" outlined v-model="goodComplexity" input-class="text-right" label="Entropie bonne " dense> </q-input>
17+
</div>
18+
19+
20+
</div>
21+
<div row="row">
22+
<q-toggle
23+
v-model="hasUpper"
24+
color="green"
25+
label="Doit contenir au moins une Majuscule"
26+
/>
27+
</div>
28+
<div row="row">
29+
<q-toggle
30+
v-model="hasLower"
31+
color="blue"
32+
label="Doit contenir au moins une Minuscule"
33+
/>
34+
</div>
35+
<div row="row">
36+
<q-toggle
37+
v-model="hasNumber"
38+
color="orange"
39+
label="Doit contenir au moins un chiffre"
40+
/>
41+
</div>
42+
<div row="row">
43+
<q-toggle
44+
v-model="hasSpecialChars"
45+
color="blue"
46+
label="Doit contenir au moins un caractère special"
47+
/>
48+
</div>
49+
<div row="row">
50+
<q-toggle
51+
v-model="checkPwned"
52+
color="black"
53+
label="Vérifier si le mot de pass est connu avec pwned "
54+
/>
55+
56+
</div>
57+
<div row="row">
58+
<q-toggle
59+
v-model="smsEnabled"
60+
color="red"
61+
label="Reinitialisation par SMS active"
62+
/>
63+
</div>
64+
<div class="row">
65+
<q-input style="width:50%" type="text" outlined v-model="mailAttribute" label="Attribut de l'identité contenant le mail alternatif " dense/>
66+
</div>
67+
<div class="row">
68+
<q-input style="width:50%" type="text" outlined v-model="mobileAttribute" label="Attribut de l'identité contenant le numero de mobile " dense/>
69+
</div>
70+
<div class="row">
71+
<q-input style="width:50%" type="url" outlined v-model="redirectUrl" label="Url de redirection après un changement de mot de passe " dense/>
72+
</div>
73+
<div class="q-pa-md q-gutter-sm fixed-bottom">
74+
<q-btn color="primary" style="width: 100%" @click="saveParams">
75+
<div class="ellipsis">
76+
Sauvegarder les parametres
77+
</div>
78+
</q-btn>
79+
</div>
80+
</div>
81+
</div>
82+
</template>
83+
84+
<script setup>
85+
import {onMounted, ref} from "vue";
86+
import {useQuasar} from "quasar";
87+
const $q = useQuasar()
88+
const len=ref(8)
89+
const hasUpper = ref(false)
90+
const hasLower = ref(false)
91+
const hasNumber= ref(false)
92+
const hasSpecialChars=ref(false)
93+
const checkPwned=ref(false)
94+
const smsEnabled=ref(false)
95+
const mailAttribute=ref('')
96+
const mobileAttribute=ref('')
97+
const redirectUrl=ref('')
98+
const goodComplexity=ref(0)
99+
const minComplexity=ref(0)
100+
onMounted(() => {
101+
readParams()
102+
})
103+
104+
async function readParams(){
105+
console.log('readParams')
106+
const { data: result, pending, error, refresh } = await useHttp(`/settings/passwdadm/getpolicies`, {
107+
method: 'GET',
108+
});
109+
if (error.value) {
110+
handleError({
111+
error: error.value,
112+
message: 'Erreur lors de de la lecture des police'
113+
})
114+
} else {
115+
redirectUrl.value=result.value.data.redirectUrl
116+
len.value=result.value.data.len
117+
hasUpper.value=result.value.data.hasUpperCase === 1
118+
hasLower.value=result.value.data.hasLowerCase === 1
119+
hasNumber.value=result.value.data.hasNumbers === 1
120+
hasSpecialChars.value=result.value.data.hasSpecialChars === 1
121+
smsEnabled.value=result.value.data.resetBySms
122+
checkPwned.value=result.value.data.checkPwned
123+
minComplexity.value=result.value.data.minComplexity
124+
goodComplexity.value=result.value.data.goodComplexity
125+
mobileAttribute.value=result.value.data.mobileAttribute
126+
mailAttribute.value=result.value.data.emailAttribute
127+
}
128+
}
129+
async function saveParams(){
130+
const data= {
131+
len: len.value,
132+
hasUpperCase: hasUpper.value === true?1:0,
133+
hasLowerCase: hasLower.value === true?1:0,
134+
hasNumbers: hasNumber.value === true?1:0,
135+
hasSpecialChars: hasSpecialChars.value === true?1:0,
136+
minComplexity: minComplexity.value,
137+
goodComplexity: goodComplexity.value,
138+
checkPwned: checkPwned.value,
139+
resetBySms: smsEnabled.value,
140+
redirectUrl: redirectUrl.value,
141+
emailAttribute: mailAttribute.value,
142+
mobileAttribute: mobileAttribute.value
143+
}
144+
const { data: result, pending, error, refresh } = await useHttp(`/settings/passwdadm/setpolicies`, {
145+
method: 'POST',
146+
body: data
147+
});
148+
if (error.value) {
149+
handleError({
150+
error: error.value,
151+
message: 'Erreur lors de la sauvegarde des parametres'
152+
})
153+
} else {
154+
$q.notify({
155+
message: 'Les parametres ont été sauvegardés',
156+
color: 'positive',
157+
position: 'top-right',
158+
icon: 'mdi-check-circle-outline',
159+
})
160+
}
161+
}
162+
</script>
163+
164+
165+
<style scoped>
166+
167+
</style>
Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,35 @@
3838
</q-item-section>
3939
</q-item>
4040
</q-list>
41+
<q-list>
42+
<q-item clickable @click="onSmtp">
43+
<q-item-section avatar>
44+
<q-icon name="mdi-mail"/>
45+
</q-item-section>
46+
<q-item-section>
47+
Serveur SMTP
48+
</q-item-section>
49+
</q-item>
50+
</q-list>
51+
<q-list>
52+
<q-item clickable @click="onSms">
53+
<q-item-section avatar>
54+
<q-icon name="mdi-message-processing"/>
55+
</q-item-section>
56+
<q-item-section>
57+
Serveur SMS
58+
</q-item-section>
59+
</q-item>
60+
</q-list>
4161
</q-scroll-area>
4262
</q-drawer>
4363

4464
<q-page-container>
4565
<q-page padding :class="$q.dark.isActive ? 'bg-black' : 'bg-white'">
46-
<sesame-agents v-if="agent === true"></sesame-agents>
47-
<sesame-password-policy v-if="passPolicy === true"></sesame-password-policy>
66+
<sesame-settings-agents v-if="agent === true"></sesame-settings-agents>
67+
<sesame-settings-password-policy v-if="passPolicy === true"></sesame-settings-password-policy>
68+
<sesame-settings-smtp v-if="smtp === true"></sesame-settings-smtp>
69+
<sesame-settings-sms v-if="sms === true"></sesame-settings-sms>
4870
</q-page>
4971
</q-page-container>
5072
</q-layout>
@@ -55,22 +77,32 @@
5577

5678
<script setup>
5779
import {ref} from "vue";
58-
5980
const drawer = ref(false)
6081
const agent=ref(false)
6182
const passPolicy=ref(false)
83+
const smtp=ref(false)
84+
const sms=ref(false)
6285
function onAgents() {
6386
resetMenu()
6487
agent.value=true
6588
}
66-
89+
function onSmtp(){
90+
resetMenu()
91+
smtp.value=true
92+
}
93+
function onSms(){
94+
resetMenu()
95+
sms.value=true
96+
}
6797
function onPassPolicy() {
6898
resetMenu()
6999
passPolicy.value=true
70100
}
71101
function resetMenu(){
72102
agent.value=false
73103
passPolicy.value=false
104+
smtp.value=false
105+
sms.value=false
74106
}
75107
</script>
76108

0 commit comments

Comments
 (0)