@@ -11,8 +11,13 @@ div.flex
1111 label ="Activation"
1212 v-model ="props.identity.dataStatus"
1313 :true-value ="1"
14- :false-value ="0"
14+ :indeterminate-value ="-2"
15+ :false-value ="-3"
1516 )
17+ q-btn.q-mx-xs ( @click ="forceChangePassword()" color ="orange-8" icon ="mdi-lock-reset" :disabled ="props.identity.state != IdentityState.SYNCED" )
18+ q-tooltip.text-body2 ( slot ="trigger" ) Obliger l'utilisateur à changer son mot de passe
19+ q-btn.q-mx-xs ( @click ="resetPasswordModal = true" color ="red-8" icon ="mdi-account-key" :disabled ="props.identity.state != IdentityState.SYNCED" )
20+ q-tooltip.text-body2 ( slot ="trigger" ) Définir le mot de passe
1621 q-btn.q-mx-xs ( @click ="sendInit" color ="primary" icon ="mdi-email-arrow-right" :disabled ="props.identity.state != IdentityState.SYNCED" )
1722 q-tooltip.text-body2 ( slot ="trigger" ) Envoyer le mail d'invitation
1823 q-btn.q-mx-xs ( @click ="submit" color ="positive" icon ="mdi-check" v-show ="!isNew" v-if ="crud.update" )
@@ -24,6 +29,15 @@ div.flex
2429 q-tooltip.text-body2 ( slot ="trigger" ) Voir les logs de l'identité
2530 q-btn.q-mx-xs ( v-if ="props.identity?._id" @click ="deleteIdentity" color ="negative" icon ="mdi-delete" )
2631 q-tooltip.text-body2 ( slot ="trigger" ) Supprimer l'identité
32+ q-dialog( v-model ="resetPasswordModal" persistent medium )
33+ q-card( style ="width:800px" )
34+ q-card-section( class ="text-h6 bg-primary text-white" ) definition du mot de passe
35+ q-card-section
36+ input-new-password( v-model ="newpassword" )
37+ q-card-actions( align ="right" class ="bg-white text-teal" )
38+ q-btn( label ="Abandonner" color ="negative" @click ="resetPasswordModal = false" )
39+ q-btn( label ="Sauver" color ="positive" @click ="doChangePassword" : disabled= "newpassword === ''" )
40+
2741</template >
2842
2943<script lang="ts" setup>
@@ -35,8 +49,11 @@ import { useRouter } from 'vue-router'
3549import { useFetch } from ' nuxt/app'
3650import { useIdentityStates } from ' ~/composables'
3751import { useErrorHandling } from ' #imports'
52+ import InputNewPassword from " ~/components/inputNewPassword.vue" ;
53+ const resetPasswordModal= ref (false )
54+ const forcePasswordModal= ref (false )
3855
39-
56+ const newpassword = ref ( ' ' )
4057type IdentityResponse = operations [' IdentitiesController_search' ][' responses' ][' 200' ][' content' ][' application/json' ]
4158type Identity = components [' schemas' ][' IdentitiesDto' ]
4259const activation= ref (true )
@@ -61,6 +78,27 @@ const { handleError } = useErrorHandling()
6178
6279const emits = defineEmits ([' submit' , ' sync' , ' logs' , ' create' , ' delete' ])
6380
81+ async function doChangePassword(){
82+ const requestOptions= {method: ' POST' ,
83+ body:JSON .stringify ({id:props .identity ._id ,newPassword: newpassword .value })}
84+ try {
85+ const data= await $http .post (' /management/identities/forcepassword' , requestOptions )
86+ $q .notify ({
87+ message: ' Le mot de passe a été changé : ' ,
88+ color: ' positive' ,
89+ position: ' top-right' ,
90+ icon: ' mdi-check-circle-outline' ,
91+ })
92+ }catch (error ){
93+ $q .notify ({
94+ message: ' Impossible de modifier le mot de passe : ' + error .response ._data .message ,
95+ color: ' negative' ,
96+ position: ' top-right' ,
97+ icon: ' mdi-alert-circle-outline' ,
98+ })
99+ }
100+ resetPasswordModal .value = false
101+ }
64102async function submit() {
65103 // console.log('submit from actions')
66104 emits (' submit' )
@@ -84,6 +122,43 @@ function showActivate(){
84122 return false
85123 }
86124}
125+ async function forceChangePassword(){
126+ $q .dialog ({
127+ title: ' Confirmation' ,
128+ message: " Voulez vous forcer le changement de mot de passe ? " ,
129+ persistent: true ,
130+ ok: {
131+ push: true ,
132+ color: ' positive' ,
133+ label: ' Forcer' ,
134+ },
135+ cancel: {
136+ push: true ,
137+ color: ' negative' ,
138+ label: ' Annuler' ,
139+ },
140+ }).onOk (async () => {
141+ const requestOptions= {method: ' POST' ,
142+ body:JSON .stringify ({id:props .identity ._id })}
143+ try {
144+ const data= await $http .post (' /management/identities/needtochangepassword' , requestOptions )
145+ $q .notify ({
146+ message: ' LE changement de mot de passe est forcé : ' ,
147+ color: ' positive' ,
148+ position: ' top-right' ,
149+ icon: ' mdi-check-circle-outline' ,
150+ })
151+ }catch (error ){
152+ $q .notify ({
153+ message: ' Impossible de forcer le changement de mot de passe : ' + error .response ._data .message ,
154+ color: ' negative' ,
155+ position: ' top-right' ,
156+ icon: ' mdi-alert-circle-outline' ,
157+ })
158+ }
159+
160+ })
161+ }
87162async function activate(){
88163
89164
@@ -99,7 +174,6 @@ async function activate(){
99174 bouton = " Activer"
100175 initialStatus = 0
101176 }
102- debugger
103177 if (showActivate () === false ){
104178 props .identity .dataStatus = initialStatus
105179 return
0 commit comments