Commit dc030339afd1b981284bfd805bc0e70e517bea39

Authored by Geoffrey PREUD'HOMME
1 parent 1de801b7

Modification de son propre utilisateur

Showing 2 changed files with 75 additions and 36 deletions   Show diff stats
@@ -319,6 +319,9 @@ @@ -319,6 +319,9 @@
319 </ul> 319 </ul>
320 </div> 320 </div>
321 <div id="utilisateurs"> 321 <div id="utilisateurs">
  322 + <h4>{{ moi.login }}</h4>
  323 + <umodifier :utilisateur="moi"></umodifier>
  324 +
322 <h4>Liste des utilisateurs</h4> 325 <h4>Liste des utilisateurs</h4>
323 <button @click="actuUtilisateurs">Rafraîchir</button> 326 <button @click="actuUtilisateurs">Rafraîchir</button>
324 <ul class="collapsible popout" data-collapsible="accordion"> 327 <ul class="collapsible popout" data-collapsible="accordion">
@@ -329,39 +332,7 @@ @@ -329,39 +332,7 @@
329 <i class="material-icons" v-if="utilisateur.droit == 3">supervisor_account</i> {{ utilisateur.login }} 332 <i class="material-icons" v-if="utilisateur.droit == 3">supervisor_account</i> {{ utilisateur.login }}
330 </div> 333 </div>
331 <div class="collapsible-body"> 334 <div class="collapsible-body">
332 - <h5>Changer de droit</h5>  
333 - <form @change="u_droit(utilisateur)">  
334 - <p>  
335 - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_1'" v-model="utilisateur.droit" value="1" />  
336 - <label :for="'droit_' + utilisateur.login + '_1'">BDE</label>  
337 - </p>  
338 - <p>  
339 - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_2'" v-model="utilisateur.droit" value="2" />  
340 - <label :for="'droit_' + utilisateur.login + '_2'">Bar</label>  
341 - </p>  
342 - <p>  
343 - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_3'" v-model="utilisateur.droit" value="3" />  
344 - <label :for="'droit_' + utilisateur.login + '_3'">Président</label>  
345 - </p>  
346 - </form>  
347 - <h5>Changer de mot de passe</h5>  
348 - <form @submit="u_mdp(utilisateur)">  
349 - <div class="input-field">  
350 - <i class="material-icons prefix">vpn_key</i>  
351 - <input type="password" name="mdp" v-model="utilisateur.mdp" length="72">  
352 - <label for="utilisateur.mdp">Mot de passe</label>  
353 - </div>  
354 - <button :disabled="!utilisateur.mdp">Changer de mot de passe</button>  
355 - </form>  
356 - <h5> Changer de carte </h5>  
357 - <form @submit="u_carte(utilisateur)">  
358 - <div class="input-field">  
359 - <i class="material-icons prefix">credit_card</i>  
360 - <input type="text" name="carte" length="8" v-model="utilisateur.idCarte">  
361 - <label for="utilisateur.idCarte">Carte</label>  
362 - </div>  
363 - <button :disabled="!utilisateur.idCarte">Changer de carte</button>  
364 - </form> 335 + <umodifier :utilisateur="utilisateur"></umodifier>
365 336
366 <h5>Transactions</h5> 337 <h5>Transactions</h5>
367 <todo></todo> 338 <todo></todo>
@@ -393,11 +364,52 @@ @@ -393,11 +364,52 @@
393 </div> 364 </div>
394 </footer> 365 </footer>
395 366
  367 + <!-- Modèles -->
  368 + <script type="text/template" id="todo">
  369 + <div class="chip green">
  370 + Prochainement
  371 + </div>
  372 + </script>
  373 + <script type="text/template" id="u_modifier">
  374 + <h5>Changer de droit</h5>
  375 + <form @change="u_droit(utilisateur)">
  376 + <p>
  377 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_1'" v-model="utilisateur.droit" value="1" :disabled="moi.droit < 3"/>
  378 + <label :for="'droit_' + utilisateur.login + '_1'">BDE</label>
  379 + </p>
  380 + <p>
  381 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_2'" v-model="utilisateur.droit" value="2" :disabled="moi.droit < 3"/>
  382 + <label :for="'droit_' + utilisateur.login + '_2'">Bar</label>
  383 + </p>
  384 + <p>
  385 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_3'" v-model="utilisateur.droit" value="3" :disabled="moi.droit < 3"/>
  386 + <label :for="'droit_' + utilisateur.login + '_3'">Président</label>
  387 + </p>
  388 + </form>
  389 + <h5>Changer de mot de passe</h5>
  390 + <form @submit="u_mdp(utilisateur)">
  391 + <div class="input-field">
  392 + <i class="material-icons prefix">vpn_key</i>
  393 + <input type="password" name="mdp" v-model="utilisateur.mdp" length="72">
  394 + <label for="utilisateur.mdp">Mot de passe</label>
  395 + </div>
  396 + <button :disabled="!utilisateur.mdp">Changer de mot de passe</button>
  397 + </form>
  398 + <h5> Changer de carte </h5>
  399 + <form @submit="u_carte(utilisateur)">
  400 + <div class="input-field">
  401 + <i class="material-icons prefix">credit_card</i>
  402 + <input type="text" name="carte" length="8" v-model="utilisateur.idCarte">
  403 + <label for="utilisateur.idCarte">Carte</label>
  404 + </div>
  405 + <button :disabled="!utilisateur.idCarte">Changer de carte</button>
  406 + </form>
  407 + </script>
396 408
397 <!-- Scripts--> 409 <!-- Scripts-->
398 <script src="lib/jquery/dist/jquery.min.js"></script> 410 <script src="lib/jquery/dist/jquery.min.js"></script>
399 <script src="lib/Materialize/dist/js/materialize.min.js"></script> 411 <script src="lib/Materialize/dist/js/materialize.min.js"></script>
400 - <script src="lib/vue/dist/vue.min.js"></script> 412 + <script src="lib/vue/dist/vue.js"></script>
401 <script src="js/init.js"></script> 413 <script src="js/init.js"></script>
402 414
403 </body> 415 </body>
@@ -39,11 +39,18 @@ var app = new Vue({ @@ -39,11 +39,18 @@ var app = new Vue({
39 jeton: '', 39 jeton: '',
40 connecte: false, 40 connecte: false,
41 date: 1, 41 date: 1,
  42 + // Champs (à remplacer par des objets)
  43 + mdp: '',
  44 + idCarte: '',
  45 + solde: 0,
  46 + credit: 0,
  47 + prix: 0,
  48 + moi: {},
  49 + u_nouveau: {},
42 // Données 50 // Données
43 clients: [], 51 clients: [],
44 transactions: [], 52 transactions: [],
45 utilisateurs: [], 53 utilisateurs: [],
46 - u_nouveau: {},  
47 }, 54 },
48 methods: { 55 methods: {
49 // API 56 // API
@@ -223,10 +230,13 @@ var app = new Vue({ @@ -223,10 +230,13 @@ var app = new Vue({
223 that.mdp = '' 230 that.mdp = ''
224 switch(retour) { 231 switch(retour) {
225 case "ok": 232 case "ok":
  233 + // TODO Virer les variables non-objet globales
226 that.login = donnees.login 234 that.login = donnees.login
227 that.droit = donnees.droit 235 that.droit = donnees.droit
228 that.jeton = donnees.jeton 236 that.jeton = donnees.jeton
229 that.connecte = that.date 237 that.connecte = that.date
  238 +
  239 + that.moi = {login: donnees.login, droit: donnees.droit, jeton: donnees.jeton, connecte: that.date}
230 that.toast("Correctement identifié en tant que " + that.login + " pour " + JETON_DUREE/60+ " minutes") 240 that.toast("Correctement identifié en tant que " + that.login + " pour " + JETON_DUREE/60+ " minutes")
231 that.page = 'operations' 241 that.page = 'operations'
232 break; 242 break;
@@ -310,7 +320,22 @@ var app = new Vue({ @@ -310,7 +320,22 @@ var app = new Vue({
310 } 320 }
311 }, 321 },
312 components: { 322 components: {
313 - 'todo': Vue.extend({template: '<div class="chip green"> Prochainement </div>'}), 323 + 'todo': Vue.extend({
  324 + template: $('#todo').html(),
  325 + }),
  326 + 'umodifier': Vue.extend({
  327 + props: ['utilisateur'],
  328 + template: $('#u_modifier').html(),
  329 + methods: { // TODO Pas bien
  330 + u_droit: function(data) { return this.$parent.u_droit(data) },
  331 + u_mdp: function(data) { return this.$parent.u_mdp(data) },
  332 + u_carte: function(data) { return this.$parent.u_carte(data) },
  333 + },
  334 + computed: {
  335 + moi: function() { return this.$parent.moi },
  336 + },
  337 + }),
  338 +
314 }, 339 },
315 watch: { 340 watch: {
316 utilisateurs: function() { 341 utilisateurs: function() {
@@ -319,10 +344,12 @@ var app = new Vue({ @@ -319,10 +344,12 @@ var app = new Vue({
319 } 344 }
320 }) 345 })
321 346
  347 +// Filtres
322 Vue.filter('date', function(timestamp) { 348 Vue.filter('date', function(timestamp) {
323 return Date(timestamp).toLocaleString(); 349 return Date(timestamp).toLocaleString();
324 }) 350 })
325 351
  352 +// Actualisation du timer
326 setInterval(function actualiserDate() { 353 setInterval(function actualiserDate() {
327 app.$data.date = Math.floor(Date.now()/1000) 354 app.$data.date = Math.floor(Date.now()/1000)
328 }, 1000); 355 }, 1000);