From fa1c58ad332cd8dd5ba54f8b532d7b9d870c08ee Mon Sep 17 00:00:00 2001
From: antoinekia <antoinekia@gmail.com>
Date: Mon, 21 Jun 2021 17:12:54 +0200
Subject: [PATCH] Dist

---
 client/src/components/SchoolManager.vue | 14 ++++++++------
 client/src/components/TeamElement.vue   |  2 +-
 server/dist/index.html                  |  2 +-
 server/dist/js/app.69a3e149.js          |  2 ++
 server/dist/js/app.69a3e149.js.map      |  1 +
 server/dist/js/app.6c3f3df9.js          |  2 --
 server/dist/js/app.6c3f3df9.js.map      |  1 -
 7 files changed, 13 insertions(+), 11 deletions(-)
 create mode 100644 server/dist/js/app.69a3e149.js
 create mode 100644 server/dist/js/app.69a3e149.js.map
 delete mode 100644 server/dist/js/app.6c3f3df9.js
 delete mode 100644 server/dist/js/app.6c3f3df9.js.map

diff --git a/client/src/components/SchoolManager.vue b/client/src/components/SchoolManager.vue
index 6f3b6fe..ccc4157 100644
--- a/client/src/components/SchoolManager.vue
+++ b/client/src/components/SchoolManager.vue
@@ -1,6 +1,7 @@
 <template>
   <div id="app" class="content">
-
+    <div v-if="teams[0]">
+      <div v-if="teams[0].donePuzzles">
         <div v-if="teams[0].donePuzzles.length > 0" class="container mb-6 has-text-centered">
           <p class="is-size-3">🏅  Classement des équipes  🏅</p>
 
@@ -34,11 +35,11 @@
             </div>
           </div>
         </div>
-
-
-        <div class="mb-2" @addedTeam="updateTeams" v-for="team in teams" :key="team._id">
-          <TeamElement :team="team" :teamArray="teams" />
-        </div>
+      </div>
+    </div>
+      <div class="mb-2" @addedTeam="updateTeams" v-for="team in teams" :key="team._id">
+        <TeamElement :team="team" :teamArray="teams" />
+      </div>
 
 
         <TeamAdder class="mt-6" :teamArray="teams"></TeamAdder>
@@ -81,6 +82,7 @@ export default {
     },
     getGlobalScore(team) {
       var globalScore = 0
+      if (!team.donePuzzles) return 0;
       team.donePuzzles.forEach(puzzle => {
         if (puzzle.score)
           globalScore += parseInt(puzzle.coef)*parseInt(puzzle.score)
diff --git a/client/src/components/TeamElement.vue b/client/src/components/TeamElement.vue
index 09fca68..d7f7bcd 100644
--- a/client/src/components/TeamElement.vue
+++ b/client/src/components/TeamElement.vue
@@ -186,7 +186,7 @@ export default {
 
     removeCardPairing: function() {
       var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');
-      let uri = domainName `/school/removeTeamCard/${this.team._id}`;
+      let uri = domainName + `/school/removeTeamCard/${this.team._id}`;
         this.axios
         .post(uri, this.team, { withCredentials: true })
         .then(response => {
diff --git a/server/dist/index.html b/server/dist/index.html
index b8d3b78..7a394fa 100644
--- a/server/dist/index.html
+++ b/server/dist/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>client</title><link href="/css/app.6c12e322.css" rel="preload" as="style"><link href="/css/chunk-vendors.bf4b79ec.css" rel="preload" as="style"><link href="/js/app.6c3f3df9.js" rel="preload" as="script"><link href="/js/chunk-vendors.37c17c23.js" rel="preload" as="script"><link href="/css/chunk-vendors.bf4b79ec.css" rel="stylesheet"><link href="/css/app.6c12e322.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but client doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.37c17c23.js"></script><script src="/js/app.6c3f3df9.js"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>client</title><link href="/css/app.6c12e322.css" rel="preload" as="style"><link href="/css/chunk-vendors.bf4b79ec.css" rel="preload" as="style"><link href="/js/app.69a3e149.js" rel="preload" as="script"><link href="/js/chunk-vendors.37c17c23.js" rel="preload" as="script"><link href="/css/chunk-vendors.bf4b79ec.css" rel="stylesheet"><link href="/css/app.6c12e322.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but client doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.37c17c23.js"></script><script src="/js/app.69a3e149.js"></script></body></html>
\ No newline at end of file
diff --git a/server/dist/js/app.69a3e149.js b/server/dist/js/app.69a3e149.js
new file mode 100644
index 0000000..06e6efe
--- /dev/null
+++ b/server/dist/js/app.69a3e149.js
@@ -0,0 +1,2 @@
+(function(e){function t(t){for(var a,r,o=t[0],l=t[1],c=t[2],d=0,p=[];d<o.length;d++)r=o[d],Object.prototype.hasOwnProperty.call(i,r)&&i[r]&&p.push(i[r][0]),i[r]=0;for(a in l)Object.prototype.hasOwnProperty.call(l,a)&&(e[a]=l[a]);u&&u(t);while(p.length)p.shift()();return n.push.apply(n,c||[]),s()}function s(){for(var e,t=0;t<n.length;t++){for(var s=n[t],a=!0,o=1;o<s.length;o++){var l=s[o];0!==i[l]&&(a=!1)}a&&(n.splice(t--,1),e=r(r.s=s[0]))}return e}var a={},i={app:0},n=[];function r(t){if(a[t])return a[t].exports;var s=a[t]={i:t,l:!1,exports:{}};return e[t].call(s.exports,s,s.exports,r),s.l=!0,s.exports}r.m=e,r.c=a,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},r.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(r.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(s,a,function(t){return e[t]}.bind(null,a));return s},r.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/";var o=window["webpackJsonp"]=window["webpackJsonp"]||[],l=o.push.bind(o);o.push=t,o=o.slice();for(var c=0;c<o.length;c++)t(o[c]);var u=l;n.push([0,"chunk-vendors"]),s()})({0:function(e,t,s){e.exports=s("56d7")},"06fc":function(e,t,s){},"3b57":function(e,t,s){e.exports=s.p+"img/clubelek.e63dc7f1.png"},4597:function(e,t,s){e.exports=s.p+"img/insa.bc285c14.png"},5453:function(e,t,s){"use strict";s("bad2")},"54da":function(e,t,s){e.exports=s.p+"img/objectif21.e8d264c0.png"},"56d7":function(e,t,s){"use strict";s.r(t);var a=s("2b0e"),i=s("2f62"),n=s("0e44"),r=s("8c4f"),o=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content page-wrapper"},[s("div",{staticClass:"content-wrapper"},[s("nav",{staticClass:"navbar is-fixed-top mb-6"},[s("div",{staticClass:"navbar-brand"},[s("a",{staticClass:"navbar-item"},[s("router-link",{attrs:{to:"/"}},[s("i",{staticClass:"fas fa-home"}),e._v(" Home")])],1),s("a",{staticClass:"navbar-burger",class:{"is-active":e.showNav},on:{click:function(t){e.showNav=!e.showNav}}},[s("span",{attrs:{"aria-hidden":"true"}}),s("span",{attrs:{"aria-hidden":"true"}}),s("span",{attrs:{"aria-hidden":"true"}})])]),s("div",{staticClass:"navbar-menu",class:{"is-active":e.showNav},attrs:{id:"navMenu"}},[s("div",{staticClass:"navbar-start"},[s("a",{staticClass:"navbar-item"},[s("router-link",{attrs:{to:"/results"}},[s("i",{staticClass:"fas fa-flag-checkered"}),e._v(" Enregistrer des résultats")])],1),e.$store.state.isLoggedIn?s("a",{staticClass:"navbar-item"},[s("router-link",{attrs:{to:"/school"}},[s("i",{staticClass:"fas fa-school"}),e._v(" Mon établissement ("+e._s(e.$store.state.schoolName)+")")])],1):e._e(),s("a",{staticClass:"navbar-item"},[s("router-link",{attrs:{to:"/legal"}},[s("i",{staticClass:"fas fa-balance-scale"}),e._v(" Mentions légales")])],1)]),s("div",{staticClass:"navbar-end"},[s("div",{staticClass:"buttons has-addons"},[e.usbConnected?s("a",{staticClass:"navbar-item button is-danger",on:{click:function(t){return e.disconnectUsb()}}},[e._m(1)]):s("a",{staticClass:"navbar-item button is-info",on:{click:function(t){return e.connectUsb()}}},[e._m(0)]),e.$store.state.isLoggedIn?e._e():s("a",{staticClass:"navbar-item button"},[s("router-link",{attrs:{to:"/register"}},[s("span",[s("i",{staticClass:"fas fa-user-plus"}),e._v(" Inscription")])])],1),e.$store.state.isLoggedIn?e._e():s("a",{staticClass:"navbar-item button is-primary"},[s("router-link",{attrs:{to:"/login"}},[s("span",[s("i",{staticClass:"fas fa-sign-in-alt"}),e._v(" Connexion")])])],1),e.$store.state.isLoggedIn?s("a",{staticClass:"navbar-item button is-dark",on:{click:function(t){return e.logout()}}},[e._m(2)]):e._e()])])])]),s("transition",{attrs:{name:"fade"}},[s("router-view",{staticClass:"section container is-widescreen mt-6"})],1)],1),s("PageFooter")],1)},l=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[s("i",{staticClass:"fab fa-usb"}),e._v(" Connexion lecteur NFC USB")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[s("i",{staticClass:"fab fa-usb"}),e._v(" Déconnexion lecteur NFC USB")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[s("i",{staticClass:"fas fa-sign-out-alt"}),e._v(" Déconnexion")])}],c=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},u=[function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("footer",{staticClass:"footer has-text-centered"},[a("div",{staticClass:"content level"},[a("a",{staticClass:"level-item has-text-centered",attrs:{href:"https://www.insa-lyon.fr"}},[a("img",{attrs:{src:s("4597")}})]),a("a",{staticClass:"level-item has-text-centered",attrs:{href:"https://www.clubelek.fr"}},[a("img",{attrs:{src:s("3b57")}})]),a("a",{staticClass:"level-item has-text-centered"},[a("img",{attrs:{src:s("54da")}})])]),a("div",{staticClass:"content"},[a("p",[e._v(" Conçu et développé par les associations Clubelek et Objectif21, de l'INSA Lyon - Saison 2020/2021 - Made with 💚 by Antoine Rochebois ")])])])}],d={name:"PageFooter"},p=d,m=(s("5453"),s("2877")),v=Object(m["a"])(p,c,u,!1,null,"45bbb7b4",null),h=v.exports,f={};(function(){f.getPorts=function(){return navigator.usb.getDevices().then(e=>e.map(e=>new f.Port(e)))},f.requestPort=function(){const e=[{vendorId:9025,productId:32822},{vendorId:9025,productId:32823},{vendorId:9025,productId:32845},{vendorId:9025,productId:32846},{vendorId:9025,productId:32847},{vendorId:9025,productId:32848},{vendorId:9025,productId:32850},{vendorId:9025,productId:32851},{vendorId:9025,productId:32852},{vendorId:9025,productId:32853},{vendorId:9025,productId:32854},{vendorId:9025,productId:32855},{vendorId:9114}];return navigator.usb.requestDevice({filters:e}).then(e=>new f.Port(e))},f.Port=function(e){this.device_=e,this.interfaceNumber_=2,this.endpointIn_=5,this.endpointOut_=4},f.Port.prototype.connect=function(){let e=()=>{this.device_.transferIn(this.endpointIn_,64).then(t=>{this.onReceive(t.data),e()},e=>{this.onReceiveError(e)})};return this.device_.open().then(()=>{if(null===this.device_.configuration)return this.device_.selectConfiguration(1)}).then(()=>{var e=this.device_.configuration.interfaces;e.forEach(e=>{e.alternates.forEach(t=>{255==t.interfaceClass&&(this.interfaceNumber_=e.interfaceNumber,t.endpoints.forEach(e=>{"out"==e.direction&&(this.endpointOut_=e.endpointNumber),"in"==e.direction&&(this.endpointIn_=e.endpointNumber)}))})})}).then(()=>this.device_.claimInterface(this.interfaceNumber_)).then(()=>this.device_.selectAlternateInterface(this.interfaceNumber_,0)).then(()=>this.device_.controlTransferOut({requestType:"class",recipient:"interface",request:34,value:1,index:this.interfaceNumber_})).then(()=>{e()})},f.Port.prototype.disconnect=function(){return this.device_.controlTransferOut({requestType:"class",recipient:"interface",request:34,value:0,index:this.interfaceNumber_}).then(()=>this.device_.close())},f.Port.prototype.send=function(e){return this.device_.transferOut(this.endpointOut_,e)}})();var g=f;class b{constructor(){this.textEncoder=new TextEncoder,this.locked=!1,g.getPorts().then(e=>{0==e.length?console.log("No devices found."):(this.port=e[0],console.log("Port choisi :",this.port),this.connect()),this.locked=!1})}selectAndConnect(){g.requestPort().then(e=>{this.port=e,this.connect()}).catch(e=>{console.log("Connection error: "+e)})}disconnect(){this.port.disconnect(),this.port=null}connect(){console.log("Connecting to "+this.port.device_.productName+"..."),this.port.connect().then(()=>(console.log(this.port,"Connected."),this.port.onReceive=e=>{let t=new TextDecoder;this.receivedMsg=t.decode(e),console.log("Reçu :"+this.receivedMsg)},this.port.onReceiveError=e=>{console.log("Receive error: "+e)},!0),e=>(console.log("Connection error: "+e),!1))}readTagUid(){return new Promise((e,t)=>{this.locked=!0,this.sendString("GETID_"),this.port.onReceive=s=>{let a=new TextDecoder,i=a.decode(s);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("Reçu :"+i);let n=i.split("_")[0];"RECEIVED_GETID;"==i?console.log("GETID request ACK by Arduino"):"UID"==n&&";"==i.slice(-1)?(this.locked=!1,e(i.split("_")[1].slice(0,-1))):t("Bad message structure received")}})}readCard(){return new Promise((e,t)=>{this.locked=!0,this.sendString("READ_");var s=0,a="";this.port.onReceive=i=>{let n=new TextDecoder,r=n.decode(i);r=r.replace(/(\r\n|\n|\r)/gm,"").replace(/[^\w;]+/g,""),a+=r,a.includes("CONTENT_BEGIN_en")&&a.includes("_END")?(a=a.split("CONTENT_BEGIN_en"),a=a[a.length-1].split("_END")[0],this.locked=!1,e(a)):a.includes("RECEIVED_READ")||(s>100&&t("Too many reading fail"),s++)}})}writeCard(e){return new Promise((t,s)=>{this.locked=!0,this.sendString("WRITE_"+e),this.port.onReceive=e=>{let a=new TextDecoder,i=a.decode(e);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("recu ",i),"WRITTEN;"==i?(console.log("wrote team message"),this.locked=!1,t("")):i.includes("RECEIVED_WRITE")||s("Write : Bad message structure received")}})}cleanCard(){return new Promise((e,t)=>{this.locked=!0,this.sendString("CLEAN_"),this.port.onReceive=s=>{let a=new TextDecoder,i=a.decode(s);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("recu ",i),"CLEANED;"==i?(console.log("Cleaned card"),this.locked=!1,e("")):i.includes("RECEIVED_CLEAN")||t("Clean : Bad message structure received")}})}formatCard(){return new Promise((e,t)=>{this.locked=!0,this.sendString("FORMAT_"),this.port.onReceive=s=>{let a=new TextDecoder,i=a.decode(s);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("recu ",i),"FORMATED;"==i?(console.log("Formated card"),this.locked=!1,e("")):i.includes("RECEIVED_FORMAT")||t("Format : Bad message structure received")}})}eraseCard(){return new Promise((e,t)=>{this.locked=!0,this.sendString("ERASE_"),this.port.onReceive=s=>{let a=new TextDecoder,i=a.decode(s);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("recu ",i),"ERASED;"==i?(console.log("Erased card"),this.locked=!1,e("")):i.includes("RECEIVED_ERASE")||t("Erase : Bad message structure received")}})}ping(){return new Promise((e,t)=>{if(this.locked)return console.log("Trying to ping while performing another task"),e("");this.sendString("PING_");var s=setTimeout(()=>{t("ping timeout")},2e3);this.port.onReceive=t=>{let a=new TextDecoder,i=a.decode(t);i=i.replace(/(\r\n|\n|\r)/gm,""),"PONG;"==i&&(clearTimeout(s),e(""))}})}sendString(e){void 0!==this.port&&this.port.send(this.textEncoder.encode(e)).catch(e=>{console.log("Send error: "+e)})}}var _={name:"app",data(){return{showNav:!1,usbConnected:!1}},created(){this.usbNfcReader=new b},mounted(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/loginCheck";this.axios.post(t,{},{withCredentials:!0}).then(e=>{console.log(e),"ok"!=e.data&&this.$store.commit("logout")}),setTimeout(()=>this.checkNfcModule(),1e3),setInterval(()=>{this.checkNfcModule()},2500)},methods:{logout(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/logout";this.axios.post(t,{},{withCredentials:!0}).then(e=>{console.log(e),this.$store.commit("logout")})},connectUsb(){this.usbNfcReader.selectAndConnect(),this.setTimeout(()=>this.checkNfcModule(),500)},disconnectUsb(){this.usbNfcReader.disconnect(),this.setTimeout(()=>this.checkNfcModule(),500)},checkNfcModule(){this.usbNfcReader.ping().then(()=>{this.usbConnected=!0,console.log("Still connected to USB")}).catch(()=>{this.usbConnected=!1,console.log("Distconnected from USB !")})}},components:{PageFooter:h}},C=_,k=(s("d2cc"),Object(m["a"])(C,o,l,!1,null,"3342100e",null)),x=k.exports,q=s("2106"),y=s.n(q),P=s("bc3a"),E=s.n(P),I=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},w=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("h1",[e._v("Escape game économies d'énergies")]),s("p",[e._v(" Bienvenu sur cet escape game développé par les associations Clubelek et Objectif21 de l'INSA Lyon ")])])}],S={components:{}},N=S,T=Object(m["a"])(N,I,w,!1,null,"688c470e",null),D=T.exports,z=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content",attrs:{id:"app"}},[e.teams[0]?s("div",[e.teams[0].donePuzzles?s("div",[e.teams[0].donePuzzles.length>0?s("div",{staticClass:"container mb-6 has-text-centered"},[s("p",{staticClass:"is-size-3"},[e._v("🏅 Classement des équipes 🏅")]),e._l(e.teams,(function(t,a){return s("div",{key:t._id},[t.donePuzzles?s("div",[t.donePuzzles.length>0?s("div",{staticClass:"box mb-2"},[s("nav",{staticClass:"level"},[s("div",{staticClass:"level-item has-text-centered"},[s("div",[s("p",{staticClass:"heading"},[e._v("Rang")]),s("p",{staticClass:"title"},0==a?[e._v("🥇")]:1==a?[e._v("🥈")]:2==a?[e._v("🥉")]:[e._v(e._s(a+1))])])]),s("div",{staticClass:"level-item has-text-centered"},[s("div",[s("p",{staticClass:"heading"},[e._v("équipe")]),s("p",{staticClass:"title"},[e._v(e._s(t.name))])])]),s("div",{staticClass:"level-item has-text-centered"},[s("div",[s("p",{staticClass:"heading"},[e._v("Score")]),s("p",{staticClass:"title"},[e._v(e._s(e.getGlobalScore(t)))])])])])]):e._e()]):e._e()])}))],2):e._e()]):e._e()]):e._e(),e._l(e.teams,(function(t){return s("div",{key:t._id,staticClass:"mb-2",on:{addedTeam:e.updateTeams}},[s("TeamElement",{attrs:{team:t,teamArray:e.teams}})],1)})),s("TeamAdder",{staticClass:"mt-6",attrs:{teamArray:e.teams}})],2)},R=[],A=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("span",{staticClass:"message is-info"},[s("div",{staticClass:"message-header"},[e._v(" Equipe "+e._s(e.team.name)+" ("+e._s(e.memberCount)+" membres) "),s("button",{staticClass:"delete",on:{click:e.removeTeam}})]),s("div",{staticClass:"message-body"},[s("div",{staticClass:"level"},[s("div",{staticClass:"level-left level-item column"},[e._m(0),s("ul",e._l(e.team.members,(function(t){return s("li",{key:t},[e._v(e._s(t))])})),0)]),s("div",{staticClass:"level-right level-item column has-text-centered"},[""!=this.team.cardId?s("p",{staticClass:"heading"},[e._v(" Carte associée avec l'ID : "+e._s(e.team.cardId)+" ")]):s("p",{staticClass:"heading"},[e._v(" Aucune carte associée ! ")]),""!=this.team.cardId?s("button",{staticClass:"button is-danger",on:{click:function(t){return e.removeCardPairing()}}},[e._v(" Dissocier la carte ")]):s("button",{staticClass:"button is-warning",on:{click:function(t){return e.manageCardPairing()}}},[e._v(" Associer une carte ")])])]),e.team.donePuzzles?s("div",[e.team.donePuzzles.length>0?s("p",{staticClass:"is-size-4"},[s("strong",[e._v("Puzzles effectués :")])]):e._e(),e._l(e.team.donePuzzles,(function(t){return s("div",{key:t.name},[t.score?s("div",{staticClass:"level"},[s("div",{staticClass:"level-item level-left"},[s("p",[s("strong",[e._v(e._s(t.name))]),e._v(" ("+e._s(t.room)+") : ")])]),s("div",{staticClass:"level-item level-right"},[s("progress",{staticClass:"progress is-small",attrs:{max:t.maxScore},domProps:{value:t.score}})]),s("div",{staticClass:"level-item level-right"},[s("p",[e._v(e._s(t.score)+"/"+e._s(t.maxScore))])])]):s("div",{staticClass:"level "},[s("div",{staticClass:"level-item level-left"},[s("p",[s("strong",[e._v(e._s(t.name))]),e._v(" ("+e._s(t.room)+") : ")])]),s("div",{staticClass:"level-item level-right"},[t.validated?s("span",{staticClass:"icon has-text-success"},[s("i",{staticClass:"fas fa-check-circle"})]):s("span",{staticClass:"icon has-text-danger"},[s("i",{staticClass:"fas fa-times-circle"})])])])])}))],2):e._e()]),s("div",{staticClass:"modal",class:{"is-active":e.showPairingModal}},[s("div",{staticClass:"modal-background"}),s("div",{staticClass:"modal-content"},[s("div",{staticClass:"message"},[s("div",{staticClass:"message-header"},[e._v(" Association d'une carte NFC à l'équipe "+e._s(e.team.name)+" ")]),e._m(1)])]),s("button",{staticClass:"modal-close is-large",on:{click:function(t){e.showPairingModal=!1}}})]),s("div",{staticClass:"modal",class:{"is-active":e.showAlreadyPairedError}},[s("div",{staticClass:"modal-background"}),e._m(2),s("button",{staticClass:"modal-close is-large",on:{click:function(t){e.showAlreadyPairedError=!1}}})])])])},$=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("p",{staticClass:"is-size-4"},[s("strong",[e._v("Membres de l'équipe :")])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"message-body"},[e._v(" Veuillez scanner une carte sur le lecteur pour l'associer à cette équipe. "),s("br"),s("br"),e._v(" ATTENTION : Ceci effacera le contenu actuel de cette carte ! Vous ne pourrez pas attribuer à cette équipe une carte déjà attribuée à une autre équipe. Merci donc de dissocier toutes les cartes de votre équipe une fois le jeu fini. "),s("br"),s("br"),e._v(" Vous devez avoir connecté le lecteur USB au site. Déposez la carte d'équipe sur le lecteur NFC (face en plastique). Vous devez entendre deux bip consécutifs. Si cette fenêtre se ferme, c'est bon ! Si cela prend du temps ou qu'il n'y a qu'un seul bip, fermez et recommencez. Si le problème persiste, débranchez le lecteur, rechargez la page puis rebranchez le lecteur. ")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"modal-content"},[s("div",{staticClass:"message is-danger"},[s("div",{staticClass:"message-header"},[e._v(" Carte déjà associée à une autre équipe ! ")]),s("div",{staticClass:"message-body"},[e._v(" Erreur : cette carte est déjà associée à une autre équipe (de votre établissement ou non). Merci de la dissocier de l'équipe originale. ")])])])}],j={name:"TeamElement",props:{team:Object,teamArray:Array},data(){return{showPairingModal:!1,showAlreadyPairedError:!1}},computed:{memberCount:function(){return this.team.members.length}},methods:{removeTeam:function(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/school/deleteTeam/"+this.team._id;this.axios.delete(t,{withCredentials:!0}).then(e=>{console.log("bien supprimé !",e),this.teamArray.splice(this.teamArray.indexOf(this.team),1)})},manageCardPairing:function(){this.showPairingModal=!this.showPairingModal,console.log("Trying to reset card"),this.$parent.$parent.usbNfcReader.cleanCard().then(()=>{this.$parent.$parent.usbNfcReader.formatCard().then(()=>{this.$parent.$parent.usbNfcReader.eraseCard().then(()=>{this.$parent.$parent.usbNfcReader.writeCard("team").then(e=>{console.log("Reset successful, trying to read uid",e),this.$parent.$parent.usbNfcReader.readTagUid().then(e=>{var t="//"+location.hostname+(location.port?":"+location.port:"");let s=t+"/school/updateTeamCard/"+this.team._id;this.axios.post(s,{cardId:e},{withCredentials:!0}).then(()=>{console.log("Carte ajoutée !"),this.team.cardId=e,this.showPairingModal=!1,this.$forceUpdate()}).catch(e=>{this.showPairingModal=!1,this.showAlreadyPairedError=!0,this.team.cardId="",this.$forceUpdate(),console.log("Carte déjà utilisée !",e)})})})})})})},removeCardPairing:function(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/school/removeTeamCard/"+this.team._id;this.axios.post(t,this.team,{withCredentials:!0}).then(e=>{console.log("Carte dissociée !",e),this.team.cardId="",this.$forceUpdate()})}},created:function(){this.team.cardId||(this.team.cardId=""),null==this.team.cardId&&(this.team.cardId="")}},U=j,L=Object(m["a"])(U,A,$,!1,null,"112ebed9",null),O=L.exports,M=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"message is-primary"},[s("div",{staticClass:"message-header"},[e._v("Créer une nouvelle équipe")]),s("div",{staticClass:"message-body"},[s("form",{on:{submit:function(t){return t.preventDefault(),e.addTeam(t)}}},[s("div",{staticClass:"field"},[s("label",{staticClass:"label"},[e._v("Nom de l'équipe")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.team.name,expression:"team.name"}],staticClass:"input",attrs:{type:"text"},domProps:{value:e.team.name},on:{input:function(t){t.target.composing||e.$set(e.team,"name",t.target.value)}}})]),s("br"),s("div",{staticClass:"field"},[s("label",{staticClass:"label"},[e._v("Membres de l'équipe")]),e._l(e.count,(function(t,a){return s("div",{key:t._id},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.team.members[a],expression:"team.members[index]"}],staticClass:"input",attrs:{type:"text"},domProps:{value:e.team.members[a]},on:{input:function(t){t.target.composing||e.$set(e.team.members,a,t.target.value)}}})])})),s("button",{staticClass:"button is-primary is-outlined",attrs:{type:"button"},on:{click:e.addMemberField}},[e._v(" + ")]),s("button",{staticClass:"button is-primary is-outlined",attrs:{type:"button"},on:{click:e.removeMemberField}},[e._v(" - ")])],2),s("br"),e._m(0)])])])},G=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("button",{staticClass:"button is-primary",attrs:{type:"submit"}},[e._v(" Ajouter l'équipe ")])])}],F={name:"TeamAdder",props:{teamArray:Array},data(){return{team:{name:"",members:[],cardId:""},count:1}},methods:{addTeam(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/school/addTeam";this.axios.post(t,this.team,{withCredentials:!0}).then(e=>{console.log("Team créée !",e),this.teamArray.push(this.team),this.$emit("addedTeam",this.teamArray),this.team={name:"",members:[]}})},addMemberField(){this.count++},removeMemberField(){this.count>0&&(this.team.members.pop(),this.count--)}}},V=F,B=Object(m["a"])(V,M,G,!1,null,null,null),J=B.exports,W={name:"SchoolManager",components:{TeamElement:O,TeamAdder:J},data(){return{teams:[]}},created(){},mounted(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/school";this.axios.get(t,{withCredentials:!0}).then(e=>{this.teams=e.data,this.sortTeams(),console.log(e)})},methods:{updateTeams(e){this.teams=e,this.sortTeams()},getGlobalScore(e){var t=0;return e.donePuzzles?(e.donePuzzles.forEach(e=>{e.score?t+=parseInt(e.coef)*parseInt(e.score):e.validated&&(t+=parseInt(e.coef))}),t):0},sortTeams(){this.teams.sort((e,t)=>this.getGlobalScore(t)-this.getGlobalScore(e))}}},H=W,K=Object(m["a"])(H,z,R,!1,null,null,null),Q=K.exports,X=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},Y=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("h2",[e._v("Définitions")]),s("p",[s("b",[e._v("Client :")]),e._v(" tout professionnel ou personne physique capable au sens des articles 1123 et suivants du Code civil, ou personne morale, qui visite le Site objet des présentes conditions générales."),s("br"),s("b",[e._v("Prestations et Services :")]),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" met à disposition des Clients : ")]),s("p",[s("b",[e._v("Contenu :")]),e._v(" Ensemble des éléments constituants l’information présente sur le Site, notamment textes – images – vidéos. ")]),s("p",[s("b",[e._v("Informations clients :")]),e._v(" Ci après dénommé « Information (s) » qui correspondent à l’ensemble des données personnelles susceptibles d’être détenues par "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" pour la gestion de votre compte, de la gestion de la relation client et à des fins d’analyses et de statistiques. ")]),s("p",[s("b",[e._v("Utilisateur :")]),e._v(" Internaute se connectant, utilisant le site susnommé. ")]),s("p",[s("b",[e._v("Informations personnelles :")]),e._v(" « Les informations qui permettent, sous quelque forme que ce soit, directement ou non, l'identification des personnes physiques auxquelles elles s'appliquent » (article 4 de la loi n° 78-17 du 6 janvier 1978). ")]),s("p",[e._v(" Les termes « données à caractère personnel », « personne concernée », « sous traitant » et « données sensibles » ont le sens défini par le Règlement Général sur la Protection des Données (RGPD : n° 2016-679) ")]),s("h2",[e._v("1. Présentation du site internet.")]),s("p",[e._v(" En vertu de l'article 6 de la loi n° 2004-575 du 21 juin 2004 pour la confiance dans l'économie numérique, il est précisé aux utilisateurs du site internet "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" l'identité des différents intervenants dans le cadre de sa réalisation et de son suivi: ")]),s("p",[s("strong",[e._v("Propriétaire")]),e._v(" : Association loi 1901 Clubelek (Association loi 1901) – INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne"),s("br"),s("strong",[e._v("Responsable publication")]),e._v(" : Clubelek – clubelek@insa-lyon.fr"),s("br"),e._v(" Le responsable publication est une personne physique ou une personne morale."),s("br"),s("strong",[e._v("Webmaster")]),e._v(" : Antoine Rochebois – antoine.rochebois@insa-lyon.fr"),s("br"),s("strong",[e._v("Hébergeur")]),e._v(" : ovh – 2 rue Kellermann 59100 Roubaix 1007"),s("br"),s("strong",[e._v("Délégué à la protection des données")]),e._v(" : Antoine Rochebois – antoine.rochebois@insa-lyon.fr"),s("br")]),s("div",{attrs:{"ng-bind-html":"linkHTML"}},[s("p",[e._v(" Ce modèle de mentions légales est proposé par le "),s("a",{attrs:{href:"https://fr.orson.io/1371/generateur-mentions-legales",title:"générateur gratuit offert par Orson.io"}},[e._v("générateur gratuit offert par Orson.io")])])]),s("h2",[e._v(" 2. Conditions générales d’utilisation du site et des services proposés. ")]),s("p",[e._v(" Le Site constitue une œuvre de l’esprit protégée par les dispositions du Code de la Propriété Intellectuelle et des Réglementations Internationales applicables. Le Client ne peut en aucune manière réutiliser, céder ou exploiter pour son propre compte tout ou partie des éléments ou travaux du Site. ")]),s("p",[e._v(" L’utilisation du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" implique l’acceptation pleine et entière des conditions générales d’utilisation ci-après décrites. Ces conditions d’utilisation sont susceptibles d’être modifiées ou complétées à tout moment, les utilisateurs du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" sont donc invités à les consulter de manière régulière. ")]),s("p",[e._v(" Ce site internet est normalement accessible à tout moment aux utilisateurs. Une interruption pour raison de maintenance technique peut être toutefois décidée par "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", qui s’efforcera alors de communiquer préalablement aux utilisateurs les dates et heures de l’intervention. Le site web "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est mis à jour régulièrement par "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" responsable. De la même façon, les mentions légales peuvent être modifiées à tout moment : elles s’imposent néanmoins à l’utilisateur qui est invité à s’y référer le plus souvent possible afin d’en prendre connaissance. ")]),s("h2",[e._v("3. Description des services fournis.")]),s("p",[e._v(" Le site internet "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" a pour objet de fournir une information concernant l’ensemble des activités de la société. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’efforce de fournir sur le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" des informations aussi précises que possible. Toutefois, il ne pourra être tenu responsable des oublis, des inexactitudes et des carences dans la mise à jour, qu’elles soient de son fait ou du fait des tiers partenaires qui lui fournissent ces informations. ")]),s("p",[e._v(" Toutes les informations indiquées sur le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" sont données à titre indicatif, et sont susceptibles d’évoluer. Par ailleurs, les renseignements figurant sur le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne sont pas exhaustifs. Ils sont donnés sous réserve de modifications ayant été apportées depuis leur mise en ligne. ")]),s("h2",[e._v("4. Limitations contractuelles sur les données techniques.")]),s("p",[e._v(" Le site utilise la technologie JavaScript. Le site Internet ne pourra être tenu responsable de dommages matériels liés à l’utilisation du site. De plus, l’utilisateur du site s’engage à accéder au site en utilisant un matériel récent, ne contenant pas de virus et avec un navigateur de dernière génération mis-à-jour Le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est hébergé chez un prestataire sur le territoire de l’Union Européenne conformément aux dispositions du Règlement Général sur la Protection des Données (RGPD : n° 2016-679) ")]),s("p",[e._v(" L’objectif est d’apporter une prestation qui assure le meilleur taux d’accessibilité. L’hébergeur assure la continuité de son service 24 Heures sur 24, tous les jours de l’année. Il se réserve néanmoins la possibilité d’interrompre le service d’hébergement pour les durées les plus courtes possibles notamment à des fins de maintenance, d’amélioration de ses infrastructures, de défaillance de ses infrastructures ou si les Prestations et Services génèrent un trafic réputé anormal. ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" et l’hébergeur ne pourront être tenus responsables en cas de dysfonctionnement du réseau Internet, des lignes téléphoniques ou du matériel informatique et de téléphonie lié notamment à l’encombrement du réseau empêchant l’accès au serveur. ")]),s("h2",[e._v("5. Propriété intellectuelle et contrefaçons.")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est propriétaire des droits de propriété intellectuelle et détient les droits d’usage sur tous les éléments accessibles sur le site internet, notamment les textes, images, graphismes, logos, vidéos, icônes et sons. Toute reproduction, représentation, modification, publication, adaptation de tout ou partie des éléments du site, quel que soit le moyen ou le procédé utilisé, est interdite, sauf autorisation écrite préalable de : "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". ")]),s("p",[e._v(" Toute exploitation non autorisée du site ou de l’un quelconque des éléments qu’il contient sera considérée comme constitutive d’une contrefaçon et poursuivie conformément aux dispositions des articles L.335-2 et suivants du Code de Propriété Intellectuelle. ")]),s("h2",[e._v("6. Limitations de responsabilité.")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" agit en tant qu’éditeur du site. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est responsable de la qualité et de la véracité du Contenu qu’il publie. ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne pourra être tenu responsable des dommages directs et indirects causés au matériel de l’utilisateur, lors de l’accès au site internet "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", et résultant soit de l’utilisation d’un matériel ne répondant pas aux spécifications indiquées au point 4, soit de l’apparition d’un bug ou d’une incompatibilité. ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne pourra également être tenu responsable des dommages indirects (tels par exemple qu’une perte de marché ou perte d’une chance) consécutifs à l’utilisation du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". Des espaces interactifs (possibilité de poser des questions dans l’espace contact) sont à la disposition des utilisateurs. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" se réserve le droit de supprimer, sans mise en demeure préalable, tout contenu déposé dans cet espace qui contreviendrait à la législation applicable en France, en particulier aux dispositions relatives à la protection des données. Le cas échéant, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" se réserve également la possibilité de mettre en cause la responsabilité civile et/ou pénale de l’utilisateur, notamment en cas de message à caractère raciste, injurieux, diffamant, ou pornographique, quel que soit le support utilisé (texte, photographie …). ")]),s("h2",[e._v("7. Gestion des données personnelles.")]),s("p",[e._v(" Le Client est informé des réglementations concernant la communication marketing, la loi du 21 Juin 2014 pour la confiance dans l’Economie Numérique, la Loi Informatique et Liberté du 06 Août 2004 ainsi que du Règlement Général sur la Protection des Données (RGPD : n° 2016-679). ")]),s("h3",[e._v("7.1 Responsables de la collecte des données personnelles")]),s("p",[e._v(" Pour les Données Personnelles collectées dans le cadre de la création du compte personnel de l’Utilisateur et de sa navigation sur le Site, le responsable du traitement des Données Personnelles est : Clubelek (Association loi 1901). "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v("est représenté par Thomas Vadebout, son représentant légal ")]),s("p",[e._v(" En tant que responsable du traitement des données qu’il collecte, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’engage à respecter le cadre des dispositions légales en vigueur. Il lui appartient notamment au Client d’établir les finalités de ses traitements de données, de fournir à ses prospects et clients, à partir de la collecte de leurs consentements, une information complète sur le traitement de leurs données personnelles et de maintenir un registre des traitements conforme à la réalité. Chaque fois que "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" traite des Données Personnelles, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" prend toutes les mesures raisonnables pour s’assurer de l’exactitude et de la pertinence des Données Personnelles au regard des finalités pour lesquelles "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" les traite. ")]),s("h3",[e._v("7.2 Finalité des données collectées")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est susceptible de traiter tout ou partie des données : ")]),s("ul",[s("li",[e._v(" pour permettre la navigation sur le Site et la gestion et la traçabilité des prestations et services commandés par l’utilisateur : données de connexion et d’utilisation du Site, facturation, historique des commandes, etc. ")]),s("li",[e._v(" pour prévenir et lutter contre la fraude informatique (spamming, hacking…) : matériel informatique utilisé pour la navigation, l’adresse IP, le mot de passe (hashé) ")]),s("li",[e._v(" pour améliorer la navigation sur le Site : données de connexion et d’utilisation ")]),s("li",[e._v(" pour mener des enquêtes de satisfaction facultatives sur "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" : adresse email ")]),s("li",[e._v(" pour mener des campagnes de communication (sms, mail) : numéro de téléphone, adresse email ")])]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne commercialise pas vos données personnelles qui sont donc uniquement utilisées par nécessité ou à des fins statistiques et d’analyses. ")]),s("h3",[e._v("7.3 Droit d’accès, de rectification et d’opposition")]),s("p",[e._v(" Conformément à la réglementation européenne en vigueur, les Utilisateurs de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" disposent des droits suivants : ")]),s("ul",[s("li",[e._v(" droit d'accès (article 15 RGPD) et de rectification (article 16 RGPD), de mise à jour, de complétude des données des Utilisateurs droit de verrouillage ou d’effacement des données des Utilisateurs à caractère personnel (article 17 du RGPD), lorsqu’elles sont inexactes, incomplètes, équivoques, périmées, ou dont la collecte, l'utilisation, la communication ou la conservation est interdite ")]),s("li",[e._v(" droit de retirer à tout moment un consentement (article 13-2c RGPD) ")]),s("li",[e._v(" droit à la limitation du traitement des données des Utilisateurs (article 18 RGPD) ")]),s("li",[e._v(" droit d’opposition au traitement des données des Utilisateurs (article 21 RGPD) ")]),s("li",[e._v(" droit à la portabilité des données que les Utilisateurs auront fournies, lorsque ces données font l’objet de traitements automatisés fondés sur leur consentement ou sur un contrat (article 20 RGPD) ")]),s("li",[e._v(" droit de définir le sort des données des Utilisateurs après leur mort et de choisir à qui "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" devra communiquer (ou non) ses données à un tiers qu’ils aura préalablement désigné ")])]),s("p",[e._v(" Dès que "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" a connaissance du décès d’un Utilisateur et à défaut d’instructions de sa part, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’engage à détruire ses données, sauf si leur conservation s’avère nécessaire à des fins probatoires ou pour répondre à une obligation légale. ")]),s("p",[e._v(" Si l’Utilisateur souhaite savoir comment "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" utilise ses Données Personnelles, demander à les rectifier ou s’oppose à leur traitement, l’Utilisateur peut contacter "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" par écrit à l’adresse suivante : ")]),e._v(" Clubelek (Association loi 1901) – DPO, Antoine Rochebois "),s("br"),e._v(" INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne. "),s("p",[e._v(" Dans ce cas, l’Utilisateur doit indiquer les Données Personnelles qu’il souhaiterait que "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" corrige, mette à jour ou supprime, en s’identifiant précisément avec une copie d’une pièce d’identité (carte d’identité ou passeport). ")]),s("p",[e._v(" Les demandes de suppression de Données Personnelles seront soumises aux obligations qui sont imposées à "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" par la loi, notamment en matière de conservation ou d’archivage des documents. Enfin, les Utilisateurs de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" peuvent déposer une réclamation auprès des autorités de contrôle, et notamment de la CNIL (https://www.cnil.fr/fr/plaintes). ")]),s("h3",[e._v("7.4 Non-communication des données personnelles")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’interdit de traiter, héberger ou transférer les Informations collectées sur ses Clients vers un pays situé en dehors de l’Union européenne ou reconnu comme « non adéquat » par la Commission européenne sans en informer préalablement le client. Pour autant, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" reste libre du choix de ses sous-traitants techniques et commerciaux à la condition qu’il présentent les garanties suffisantes au regard des exigences du Règlement Général sur la Protection des Données (RGPD : n° 2016-679). ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’engage à prendre toutes les précautions nécessaires afin de préserver la sécurité des Informations et notamment qu’elles ne soient pas communiquées à des personnes non autorisées. Cependant, si un incident impactant l’intégrité ou la confidentialité des Informations du Client est portée à la connaissance de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", celle-ci devra dans les meilleurs délais informer le Client et lui communiquer les mesures de corrections prises. Par ailleurs "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne collecte aucune « données sensibles ». ")]),s("p",[e._v(" Les Données Personnelles de l’Utilisateur peuvent être traitées par des filiales de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" et des sous-traitants (prestataires de services), exclusivement afin de réaliser les finalités de la présente politique. ")]),s("p",[e._v(" Dans la limite de leurs attributions respectives et pour les finalités rappelées ci-dessus, les principales personnes susceptibles d’avoir accès aux données des Utilisateurs de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" sont principalement les agents de notre service client. ")]),s("div",{attrs:{"ng-bind-html":"rgpdHTML"}}),s("h2",[e._v("8. Notification d’incident")]),s("p",[e._v(" Quels que soient les efforts fournis, aucune méthode de transmission sur Internet et aucune méthode de stockage électronique n'est complètement sûre. Nous ne pouvons en conséquence pas garantir une sécurité absolue. Si nous prenions connaissance d'une brèche de la sécurité, nous avertirions les utilisateurs concernés afin qu'ils puissent prendre les mesures appropriées. Nos procédures de notification d’incident tiennent compte de nos obligations légales, qu'elles se situent au niveau national ou européen. Nous nous engageons à informer pleinement nos clients de toutes les questions relevant de la sécurité de leur compte et à leur fournir toutes les informations nécessaires pour les aider à respecter leurs propres obligations réglementaires en matière de reporting. ")]),s("p",[e._v(" Aucune information personnelle de l'utilisateur du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" n'est publiée à l'insu de l'utilisateur, échangée, transférée, cédée ou vendue sur un support quelconque à des tiers. Seule l'hypothèse du rachat de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" et de ses droits permettrait la transmission des dites informations à l'éventuel acquéreur qui serait à son tour tenu de la même obligation de conservation et de modification des données vis à vis de l'utilisateur du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". ")]),s("h3",[e._v("Sécurité")]),s("p",[e._v(" Pour assurer la sécurité et la confidentialité des Données Personnelles et des Données Personnelles de Santé, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" utilise des réseaux protégés par des dispositifs standards tels que par pare-feu, la pseudonymisation, l’encryption et mot de passe. ")]),s("p",[e._v(" Lors du traitement des Données Personnelles, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v("prend toutes les mesures raisonnables visant à les protéger contre toute perte, utilisation détournée, accès non autorisé, divulgation, altération ou destruction. ")]),s("h2",[e._v("9. Liens hypertextes « cookies » et balises (“tags”) internet")]),s("p",[e._v(" Le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" contient un certain nombre de liens hypertextes vers d’autres sites, mis en place avec l’autorisation de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". Cependant, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" n’a pas la possibilité de vérifier le contenu des sites ainsi visités, et n’assumera en conséquence aucune responsabilité de ce fait. ")]),e._v(" Sauf si vous décidez de désactiver les cookies, vous acceptez que le site puisse les utiliser. Vous pouvez à tout moment désactiver ces cookies et ce gratuitement à partir des possibilités de désactivation qui vous sont offertes et rappelées ci-après, sachant que cela peut réduire ou empêcher l’accessibilité à tout ou partie des Services proposés par le site. "),s("p"),s("h3",[e._v("9.1. « COOKIES »")]),s("p",[e._v(" Un « cookie » est un petit fichier d’information envoyé sur le navigateur de l’Utilisateur et enregistré au sein du terminal de l’Utilisateur (ex : ordinateur, smartphone), (ci-après « Cookies »). Ce fichier comprend des informations telles que le nom de domaine de l’Utilisateur, le fournisseur d’accès Internet de l’Utilisateur, le système d’exploitation de l’Utilisateur, ainsi que la date et l’heure d’accès. Les Cookies ne risquent en aucun cas d’endommager le terminal de l’Utilisateur. ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est susceptible de traiter les informations de l’Utilisateur concernant sa visite du Site, telles que les pages consultées, les recherches effectuées. Ces informations permettent à "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" d’améliorer le contenu du Site, de la navigation de l’Utilisateur. ")]),s("p",[e._v(" Les Cookies facilitant la navigation et/ou la fourniture des services proposés par le Site, l’Utilisateur peut configurer son navigateur pour qu’il lui permette de décider s’il souhaite ou non les accepter de manière à ce que des Cookies soient enregistrés dans le terminal ou, au contraire, qu’ils soient rejetés, soit systématiquement, soit selon leur émetteur. L’Utilisateur peut également configurer son logiciel de navigation de manière à ce que l’acceptation ou le refus des Cookies lui soient proposés ponctuellement, avant qu’un Cookie soit susceptible d’être enregistré dans son terminal. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" informe l’Utilisateur que, dans ce cas, il se peut que les fonctionnalités de son logiciel de navigation ne soient pas toutes disponibles. ")]),s("p",[e._v(" Si l’Utilisateur refuse l’enregistrement de Cookies dans son terminal ou son navigateur, ou si l’Utilisateur supprime ceux qui y sont enregistrés, l’Utilisateur est informé que sa navigation et son expérience sur le Site peuvent être limitées. Cela pourrait également être le cas lorsque "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ou l’un de ses prestataires ne peut pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par le terminal, les paramètres de langue et d’affichage ou le pays depuis lequel le terminal semble connecté à Internet. ")]),s("p",[e._v(" Le cas échéant, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" décline toute responsabilité pour les conséquences liées au fonctionnement dégradé du Site et des services éventuellement proposés par "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", résultant (i) du refus de Cookies par l’Utilisateur (ii) de l’impossibilité pour "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" d’enregistrer ou de consulter les Cookies nécessaires à leur fonctionnement du fait du choix de l’Utilisateur. Pour la gestion des Cookies et des choix de l’Utilisateur, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d’aide du navigateur, qui permettra de savoir de quelle manière l’Utilisateur peut modifier ses souhaits en matière de Cookies. ")]),s("p",[e._v(" À tout moment, l’Utilisateur peut faire le choix d’exprimer et de modifier ses souhaits en matière de Cookies. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" pourra en outre faire appel aux services de prestataires externes pour l’aider à recueillir et traiter les informations décrites dans cette section. ")]),s("p",[e._v(" Enfin, en cliquant sur les icônes dédiées aux réseaux sociaux Twitter, Facebook, Linkedin et Google Plus figurant sur le Site de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ou dans son application mobile et si l’Utilisateur a accepté le dépôt de cookies en poursuivant sa navigation sur le Site Internet ou l’application mobile de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", Twitter, Facebook, Linkedin et Google Plus peuvent également déposer des cookies sur vos terminaux (ordinateur, tablette, téléphone portable). ")]),s("p",[e._v(" Ces types de cookies ne sont déposés sur vos terminaux qu’à condition que vous y consentiez, en continuant votre navigation sur le Site Internet ou l’application mobile de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". À tout moment, l’Utilisateur peut néanmoins revenir sur son consentement à ce que "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" dépose ce type de cookies. ")]),s("h3",[e._v("Article 9.2. BALISES (“TAGS”) INTERNET")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" peut employer occasionnellement des balises Internet (également appelées « tags », ou balises d’action, GIF à un pixel, GIF transparents, GIF invisibles et GIF un à un) et les déployer par l’intermédiaire d’un partenaire spécialiste d’analyses Web susceptible de se trouver (et donc de stocker les informations correspondantes, y compris l’adresse IP de l’Utilisateur) dans un pays étranger. ")]),s("p",[e._v(" Ces balises sont placées à la fois dans les publicités en ligne permettant aux internautes d’accéder au Site, et sur les différentes pages de celui-ci. ")]),s("p",[e._v(" Cette technologie permet à "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" d’évaluer les réponses des visiteurs face au Site et l’efficacité de ses actions (par exemple, le nombre de fois où une page est ouverte et les informations consultées), ainsi que l’utilisation de ce Site par l’Utilisateur. ")]),s("p",[e._v(" Le prestataire externe pourra éventuellement recueillir des informations sur les visiteurs du Site et d’autres sites Internet grâce à ces balises, constituer des rapports sur l’activité du Site à l’attention de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", et fournir d’autres services relatifs à l’utilisation de celui-ci et d’Internet. ")]),s("p"),s("h2",[e._v("10. Droit applicable et attribution de juridiction.")]),s("p",[e._v(" Tout litige en relation avec l’utilisation du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est soumis au droit français. En dehors des cas où la loi ne le permet pas, il est fait attribution exclusive de juridiction aux tribunaux compétents de Lyon ")])])}],Z={name:"MentionsLegales"},ee=Z,te=Object(m["a"])(ee,X,Y,!1,null,"a990db8a",null),se=te.exports,ae=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("form",{on:{submit:function(t){return t.preventDefault(),e.login(t)}}},[s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],staticClass:"input is-primary",attrs:{type:"text",placeholder:"Identifiant"},domProps:{value:e.username},on:{input:function(t){t.target.composing||(e.username=t.target.value)}}}),e._m(0)])]),s("br"),s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],staticClass:"input is-primary",attrs:{type:"password",placeholder:"Mot de passe"},domProps:{value:e.password},on:{input:function(t){t.target.composing||(e.password=t.target.value)}}}),e._m(1)])]),s("br"),e._m(2)])])},ie=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-user"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-lock"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("button",{staticClass:"button is-primary",attrs:{type:"submit"}},[e._v("Se connecter")])])}],ne={name:"Login",data(){return{username:"",password:""}},methods:{login(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/login";this.axios.post(t,{username:this.username,password:this.password},{withCredentials:!0}).then(e=>{console.log(e),this.$store.commit("login",e.data),this.$router.push("/school")})}}},re=ne,oe=Object(m["a"])(re,ae,ie,!1,null,null,null),le=oe.exports,ce=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("form",{on:{submit:function(t){return t.preventDefault(),e.register(t)}}},[s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],staticClass:"input is-primary",attrs:{type:"text",placeholder:"Identifiant"},domProps:{value:e.username},on:{input:function(t){t.target.composing||(e.username=t.target.value)}}}),e._m(0)])]),s("br"),s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.schoolName,expression:"schoolName"}],staticClass:"input is-primary",attrs:{type:"text",placeholder:"Nom de l'établissement"},domProps:{value:e.schoolName},on:{input:function(t){t.target.composing||(e.schoolName=t.target.value)}}}),e._m(1)])]),s("br"),s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],staticClass:"input is-primary",attrs:{type:"password",placeholder:"Mot de passe"},domProps:{value:e.password},on:{input:function(t){t.target.composing||(e.password=t.target.value)}}}),e._m(2)])]),s("br"),e._m(3)])])},ue=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-user"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-school"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-lock"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("button",{staticClass:"button is-primary",attrs:{type:"submit"}},[e._v("S'inscire")])])}],de={name:"Login",data(){return{username:"",schoolName:"",password:""}},methods:{register(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/register";this.axios.post(t,{username:this.username,schoolName:this.schoolName,password:this.password},{withCredentials:!0}).then(e=>{console.log(e),this.$router.push("/login")})}}},pe=de,me=Object(m["a"])(pe,ce,ue,!1,null,null,null),ve=me.exports,he=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"section"},[s("div",{staticClass:"message is-warning"},[e._m(0),s("div",{staticClass:"message-body"},[s("p",[e._v("Entrez un objet JSON valide dans le champs ci-dessous pour l'écrire sur le tag NFC présenté au lecteur. Attention à ne pas dépasser la longueur mémoire maximale de votre tag !")]),s("div",{ref:"editor",staticClass:"language-js"}),s("div",[s("p",[e._v("Longueur : "+e._s(e.jsonText.length))]),s("p",{class:e.isJsonTextValid?"has-text-success":"has-text-danger"},[s("strong",[e._v("JSON généré : ")]),e._v(e._s(e.jsonText))])]),s("button",{staticClass:"button is-warning",attrs:{disabled:!e.isJsonTextValid}},[e._m(1)])])])])},fe=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"message-header"},[s("p",[e._v("Encodeur de TAG/cartes NFC (outil de développement)")])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[s("i",{staticClass:"fas fa-upload"}),e._v(" Ecrire sur la carte/le tag")])}],ge=s("0377"),be=s("b7be"),_e=s("c197"),Ce=s.n(_e),ke=(s("a878"),{name:"Encoder",components:{},data(){return{jsonText:""}},computed:{isJsonTextValid:function(){try{return JSON.parse(this.jsonText),!0}catch(e){return!1}}},mounted(){const e='{\n \t "type" : "<objet ? carte ?>", \n \t "puzzle" : "<nom d\'énigme>", \n \t custom params...\n}';this.jsonText=e;const t=this.$refs.editor,s=Object(ge["a"])(t,Object(be["a"])(Ce.a.highlightElement));s.onUpdate(e=>{try{var t=JSON.parse(e);this.jsonText=JSON.stringify(t,null,0)}catch(s){this.jsonText=e}}),s.updateCode(e)}}),xe=ke,qe=Object(m["a"])(xe,he,fe,!1,null,"7c9e39cd",null),ye=qe.exports,Pe=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[e.globalScore>=0?s("div",{staticClass:"has-text-centered"},[s("p",{staticClass:"is-size-4 m-0"},[e._v("Score total :")]),s("p",{staticClass:"is-size-1 m-0",staticStyle:{color:"green"}},[e._v("🔥 "+e._s(e.globalScore)+" 🔥")]),s("p",{staticClass:"is-size-3 mb-6"},[e._v("🥳 Félicitations ! 🥳")])]):e._e(),this.team.name.length>0?s("article",{staticClass:"message is-success"},[s("div",{staticClass:"message-header"},[e._v(" 🏁 Résultats de l'équipe \""+e._s(e.team.name)+'" ('+e._s(e.memberCount)+" membres) 🏁 ")]),s("div",{staticClass:"message-body"},[s("div",[e._m(0),s("ul",e._l(e.team.members,(function(t){return s("li",{key:t},[e._v(e._s(t))])})),0)]),s("div",[e.team.donePuzzles.length>0?s("p",{staticClass:"is-size-4"},[s("strong",[e._v("Puzzles effectués :")])]):e._e(),e._l(e.team.donePuzzles,(function(t){return s("div",{key:t.name},[t.score?s("div",{staticClass:"level"},[s("div",{staticClass:"level-item level-left"},[s("p",[s("strong",[e._v(e._s(t.name))]),e._v(" ("+e._s(t.room)+") : ")])]),s("div",{staticClass:"level-item level-right"},[s("progress",{staticClass:"progress is-small",attrs:{max:t.maxScore},domProps:{value:t.score}})]),s("div",{staticClass:"level-item level-right"},[s("p",[e._v(e._s(t.score)+"/"+e._s(t.maxScore))])])]):s("div",{staticClass:"level "},[s("div",{staticClass:"level-item level-left"},[s("p",[s("strong",[e._v(e._s(t.name))]),e._v(" ("+e._s(t.room)+") : ")])]),s("div",{staticClass:"level-item level-right"},[t.validated?s("span",{staticClass:"icon has-text-success"},[s("i",{staticClass:"fas fa-check-circle"})]):s("span",{staticClass:"icon has-text-danger"},[s("i",{staticClass:"fas fa-times-circle"})])])])])}))],2)])]):e._e(),s("article",{staticClass:"container has-text-centered"},[s("p",{staticClass:"is-size-4"},[e._v("🏁 Merci de scanner une carte d'équipe pour afficher et enregistrer des résultats 🏁")]),s("button",{staticClass:"button is-primary is-large is-fullwidth",on:{click:function(t){return e.manageCardReading()}}},[s("i",{staticClass:"fas fa-download"}),e._v(" Scanner la carte de l'équipe !")])]),s("div",{staticClass:"modal",class:{"is-active":e.showPairingModal}},[s("div",{staticClass:"modal-background"}),e._m(1),s("button",{staticClass:"modal-close is-large",on:{click:function(t){e.showPairingModal=!1}}})])])},Ee=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("p",{staticClass:"is-size-4"},[s("strong",[e._v("Membres de l'équipe :")])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"modal-content"},[s("div",{staticClass:"message"},[s("div",{staticClass:"message-header"},[e._v(" Lecture d'une carte NFC d'équipe ")]),s("div",{staticClass:"message-body"},[e._v(" Veuillez scanner une carte sur le lecteur pour charger ses résultats équipe. ")])])])}],Ie=s("671d"),we={name:"ResultDisplay",data(){return{showPairingModal:!1,puzzles:Ie,team:{name:"",members:[],donePuzzles:[]},globalScore:-1}},computed:{memberCount:function(){return this.team.members.length}},methods:{manageCardReading(){this.showPairingModal=!0,this.$parent.usbNfcReader.readCard().then(e=>{this.$parent.usbNfcReader.readTagUid().then(t=>{this.team={name:"",members:[],donePuzzles:[]};let s=e.split(";");if(s.shift(),s.pop(),0==s.length)return void console.log("Carte vierge de toute épreuve !");s.forEach(e=>{let t=e.split("_")[0],s=e.split("_")[1],a=this.puzzles[t];var i={name:a.name,room:a.room,coef:a.coef};"boolean"==a.type?i.validated=s>=1:"number"==a.type&&(i.maxScore=a.maxScore,i.score=s),this.team.donePuzzles.push(i)}),console.log(this.team.donePuzzles);var a="//"+location.hostname+(location.port?":"+location.port:"");let i=a+"/school/updateTeamPuzzles/"+t,n=a+"/school/getTeamByCardID/"+t;this.axios.post(i,this.team.donePuzzles,{withCredentials:!0}).then(()=>{console.log("Score ajouté à la BD !"),this.axios.get(n,{withCredentials:!0}).then(e=>{this.team=e.data[0],this.globalScore=0,this.team.donePuzzles.forEach(e=>{e.score?this.globalScore+=parseInt(e.coef)*parseInt(e.score):e.validated&&(this.globalScore+=parseInt(e.coef))}),this.showPairingModal=!1})})})})}}},Se=we,Ne=Object(m["a"])(Se,Pe,Ee,!1,null,"9924b722",null),Te=Ne.exports;s("15f5"),s("7051");s("b383"),a["a"].use(r["a"]),a["a"].use(i["a"]),a["a"].use(y.a,E.a),a["a"].config.productionTip=!1;const De=[{name:"home",path:"/",component:D},{name:"resultsDisplay",path:"/results",component:Te},{name:"encoder",path:"/encoder",component:ye},{name:"schoolManager",path:"/school",component:Q},{name:"mentionsLegales",path:"/legal",component:se},{name:"register",path:"/register",component:ve},{name:"login",path:"/login",component:le}],ze=new i["a"].Store({state:{isLoggedIn:!1,schoolName:"school-name"},mutations:{login(e,t){e.isLoggedIn=!0,e.schoolName=t.schoolName},logout(e){e.isLoggedIn=!1,e.schoolName="school-name"}},plugins:[Object(n["a"])()]}),Re=new r["a"]({base:"",mode:"history",routes:De});new a["a"](a["a"].util.extend({router:Re,store:ze},x)).$mount("#app")},"671d":function(e){e.exports=JSON.parse('{"C":{"name":"Faire une recette de saison","room":"Cuisine","type":"number","maxScore":100,"coef":5},"A":{"name":"Manger des pommes","room":"Cuisine","type":"boolean","coef":20}}')},b383:function(e,t,s){},bad2:function(e,t,s){},d2cc:function(e,t,s){"use strict";s("06fc")}});
+//# sourceMappingURL=app.69a3e149.js.map
\ No newline at end of file
diff --git a/server/dist/js/app.69a3e149.js.map b/server/dist/js/app.69a3e149.js.map
new file mode 100644
index 0000000..e350a75
--- /dev/null
+++ b/server/dist/js/app.69a3e149.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/img/clubelek.png","webpack:///./src/assets/img/insa.png","webpack:///./src/components/PageFooter.vue?ba31","webpack:///./src/assets/img/objectif21.png","webpack:///./src/App.vue?f6af","webpack:///./src/components/PageFooter.vue?5465","webpack:///src/components/PageFooter.vue","webpack:///./src/components/PageFooter.vue?2881","webpack:///./src/components/PageFooter.vue?eabb","webpack:///./src/serial.js","webpack:///./src/usbNfcReader.js","webpack:///src/App.vue","webpack:///./src/App.vue?b65f","webpack:///./src/App.vue?a286","webpack:///./src/components/HomeComponent.vue?faec","webpack:///src/components/HomeComponent.vue","webpack:///./src/components/HomeComponent.vue?76c1","webpack:///./src/components/HomeComponent.vue","webpack:///./src/components/SchoolManager.vue?a1d7","webpack:///./src/components/TeamElement.vue?3e1d","webpack:///src/components/TeamElement.vue","webpack:///./src/components/TeamElement.vue?46a3","webpack:///./src/components/TeamElement.vue","webpack:///./src/components/TeamAdder.vue?bfbb","webpack:///src/components/TeamAdder.vue","webpack:///./src/components/TeamAdder.vue?2514","webpack:///./src/components/TeamAdder.vue","webpack:///src/components/SchoolManager.vue","webpack:///./src/components/SchoolManager.vue?0c55","webpack:///./src/components/SchoolManager.vue","webpack:///./src/components/MentionsLegales.vue?605a","webpack:///src/components/MentionsLegales.vue","webpack:///./src/components/MentionsLegales.vue?d10d","webpack:///./src/components/MentionsLegales.vue","webpack:///./src/components/Login.vue?b986","webpack:///src/components/Login.vue","webpack:///./src/components/Login.vue?bbcf","webpack:///./src/components/Login.vue","webpack:///./src/components/Register.vue?224f","webpack:///src/components/Register.vue","webpack:///./src/components/Register.vue?e944","webpack:///./src/components/Register.vue","webpack:///./src/components/Encoder.vue?777e","webpack:///src/components/Encoder.vue","webpack:///./src/components/Encoder.vue?d4a2","webpack:///./src/components/Encoder.vue","webpack:///./src/components/ResultsDisplay.vue?204b","webpack:///src/components/ResultsDisplay.vue","webpack:///./src/components/ResultsDisplay.vue?0550","webpack:///./src/components/ResultsDisplay.vue","webpack:///./src/main.js","webpack:///./src/App.vue?7deb"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","class","showNav","on","$event","$store","state","_s","schoolName","_e","usbConnected","disconnectUsb","_m","connectUsb","isLoggedIn","logout","staticRenderFns","component","serial","getPorts","navigator","usb","getDevices","then","devices","map","device","Port","requestPort","filters","requestDevice","device_","interfaceNumber_","endpointIn_","endpointOut_","connect","readLoop","transferIn","onReceive","error","onReceiveError","open","configuration","selectConfiguration","configurationInterfaces","interfaces","forEach","element","alternates","elementalt","interfaceClass","interfaceNumber","endpoints","elementendpoint","direction","endpointNumber","claimInterface","selectAlternateInterface","controlTransferOut","disconnect","close","send","transferOut","textEncoder","TextEncoder","locked","ports","console","log","port","selectedPort","catch","productName","textDecoder","TextDecoder","receivedMsg","decode","Promise","resolve","reject","sendString","msg","replace","cmdIdentifier","split","failCount","msgBuff","includes","content","timeout","setTimeout","clearTimeout","str","undefined","encode","usbNfcReader","domainName","location","hostname","uri","axios","post","withCredentials","response","commit","checkNfcModule","setInterval","methods","selectAndConnect","ping","components","PageFooter","teams","donePuzzles","_l","team","index","_id","getGlobalScore","updateTeams","memberCount","removeTeam","member","cardId","removeCardPairing","manageCardPairing","puzzle","room","maxScore","domProps","score","showPairingModal","showAlreadyPairedError","props","teamArray","Array","computed","members","delete","indexOf","$parent","cleanCard","formatCard","eraseCard","writeCard","readTagUid","$forceUpdate","created","preventDefault","addTeam","directives","rawName","expression","target","composing","$set","addMemberField","removeMemberField","count","$emit","pop","TeamElement","TeamAdder","sortTeams","globalScore","parseInt","coef","validated","sort","a","b","login","username","password","$router","register","ref","jsonText","isJsonTextValid","JSON","parse","e","sampleCode","node","$refs","editor","jar","highlightElement","onUpdate","code","jsonObject","stringify","updateCode","staticStyle","manageCardReading","puzzles","readCard","cardContent","tagUid","resultsStr","resultStr","resShort","donePuzzle","type","uriGet","use","config","productionTip","routes","path","HomeComponent","ResultsDisplay","Encoder","SchoolManager","MentionsLegales","Register","Login","store","Store","mutations","user","plugins","router","base","util","extend","App","$mount"],"mappings":"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","file":"js/app.69a3e149.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/clubelek.e63dc7f1.png\";","module.exports = __webpack_public_path__ + \"img/insa.bc285c14.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=style&index=0&id=45bbb7b4&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/objectif21.e8d264c0.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content page-wrapper\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('nav',{staticClass:\"navbar is-fixed-top mb-6\"},[_c('div',{staticClass:\"navbar-brand\"},[_c('a',{staticClass:\"navbar-item\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('i',{staticClass:\"fas fa-home\"}),_vm._v(\" Home\")])],1),_c('a',{staticClass:\"navbar-burger\",class:{ 'is-active': _vm.showNav },on:{\"click\":function($event){_vm.showNav = !_vm.showNav}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}}),_c('span',{attrs:{\"aria-hidden\":\"true\"}}),_c('span',{attrs:{\"aria-hidden\":\"true\"}})])]),_c('div',{staticClass:\"navbar-menu\",class:{ 'is-active': _vm.showNav },attrs:{\"id\":\"navMenu\"}},[_c('div',{staticClass:\"navbar-start\"},[_c('a',{staticClass:\"navbar-item\"},[_c('router-link',{attrs:{\"to\":\"/results\"}},[_c('i',{staticClass:\"fas fa-flag-checkered\"}),_vm._v(\" Enregistrer des résultats\")])],1),(_vm.$store.state.isLoggedIn)?_c('a',{staticClass:\"navbar-item\"},[_c('router-link',{attrs:{\"to\":\"/school\"}},[_c('i',{staticClass:\"fas fa-school\"}),_vm._v(\" Mon établissement (\"+_vm._s(_vm.$store.state.schoolName)+\")\")])],1):_vm._e(),_c('a',{staticClass:\"navbar-item\"},[_c('router-link',{attrs:{\"to\":\"/legal\"}},[_c('i',{staticClass:\"fas fa-balance-scale\"}),_vm._v(\" Mentions légales\")])],1)]),_c('div',{staticClass:\"navbar-end\"},[_c('div',{staticClass:\"buttons has-addons\"},[(!_vm.usbConnected)?_c('a',{staticClass:\"navbar-item button is-info\",on:{\"click\":function($event){return _vm.connectUsb()}}},[_vm._m(0)]):_c('a',{staticClass:\"navbar-item button is-danger\",on:{\"click\":function($event){return _vm.disconnectUsb()}}},[_vm._m(1)]),(!_vm.$store.state.isLoggedIn)?_c('a',{staticClass:\"navbar-item button\"},[_c('router-link',{attrs:{\"to\":\"/register\"}},[_c('span',[_c('i',{staticClass:\"fas fa-user-plus\"}),_vm._v(\" Inscription\")])])],1):_vm._e(),(!_vm.$store.state.isLoggedIn)?_c('a',{staticClass:\"navbar-item button is-primary\"},[_c('router-link',{attrs:{\"to\":\"/login\"}},[_c('span',[_c('i',{staticClass:\"fas fa-sign-in-alt\"}),_vm._v(\" Connexion\")])])],1):_vm._e(),(_vm.$store.state.isLoggedIn)?_c('a',{staticClass:\"navbar-item button is-dark\",on:{\"click\":function($event){return _vm.logout()}}},[_vm._m(2)]):_vm._e()])])])]),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('router-view',{staticClass:\"section container is-widescreen mt-6\"})],1)],1),_c('PageFooter')],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fab fa-usb\"}),_vm._v(\" Connexion lecteur NFC USB\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fab fa-usb\"}),_vm._v(\" Déconnexion lecteur NFC USB\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-sign-out-alt\"}),_vm._v(\" Déconnexion\")])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"footer has-text-centered\"},[_c('div',{staticClass:\"content level\"},[_c('a',{staticClass:\"level-item has-text-centered\",attrs:{\"href\":\"https://www.insa-lyon.fr\"}},[_c('img',{attrs:{\"src\":require(\"../assets/img/insa.png\")}})]),_c('a',{staticClass:\"level-item has-text-centered\",attrs:{\"href\":\"https://www.clubelek.fr\"}},[_c('img',{attrs:{\"src\":require(\"../assets/img/clubelek.png\")}})]),_c('a',{staticClass:\"level-item has-text-centered\"},[_c('img',{attrs:{\"src\":require(\"../assets/img/objectif21.png\")}})])]),_c('div',{staticClass:\"content\"},[_c('p',[_vm._v(\" Conçu et développé par les associations Clubelek et Objectif21, de l'INSA Lyon - Saison 2020/2021 - Made with 💚 by Antoine Rochebois \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <footer class=\"footer has-text-centered\">\r\n    <div class=\"content level\">\r\n      <a class=\"level-item has-text-centered\" href=\"https://www.insa-lyon.fr\">\r\n        <img src=\"../assets/img/insa.png\" />\r\n      </a>\r\n      <a class=\"level-item has-text-centered\" href=\"https://www.clubelek.fr\">\r\n        <img src=\"../assets/img/clubelek.png\" />\r\n      </a>\r\n      <a class=\"level-item has-text-centered\">\r\n        <img src=\"../assets/img/objectif21.png\" />\r\n      </a>\r\n    </div>\r\n    <div class=\"content\">\r\n      <p>\r\n        Conçu et développé par les associations Clubelek et Objectif21, de\r\n        l'INSA Lyon - Saison 2020/2021 - Made with 💚 by Antoine Rochebois\r\n      </p>\r\n    </div>\r\n  </footer>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"PageFooter\"\r\n};\r\n</script>\r\n\r\n<style scoped>\r\nimg {\r\n  height: 64px;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PageFooter.vue?vue&type=template&id=45bbb7b4&scoped=true&\"\nimport script from \"./PageFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./PageFooter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PageFooter.vue?vue&type=style&index=0&id=45bbb7b4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"45bbb7b4\",\n  null\n  \n)\n\nexport default component.exports","var serial = {};\r\n\r\n(function() {\r\n  'use strict';\r\n\r\n  serial.getPorts = function() {\r\n    return navigator.usb.getDevices().then(devices => {\r\n      return devices.map(device => new serial.Port(device));\r\n    });\r\n  };\r\n\r\n  serial.requestPort = function() {\r\n    const filters = [\r\n      { 'vendorId': 0x2341, 'productId': 0x8036 }, // Arduino Leonardo\r\n      { 'vendorId': 0x2341, 'productId': 0x8037 }, // Arduino Micro\r\n      { 'vendorId': 0x2341, 'productId': 0x804d }, // Arduino/Genuino Zero\r\n      { 'vendorId': 0x2341, 'productId': 0x804e }, // Arduino/Genuino MKR1000\r\n      { 'vendorId': 0x2341, 'productId': 0x804f }, // Arduino MKRZERO\r\n      { 'vendorId': 0x2341, 'productId': 0x8050 }, // Arduino MKR FOX 1200\r\n      { 'vendorId': 0x2341, 'productId': 0x8052 }, // Arduino MKR GSM 1400\r\n      { 'vendorId': 0x2341, 'productId': 0x8053 }, // Arduino MKR WAN 1300\r\n      { 'vendorId': 0x2341, 'productId': 0x8054 }, // Arduino MKR WiFi 1010\r\n      { 'vendorId': 0x2341, 'productId': 0x8055 }, // Arduino MKR NB 1500\r\n      { 'vendorId': 0x2341, 'productId': 0x8056 }, // Arduino MKR Vidor 4000\r\n      { 'vendorId': 0x2341, 'productId': 0x8057 }, // Arduino NANO 33 IoT\r\n      { 'vendorId': 0x239A }, // Adafruit Boards!\r\n    ];\r\n    return navigator.usb.requestDevice({ 'filters': filters }).then(\r\n      device => new serial.Port(device)\r\n    );\r\n  }\r\n\r\n  serial.Port = function(device) {\r\n    this.device_ = device;\r\n    this.interfaceNumber_ = 2;  // original interface number of WebUSB Arduino demo\r\n    this.endpointIn_ = 5;       // original in endpoint ID of WebUSB Arduino demo\r\n    this.endpointOut_ = 4;      // original out endpoint ID of WebUSB Arduino demo\r\n  };\r\n\r\n  serial.Port.prototype.connect = function() {\r\n    let readLoop = () => {\r\n      this.device_.transferIn(this.endpointIn_, 64).then(result => {\r\n        this.onReceive(result.data);\r\n        readLoop();\r\n      }, error => {\r\n        this.onReceiveError(error);\r\n      });\r\n    };\r\n\r\n    return this.device_.open()\r\n        .then(() => {\r\n          if (this.device_.configuration === null) {\r\n            return this.device_.selectConfiguration(1);\r\n          }\r\n        })\r\n        .then(() => {\r\n          var configurationInterfaces = this.device_.configuration.interfaces;\r\n          configurationInterfaces.forEach(element => {\r\n            element.alternates.forEach(elementalt => {\r\n              if (elementalt.interfaceClass==0xff) {\r\n                this.interfaceNumber_ = element.interfaceNumber;\r\n                elementalt.endpoints.forEach(elementendpoint => {\r\n                  if (elementendpoint.direction == \"out\") {\r\n                    this.endpointOut_ = elementendpoint.endpointNumber;\r\n                  }\r\n                  if (elementendpoint.direction==\"in\") {\r\n                    this.endpointIn_ =elementendpoint.endpointNumber;\r\n                  }\r\n                })\r\n              }\r\n            })\r\n          })\r\n        })\r\n        .then(() => this.device_.claimInterface(this.interfaceNumber_))\r\n        .then(() => this.device_.selectAlternateInterface(this.interfaceNumber_, 0))\r\n        .then(() => this.device_.controlTransferOut({\r\n            'requestType': 'class',\r\n            'recipient': 'interface',\r\n            'request': 0x22,\r\n            'value': 0x01,\r\n            'index': this.interfaceNumber_}))\r\n        .then(() => {\r\n          readLoop();\r\n        });\r\n  };\r\n\r\n  serial.Port.prototype.disconnect = function() {\r\n    return this.device_.controlTransferOut({\r\n            'requestType': 'class',\r\n            'recipient': 'interface',\r\n            'request': 0x22,\r\n            'value': 0x00,\r\n            'index': this.interfaceNumber_})\r\n        .then(() => this.device_.close());\r\n  };\r\n\r\n  serial.Port.prototype.send = function(data) {\r\n    return this.device_.transferOut(this.endpointOut_, data);\r\n  };\r\n})();\r\nexport default serial;\r\n","import Serial from \"./serial.js\"\r\n\r\nexport default class UsbNfcReader {\r\n    constructor() {\r\n        this.textEncoder = new TextEncoder();\r\n        this.locked = false;\r\n        //Tentative de connexion/reconnexion automatique\r\n        Serial.getPorts().then(ports => {\r\n            if (ports.length == 0) {\r\n                console.log('No devices found.');\r\n            } else {\r\n                this.port = ports[0];\r\n                console.log(\"Port choisi :\", this.port);\r\n                this.connect();\r\n            }\r\n        this.locked = false;\r\n        });\r\n    }\r\n\r\n    selectAndConnect() {\r\n        Serial.requestPort().then(selectedPort => {\r\n            this.port = selectedPort;\r\n            this.connect();\r\n          }).catch(error => {\r\n            console.log('Connection error: ' + error);\r\n          });\r\n    }\r\n\r\n    disconnect() {\r\n        this.port.disconnect();\r\n        this.port = null;\r\n    }\r\n\r\n    connect() {\r\n        console.log('Connecting to ' + this.port.device_.productName + '...');\r\n        this.port.connect().then(() => {\r\n          console.log(this.port, 'Connected.');\r\n\r\n          //Important : callback de réception\r\n          this.port.onReceive = data => {\r\n            let textDecoder = new TextDecoder();\r\n            this.receivedMsg = textDecoder.decode(data);\r\n            console.log(\"Reçu :\" + this.receivedMsg);\r\n          }\r\n          this.port.onReceiveError = error => {\r\n            console.log('Receive error: ' + error);\r\n          };\r\n          return true;\r\n        }, error => {\r\n          console.log('Connection error: ' + error);\r\n          return false;\r\n        });\r\n    }\r\n\r\n    readTagUid() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"GETID_\")\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"Reçu :\" + msg);\r\n          let cmdIdentifier = msg.split('_')[0]\r\n          if (msg == \"RECEIVED_GETID;\") {\r\n            console.log(\"GETID request ACK by Arduino\")\r\n          } else if (cmdIdentifier == \"UID\" && msg.slice(-1) == ';') {\r\n            this.locked = false;\r\n            resolve(msg.split('_')[1].slice(0, -1))        \r\n          } else {\r\n            reject(\"Bad message structure received\")\r\n          }\r\n          \r\n        }\r\n      })\r\n    }\r\n\r\n    readCard() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"READ_\")\r\n        var failCount = 0\r\n        var msg = \"\"\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msgBuff = textDecoder.decode(data);\r\n          msgBuff = msgBuff.replace(/(\\r\\n|\\n|\\r)/gm, \"\").replace(/[^\\w;]+/g, '');\r\n          msg += msgBuff\r\n          if (msg.includes(\"CONTENT_BEGIN_en\") && msg.includes(\"_END\")) {\r\n            msg = msg.split(\"CONTENT_BEGIN_en\")\r\n            msg = msg[msg.length-1].split(\"_END\")[0]\r\n            this.locked = false;\r\n            resolve(msg)\r\n          } else if (!msg.includes(\"RECEIVED_READ\")) {\r\n            if (failCount > 100) {\r\n              reject(\"Too many reading fail\")\r\n            }\r\n            failCount++\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    writeCard(content) {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"WRITE_\" + content)\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"recu \", msg)\r\n          if (msg == \"WRITTEN;\") {\r\n            console.log(\"wrote team message\")\r\n            this.locked = false;\r\n            resolve(\"\")\r\n          } else if (!msg.includes(\"RECEIVED_WRITE\")) {\r\n            reject(\"Write : Bad message structure received\")\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    cleanCard() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"CLEAN_\")\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"recu \", msg)\r\n          if (msg == \"CLEANED;\") {\r\n            console.log(\"Cleaned card\")\r\n            this.locked = false;\r\n            resolve(\"\")\r\n          } else if (!msg.includes(\"RECEIVED_CLEAN\")) {\r\n            reject(\"Clean : Bad message structure received\")\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    formatCard() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"FORMAT_\")\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"recu \", msg)\r\n          if (msg == \"FORMATED;\") {\r\n            console.log(\"Formated card\")\r\n            this.locked = false;\r\n            resolve(\"\")\r\n          } else if (!msg.includes(\"RECEIVED_FORMAT\")) {\r\n            reject(\"Format : Bad message structure received\")\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    eraseCard() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"ERASE_\")\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"recu \", msg)\r\n          if (msg == \"ERASED;\") {\r\n            console.log(\"Erased card\")\r\n            this.locked = false;\r\n            resolve(\"\")\r\n          } else if (!msg.includes(\"RECEIVED_ERASE\")) {\r\n            reject(\"Erase : Bad message structure received\")\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    ping() {\r\n      return new Promise((resolve, reject) => {\r\n        if (this.locked) {\r\n          console.log(\"Trying to ping while performing another task\")\r\n          return resolve(\"\")\r\n        }\r\n        this.sendString(\"PING_\")\r\n        var timeout = setTimeout(() => {\r\n          reject(\"ping timeout\")}\r\n          \r\n          , 2000);\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          if (msg == \"PONG;\") {\r\n            clearTimeout(timeout)\r\n            resolve(\"\")\r\n          } \r\n        }\r\n      })\r\n    }\r\n    //Envoie ce string à l'Arduino\r\n    sendString(str) {\r\n        if (this.port !== undefined) {\r\n            this.port.send(this.textEncoder.encode(str)).catch(error => {\r\n                console.log('Send error: ' + error);\r\n            });\r\n        }\r\n    }\r\n}\r\n","<template>\r\n  <div class=\"content page-wrapper\">\r\n    <div class=\"content-wrapper\">\r\n      <nav class=\"navbar is-fixed-top mb-6\">\r\n        <div class=\"navbar-brand\">\r\n          <a class=\"navbar-item\"\r\n            ><router-link to=\"/\"><i class=\"fas fa-home\" /> Home</router-link></a\r\n          >\r\n          <a\r\n            class=\"navbar-burger\"\r\n            @click=\"showNav = !showNav\"\r\n            :class=\"{ 'is-active': showNav }\"\r\n          >\r\n            <span aria-hidden=\"true\"></span>\r\n            <span aria-hidden=\"true\"></span>\r\n            <span aria-hidden=\"true\"></span>\r\n          </a>\r\n        </div>\r\n        <div id=\"navMenu\" class=\"navbar-menu\" :class=\"{ 'is-active': showNav }\">\r\n          <div class=\"navbar-start\">\r\n            <a class=\"navbar-item\"\r\n              ><router-link to=\"/results\"\r\n                ><i class=\"fas fa-flag-checkered\" /> Enregistrer des résultats</router-link\r\n              ></a\r\n            >\r\n            <!--a class=\"navbar-item\"\r\n              ><router-link to=\"/encoder\"\r\n                ><i class=\"fas fa-code\" /> Encodeur NFC</router-link\r\n              ></a\r\n            -->\r\n            \r\n            <a v-if=\"$store.state.isLoggedIn\" class=\"navbar-item\"\r\n              ><router-link to=\"/school\"\r\n                ><i class=\"fas fa-school\" /> Mon établissement ({{\r\n                  $store.state.schoolName\r\n                }})</router-link\r\n              ></a\r\n            >\r\n            <a class=\"navbar-item\"\r\n              ><router-link to=\"/legal\"\r\n                ><i class=\"fas fa-balance-scale\" /> Mentions\r\n                légales</router-link\r\n              ></a\r\n            >\r\n          </div>\r\n          <div class=\"navbar-end\">\r\n            \r\n            <div class=\"buttons has-addons\">\r\n              <a v-if=\"!usbConnected\" class=\"navbar-item button is-info\" @click=\"connectUsb()\"><span><i class=\"fab fa-usb\"></i> Connexion lecteur NFC USB</span></a>\r\n              <a v-else class=\"navbar-item button is-danger\" @click=\"disconnectUsb()\"><span><i class=\"fab fa-usb\"></i> Déconnexion lecteur NFC USB</span></a>\r\n              <a v-if=\"!$store.state.isLoggedIn\" class=\"navbar-item button\"\r\n                ><router-link to=\"/register\"\r\n                  ><span\r\n                    ><i class=\"fas fa-user-plus\"></i> Inscription</span\r\n                  ></router-link\r\n                ></a\r\n              >\r\n              <a\r\n                v-if=\"!$store.state.isLoggedIn\"\r\n                class=\"navbar-item button is-primary\"\r\n                ><router-link to=\"/login\"\r\n                  ><span\r\n                    ><i class=\"fas fa-sign-in-alt\"></i> Connexion</span\r\n                  ></router-link\r\n                ></a\r\n              >\r\n              <a\r\n                v-if=\"$store.state.isLoggedIn\"\r\n                class=\"navbar-item button is-dark\"\r\n                @click=\"logout()\"\r\n                ><span><i class=\"fas fa-sign-out-alt\"></i> Déconnexion</span></a\r\n              >\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </nav>\r\n\r\n      <transition name=\"fade\">\r\n        <router-view class=\"section container is-widescreen mt-6\"></router-view>\r\n      </transition>\r\n    </div>\r\n\r\n    <PageFooter></PageFooter>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport PageFooter from \"./components/PageFooter.vue\";\r\nimport UsbNfcReader from \"./usbNfcReader.js\"\r\n\r\nexport default {\r\n  name: \"app\",\r\n  data() {\r\n    return {\r\n      showNav: false,\r\n      usbConnected: false\r\n    };\r\n  },\r\n  created() {\r\n    this.usbNfcReader = new UsbNfcReader();\r\n  },\r\n  mounted() {\r\n    var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n    let uri = domainName + \"/loginCheck\";\r\n    this.axios.post(uri, {}, { withCredentials: true }).then(response => {\r\n        console.log(response);\r\n        if (response.data != \"ok\")\r\n          this.$store.commit(\"logout\");\r\n      });\r\n    setTimeout(() => this.checkNfcModule(), 1000)\r\n    setInterval(() => {\r\n      this.checkNfcModule()\r\n    }, 2500)\r\n      \r\n  },\r\n  methods: {\r\n    logout() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + \"/logout\";\r\n      this.axios.post(uri, {}, { withCredentials: true }).then(response => {\r\n        console.log(response);\r\n        this.$store.commit(\"logout\");\r\n      });\r\n    },\r\n    connectUsb() {\r\n      this.usbNfcReader.selectAndConnect()\r\n      this.setTimeout(() => this.checkNfcModule(), 500);\r\n    },\r\n    disconnectUsb() {\r\n      this.usbNfcReader.disconnect()\r\n      this.setTimeout(() => this.checkNfcModule(), 500);\r\n    },\r\n    checkNfcModule() {\r\n      this.usbNfcReader.ping().then(() => {\r\n        this.usbConnected = true;\r\n        console.log(\"Still connected to USB\")\r\n      })\r\n      .catch(() => {\r\n        this.usbConnected = false;\r\n        console.log(\"Distconnected from USB !\")\r\n      })\r\n    }\r\n  },\r\n  components: {\r\n    PageFooter\r\n  }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.page-wrapper {\r\n  display: flex;\r\n  min-height: 100vh;\r\n  flex-direction: column;\r\n}\r\n\r\n.content-wrapper {\r\n  flex: 1;\r\n}\r\n</style>\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=3342100e&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=3342100e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3342100e\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('h1',[_vm._v(\"Escape game économies d'énergies\")]),_c('p',[_vm._v(\" Bienvenu sur cet escape game développé par les associations Clubelek et Objectif21 de l'INSA Lyon \")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <h1>Escape game économies d'énergies</h1>\r\n\r\n    <p>\r\n      Bienvenu sur cet escape game développé par les associations Clubelek et\r\n      Objectif21 de l'INSA Lyon\r\n    </p>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  components: {}\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeComponent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeComponent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeComponent.vue?vue&type=template&id=688c470e&scoped=true&\"\nimport script from \"./HomeComponent.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeComponent.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"688c470e\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\",attrs:{\"id\":\"app\"}},[(_vm.teams[0])?_c('div',[(_vm.teams[0].donePuzzles)?_c('div',[(_vm.teams[0].donePuzzles.length > 0)?_c('div',{staticClass:\"container mb-6 has-text-centered\"},[_c('p',{staticClass:\"is-size-3\"},[_vm._v(\"🏅 Classement des équipes 🏅\")]),_vm._l((_vm.teams),function(team,index){return _c('div',{key:team._id},[(team.donePuzzles)?_c('div',[(team.donePuzzles.length > 0)?_c('div',{staticClass:\"box mb-2\"},[_c('nav',{staticClass:\"level\"},[_c('div',{staticClass:\"level-item has-text-centered\"},[_c('div',[_c('p',{staticClass:\"heading\"},[_vm._v(\"Rang\")]),(index==0)?_c('p',{staticClass:\"title\"},[_vm._v(\"🥇\")]):(index==1)?_c('p',{staticClass:\"title\"},[_vm._v(\"🥈\")]):(index==2)?_c('p',{staticClass:\"title\"},[_vm._v(\"🥉\")]):_c('p',{staticClass:\"title\"},[_vm._v(_vm._s(index+1))])])]),_c('div',{staticClass:\"level-item has-text-centered\"},[_c('div',[_c('p',{staticClass:\"heading\"},[_vm._v(\"équipe\")]),_c('p',{staticClass:\"title\"},[_vm._v(_vm._s(team.name))])])]),_c('div',{staticClass:\"level-item has-text-centered\"},[_c('div',[_c('p',{staticClass:\"heading\"},[_vm._v(\"Score\")]),_c('p',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.getGlobalScore(team)))])])])])]):_vm._e()]):_vm._e()])})],2):_vm._e()]):_vm._e()]):_vm._e(),_vm._l((_vm.teams),function(team){return _c('div',{key:team._id,staticClass:\"mb-2\",on:{\"addedTeam\":_vm.updateTeams}},[_c('TeamElement',{attrs:{\"team\":team,\"teamArray\":_vm.teams}})],1)}),_c('TeamAdder',{staticClass:\"mt-6\",attrs:{\"teamArray\":_vm.teams}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('span',{staticClass:\"message is-info\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" Equipe \"+_vm._s(_vm.team.name)+\" (\"+_vm._s(_vm.memberCount)+\" membres) \"),_c('button',{staticClass:\"delete\",on:{\"click\":_vm.removeTeam}})]),_c('div',{staticClass:\"message-body\"},[_c('div',{staticClass:\"level\"},[_c('div',{staticClass:\"level-left level-item column\"},[_vm._m(0),_c('ul',_vm._l((_vm.team.members),function(member){return _c('li',{key:member},[_vm._v(_vm._s(member))])}),0)]),_c('div',{staticClass:\"level-right level-item column has-text-centered\"},[(this.team.cardId != '')?_c('p',{staticClass:\"heading\"},[_vm._v(\" Carte associée avec l'ID : \"+_vm._s(_vm.team.cardId)+\" \")]):_c('p',{staticClass:\"heading\"},[_vm._v(\" Aucune carte associée ! \")]),(this.team.cardId != '')?_c('button',{staticClass:\"button is-danger\",on:{\"click\":function($event){return _vm.removeCardPairing()}}},[_vm._v(\" Dissocier la carte \")]):_c('button',{staticClass:\"button is-warning\",on:{\"click\":function($event){return _vm.manageCardPairing()}}},[_vm._v(\" Associer une carte \")])])]),(_vm.team.donePuzzles)?_c('div',[(_vm.team.donePuzzles.length > 0)?_c('p',{staticClass:\"is-size-4\"},[_c('strong',[_vm._v(\"Puzzles effectués :\")])]):_vm._e(),_vm._l((_vm.team.donePuzzles),function(puzzle){return _c('div',{key:puzzle.name},[(puzzle.score)?_c('div',{staticClass:\"level\"},[_c('div',{staticClass:\"level-item level-left\"},[_c('p',[_c('strong',[_vm._v(_vm._s(puzzle.name))]),_vm._v(\" (\"+_vm._s(puzzle.room)+\") : \")])]),_c('div',{staticClass:\"level-item level-right\"},[_c('progress',{staticClass:\"progress is-small\",attrs:{\"max\":puzzle.maxScore},domProps:{\"value\":puzzle.score}})]),_c('div',{staticClass:\"level-item level-right\"},[_c('p',[_vm._v(_vm._s(puzzle.score)+\"/\"+_vm._s(puzzle.maxScore))])])]):_c('div',{staticClass:\"level \"},[_c('div',{staticClass:\"level-item level-left\"},[_c('p',[_c('strong',[_vm._v(_vm._s(puzzle.name))]),_vm._v(\" (\"+_vm._s(puzzle.room)+\") : \")])]),_c('div',{staticClass:\"level-item level-right\"},[(puzzle.validated)?_c('span',{staticClass:\"icon has-text-success\"},[_c('i',{staticClass:\"fas fa-check-circle\"})]):_c('span',{staticClass:\"icon has-text-danger\"},[_c('i',{staticClass:\"fas fa-times-circle\"})])])])])})],2):_vm._e()]),_c('div',{staticClass:\"modal\",class:{ 'is-active': _vm.showPairingModal }},[_c('div',{staticClass:\"modal-background\"}),_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"message\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" Association d'une carte NFC à l'équipe \"+_vm._s(_vm.team.name)+\" \")]),_vm._m(1)])]),_c('button',{staticClass:\"modal-close is-large\",on:{\"click\":function($event){_vm.showPairingModal = false}}})]),_c('div',{staticClass:\"modal\",class:{ 'is-active': _vm.showAlreadyPairedError}},[_c('div',{staticClass:\"modal-background\"}),_vm._m(2),_c('button',{staticClass:\"modal-close is-large\",on:{\"click\":function($event){_vm.showAlreadyPairedError = false}}})])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"is-size-4\"},[_c('strong',[_vm._v(\"Membres de l'équipe :\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message-body\"},[_vm._v(\" Veuillez scanner une carte sur le lecteur pour l'associer à cette équipe. \"),_c('br'),_c('br'),_vm._v(\" ATTENTION : Ceci effacera le contenu actuel de cette carte ! Vous ne pourrez pas attribuer à cette équipe une carte déjà attribuée à une autre équipe. Merci donc de dissocier toutes les cartes de votre équipe une fois le jeu fini. \"),_c('br'),_c('br'),_vm._v(\" Vous devez avoir connecté le lecteur USB au site. Déposez la carte d'équipe sur le lecteur NFC (face en plastique). Vous devez entendre deux bip consécutifs. Si cette fenêtre se ferme, c'est bon ! Si cela prend du temps ou qu'il n'y a qu'un seul bip, fermez et recommencez. Si le problème persiste, débranchez le lecteur, rechargez la page puis rebranchez le lecteur. \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"message is-danger\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" Carte déjà associée à une autre équipe ! \")]),_c('div',{staticClass:\"message-body\"},[_vm._v(\" Erreur : cette carte est déjà associée à une autre équipe (de votre établissement ou non). Merci de la dissocier de l'équipe originale. \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <span class=\"message is-info\">\r\n      <div class=\"message-header\">\r\n        Equipe {{ team.name }} ({{ memberCount }} membres)\r\n        <button class=\"delete\" @click=\"removeTeam\"></button>\r\n      </div>\r\n\r\n      <div class=\"message-body\">\r\n        <div class=\"level\">\r\n          <div class=\"level-left level-item column\">\r\n            <p class=\"is-size-4\"><strong>Membres de l'équipe :</strong></p>\r\n            <ul>\r\n              <li v-for=\"member in team.members\" :key=\"member\">{{ member }}</li>\r\n            </ul>\r\n          </div>\r\n          <div class=\"level-right level-item column has-text-centered\">\r\n            <p class=\"heading\" v-if=\"this.team.cardId != ''\">\r\n              Carte associée avec l'ID : {{ team.cardId }}\r\n            </p>\r\n            <p class=\"heading\" v-else>\r\n              Aucune carte associée !\r\n            </p>\r\n            <button v-if=\"this.team.cardId != ''\" @click=\"removeCardPairing()\" class=\"button is-danger\">\r\n              Dissocier la carte\r\n            </button>\r\n            <button\r\n              v-else\r\n              @click=\"manageCardPairing()\"\r\n              class=\"button is-warning\"\r\n            >\r\n              Associer une carte\r\n            </button>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"team.donePuzzles\">\r\n          <p v-if=\"team.donePuzzles.length > 0\" class=\"is-size-4\">\r\n            <strong>Puzzles effectués :</strong>\r\n          </p>\r\n          <div v-for=\"puzzle in team.donePuzzles\" :key=\"puzzle.name\">\r\n            <div class=\"level\" v-if=\"puzzle.score\">\r\n              <div class=\"level-item level-left\">\r\n                <p>\r\n                  <strong>{{ puzzle.name }}</strong> ({{ puzzle.room }}) :\r\n                </p>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <progress\r\n                  class=\"progress is-small\"\r\n                  :value=\"puzzle.score\"\r\n                  :max=\"puzzle.maxScore\"\r\n                ></progress>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <p>{{ puzzle.score }}/{{ puzzle.maxScore }}</p>\r\n              </div>\r\n            </div>\r\n            <div v-else class=\"level \">\r\n              <div class=\"level-item level-left\">\r\n                <p>\r\n                  <strong>{{ puzzle.name }}</strong> ({{ puzzle.room }}) :\r\n                </p>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <span v-if=\"puzzle.validated\" class=\"icon has-text-success\">\r\n                  <i class=\"fas fa-check-circle\"></i>\r\n                </span>\r\n                <span v-else class=\"icon has-text-danger\">\r\n                  <i class=\"fas fa-times-circle\"></i>\r\n                </span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"modal\" :class=\"{ 'is-active': showPairingModal }\">\r\n        <div class=\"modal-background\"></div>\r\n        <div class=\"modal-content\">\r\n          <div class=\"message\">\r\n            <div class=\"message-header\">\r\n              Association d'une carte NFC à l'équipe {{ team.name }}\r\n            </div>\r\n            <div class=\"message-body\">\r\n              Veuillez scanner une carte sur le lecteur pour l'associer à cette\r\n              équipe. <br>\r\n              <br>\r\n              ATTENTION : Ceci effacera le contenu actuel de cette carte ! Vous ne pourrez pas attribuer à cette équipe une carte déjà attribuée à une autre équipe.\r\n              Merci donc de dissocier toutes les cartes de votre équipe une fois le jeu fini.\r\n              <br>\r\n              <br>\r\n              Vous devez avoir connecté le lecteur USB au site. Déposez la carte d'équipe sur le lecteur NFC (face en plastique). Vous devez entendre deux bip consécutifs. Si cette fenêtre se ferme, c'est bon ! Si cela prend du temps ou qu'il n'y a qu'un seul bip, fermez et recommencez. Si le problème persiste, débranchez le lecteur, rechargez la page puis rebranchez le lecteur.\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <button\r\n          class=\"modal-close is-large\"\r\n          @click=\"showPairingModal = false\"\r\n        ></button>\r\n      </div>\r\n\r\n      <div class=\"modal\" :class=\"{ 'is-active': showAlreadyPairedError}\" >\r\n        <div class=\"modal-background\"></div>\r\n        <div class=\"modal-content\">\r\n          <div class=\"message is-danger\">\r\n            <div class=\"message-header\">\r\n              Carte déjà associée à une autre équipe !\r\n            </div>\r\n            <div class=\"message-body\">\r\n              Erreur : cette carte est déjà associée à une autre équipe (de votre établissement ou non). Merci de la dissocier de l'équipe originale.\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <button\r\n          class=\"modal-close is-large\"\r\n          @click=\"showAlreadyPairedError = false\"\r\n        ></button>\r\n      </div>\r\n    </span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"TeamElement\",\r\n  props: {\r\n    team: Object,\r\n    teamArray: Array\r\n  },\r\n  data() {\r\n    return {\r\n      showPairingModal: false,\r\n      showAlreadyPairedError: false\r\n    };\r\n  },\r\n\r\n  computed: {\r\n    memberCount: function() {\r\n      return this.team.members.length;\r\n    }\r\n  },\r\n\r\n  methods: {\r\n    removeTeam: function() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + `/school/deleteTeam/${this.team._id}`;\r\n      this.axios.delete(uri, { withCredentials: true }).then(response => {\r\n        console.log(\"bien supprimé !\", response);\r\n        this.teamArray.splice(this.teamArray.indexOf(this.team), 1);\r\n      });\r\n    },\r\n\r\n    manageCardPairing: function() {\r\n      this.showPairingModal = !this.showPairingModal\r\n      console.log(\"Trying to reset card\")\r\n      this.$parent.$parent.usbNfcReader.cleanCard().then(()=> {\r\n      this.$parent.$parent.usbNfcReader.formatCard().then(()=> {\r\n      this.$parent.$parent.usbNfcReader.eraseCard().then(()=> {\r\n        this.$parent.$parent.usbNfcReader.writeCard(\"team\").then(response=> {\r\n          console.log(\"Reset successful, trying to read uid\", response)\r\n          this.$parent.$parent.usbNfcReader.readTagUid()\r\n          .then(response => {   \r\n            var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n            let uri = domainName + `/school/updateTeamCard/${this.team._id}`;\r\n            this.axios\r\n            .post(uri, {cardId: response}, { withCredentials: true })\r\n            .then(() => {\r\n              console.log(\"Carte ajoutée !\");\r\n              this.team.cardId = response   \r\n              this.showPairingModal = false;\r\n              this.$forceUpdate()\r\n            }).catch(response => {\r\n              this.showPairingModal = false;\r\n              this.showAlreadyPairedError = true;\r\n              this.team.cardId = \"\";\r\n              this.$forceUpdate()\r\n              console.log(\"Carte déjà utilisée !\", response)\r\n            })\r\n        \r\n          })\r\n        })\r\n      })\r\n      })\r\n      })\r\n    },\r\n\r\n    removeCardPairing: function() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + `/school/removeTeamCard/${this.team._id}`;\r\n        this.axios\r\n        .post(uri, this.team, { withCredentials: true })\r\n        .then(response => {\r\n          console.log(\"Carte dissociée !\", response);\r\n          this.team.cardId = \"\";\r\n          this.$forceUpdate()\r\n        });\r\n    }\r\n  },\r\n  created: function()  {\r\n    if (!this.team.cardId) this.team.cardId = \"\"\r\n    if (this.team.cardId == null) this.team.cardId =\"\"\r\n  }\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamElement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamElement.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TeamElement.vue?vue&type=template&id=112ebed9&scoped=true&\"\nimport script from \"./TeamElement.vue?vue&type=script&lang=js&\"\nexport * from \"./TeamElement.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"112ebed9\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message is-primary\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\"Créer une nouvelle équipe\")]),_c('div',{staticClass:\"message-body\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.addTeam($event)}}},[_c('div',{staticClass:\"field\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Nom de l'équipe\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.team.name),expression:\"team.name\"}],staticClass:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.team.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.team, \"name\", $event.target.value)}}})]),_c('br'),_c('div',{staticClass:\"field\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Membres de l'équipe\")]),_vm._l((_vm.count),function(c,index){return _c('div',{key:c._id},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.team.members[index]),expression:\"team.members[index]\"}],staticClass:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.team.members[index])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.team.members, index, $event.target.value)}}})])}),_c('button',{staticClass:\"button is-primary is-outlined\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.addMemberField}},[_vm._v(\" + \")]),_c('button',{staticClass:\"button is-primary is-outlined\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.removeMemberField}},[_vm._v(\" - \")])],2),_c('br'),_vm._m(0)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('button',{staticClass:\"button is-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\" Ajouter l'équipe \")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"message is-primary\">\r\n    <div class=\"message-header\">Créer une nouvelle équipe</div>\r\n    <div class=\"message-body\">\r\n      <form @submit.prevent=\"addTeam\">\r\n        <div class=\"field\">\r\n          <label class=\"label\">Nom de l'équipe</label>\r\n          <input class=\"input\" type=\"text\" v-model=\"team.name\" />\r\n        </div>\r\n        <br />\r\n        <div class=\"field\">\r\n          <label class=\"label\">Membres de l'équipe</label>\r\n          <div v-for=\"(c, index) in count\" :key=\"c._id\">\r\n            <input class=\"input\" type=\"text\" v-model=\"team.members[index]\" />\r\n          </div>\r\n          <button\r\n            class=\"button is-primary is-outlined\"\r\n            type=\"button\"\r\n            @click=\"addMemberField\"\r\n          >\r\n            +\r\n          </button>\r\n          <button\r\n            class=\"button is-primary is-outlined\"\r\n            type=\"button\"\r\n            @click=\"removeMemberField\"\r\n          >\r\n            -\r\n          </button>\r\n        </div>\r\n        <br />\r\n        <div>\r\n          <button class=\"button is-primary\" type=\"submit\">\r\n            Ajouter l'équipe\r\n          </button>\r\n        </div>\r\n      </form>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"TeamAdder\",\r\n  props: {\r\n    teamArray: Array\r\n  },\r\n  data() {\r\n    return {\r\n      team: { name: \"\", members: [], cardId:\"\" },\r\n      count: 1\r\n    };\r\n  },\r\n  methods: {\r\n    addTeam() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + \"/school/addTeam\";\r\n      this.axios\r\n        .post(uri, this.team, { withCredentials: true })\r\n        .then(response => {\r\n          console.log(\"Team créée !\", response);\r\n          this.teamArray.push(this.team);\r\n          this.$emit('addedTeam', this.teamArray);\r\n          this.team = { name: \"\", members: [] };\r\n        });\r\n    },\r\n    addMemberField() {\r\n      this.count++;\r\n    },\r\n    removeMemberField() {\r\n      if (this.count > 0) {\r\n        this.team.members.pop();\r\n        this.count--;\r\n      }\r\n      \r\n    }\r\n  }\r\n};\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamAdder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamAdder.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TeamAdder.vue?vue&type=template&id=069fa8c2&\"\nimport script from \"./TeamAdder.vue?vue&type=script&lang=js&\"\nexport * from \"./TeamAdder.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div id=\"app\" class=\"content\">\r\n    <div v-if=\"teams[0]\">\r\n      <div v-if=\"teams[0].donePuzzles\">\r\n        <div v-if=\"teams[0].donePuzzles.length > 0\" class=\"container mb-6 has-text-centered\">\r\n          <p class=\"is-size-3\">🏅  Classement des équipes  🏅</p>\r\n\r\n          <div v-for=\"(team, index) in teams\" :key=\"team._id\" >\r\n            <div v-if=\"team.donePuzzles\">\r\n              <div v-if=\"team.donePuzzles.length > 0\" class=\"box mb-2\">\r\n                <nav class=\"level\">\r\n                  <div class=\"level-item has-text-centered\">\r\n                    <div>\r\n                      <p class=\"heading\">Rang</p>\r\n                      <p v-if=\"index==0\" class=\"title\">🥇</p>\r\n                      <p v-else-if=\"index==1\" class=\"title\">🥈</p>\r\n                      <p v-else-if=\"index==2\" class=\"title\">🥉</p>\r\n                      <p v-else class=\"title\">{{index+1}}</p>\r\n                    </div>\r\n                  </div>\r\n                  <div class=\"level-item has-text-centered\">\r\n                    <div>\r\n                      <p class=\"heading\">équipe</p>\r\n                      <p class=\"title\">{{team.name}}</p>\r\n                    </div>\r\n                  </div>\r\n                  <div class=\"level-item has-text-centered\">\r\n                    <div>\r\n                      <p class=\"heading\">Score</p>\r\n                      <p class=\"title\">{{getGlobalScore(team)}}</p>\r\n                    </div>\r\n                  </div>\r\n                </nav>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n      <div class=\"mb-2\" @addedTeam=\"updateTeams\" v-for=\"team in teams\" :key=\"team._id\">\r\n        <TeamElement :team=\"team\" :teamArray=\"teams\" />\r\n      </div>\r\n\r\n\r\n        <TeamAdder class=\"mt-6\" :teamArray=\"teams\"></TeamAdder>\r\n      </div>\r\n</template>\r\n\r\n<script>\r\nimport TeamElement from \"./TeamElement.vue\";\r\nimport TeamAdder from \"./TeamAdder.vue\";\r\n\r\nexport default {\r\n  name: \"SchoolManager\",\r\n  components: {\r\n    TeamElement,\r\n    TeamAdder\r\n  },\r\n  data() {\r\n    return {\r\n      teams: []\r\n    };\r\n  },\r\n  created() {\r\n    \r\n  },\r\n\r\n  mounted() {\r\n    var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n    let uri = domainName + \"/school\";\r\n    this.axios.get(uri, { withCredentials: true }).then(response => {\r\n      this.teams = response.data;\r\n      this.sortTeams()\r\n      console.log(response);\r\n    });\r\n\r\n  },\r\n  methods: {\r\n    updateTeams(teams) {\r\n      this.teams = teams;\r\n      this.sortTeams()\r\n    },\r\n    getGlobalScore(team) {\r\n      var globalScore = 0\r\n      if (!team.donePuzzles) return 0;\r\n      team.donePuzzles.forEach(puzzle => {\r\n        if (puzzle.score)\r\n          globalScore += parseInt(puzzle.coef)*parseInt(puzzle.score)\r\n        else if (puzzle.validated)\r\n          globalScore += parseInt(puzzle.coef)\r\n        \r\n      });\r\n      return globalScore;\r\n    },\r\n    sortTeams() {\r\n      this.teams.sort((a, b) => {\r\n        return this.getGlobalScore(b) - this.getGlobalScore(a)\r\n      })\r\n    }\r\n  }\r\n  \r\n};\r\n</script>\r\n\r\n<style></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SchoolManager.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SchoolManager.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SchoolManager.vue?vue&type=template&id=95f36c94&\"\nimport script from \"./SchoolManager.vue?vue&type=script&lang=js&\"\nexport * from \"./SchoolManager.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('h2',[_vm._v(\"Définitions\")]),_c('p',[_c('b',[_vm._v(\"Client :\")]),_vm._v(\" tout professionnel ou personne physique capable au sens des articles 1123 et suivants du Code civil, ou personne morale, qui visite le Site objet des présentes conditions générales.\"),_c('br'),_c('b',[_vm._v(\"Prestations et Services :\")]),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" met à disposition des Clients : \")]),_c('p',[_c('b',[_vm._v(\"Contenu :\")]),_vm._v(\" Ensemble des éléments constituants l’information présente sur le Site, notamment textes – images – vidéos. \")]),_c('p',[_c('b',[_vm._v(\"Informations clients :\")]),_vm._v(\" Ci après dénommé « Information (s) » qui correspondent à l’ensemble des données personnelles susceptibles d’être détenues par \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" pour la gestion de votre compte, de la gestion de la relation client et à des fins d’analyses et de statistiques. \")]),_c('p',[_c('b',[_vm._v(\"Utilisateur :\")]),_vm._v(\" Internaute se connectant, utilisant le site susnommé. \")]),_c('p',[_c('b',[_vm._v(\"Informations personnelles :\")]),_vm._v(\" « Les informations qui permettent, sous quelque forme que ce soit, directement ou non, l'identification des personnes physiques auxquelles elles s'appliquent » (article 4 de la loi n° 78-17 du 6 janvier 1978). \")]),_c('p',[_vm._v(\" Les termes « données à caractère personnel », « personne concernée », « sous traitant » et « données sensibles » ont le sens défini par le Règlement Général sur la Protection des Données (RGPD : n° 2016-679) \")]),_c('h2',[_vm._v(\"1. Présentation du site internet.\")]),_c('p',[_vm._v(\" En vertu de l'article 6 de la loi n° 2004-575 du 21 juin 2004 pour la confiance dans l'économie numérique, il est précisé aux utilisateurs du site internet \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" l'identité des différents intervenants dans le cadre de sa réalisation et de son suivi: \")]),_c('p',[_c('strong',[_vm._v(\"Propriétaire\")]),_vm._v(\" : Association loi 1901 Clubelek (Association loi 1901) – INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne\"),_c('br'),_c('strong',[_vm._v(\"Responsable publication\")]),_vm._v(\" : Clubelek – clubelek@insa-lyon.fr\"),_c('br'),_vm._v(\" Le responsable publication est une personne physique ou une personne morale.\"),_c('br'),_c('strong',[_vm._v(\"Webmaster\")]),_vm._v(\" : Antoine Rochebois – antoine.rochebois@insa-lyon.fr\"),_c('br'),_c('strong',[_vm._v(\"Hébergeur\")]),_vm._v(\" : ovh – 2 rue Kellermann 59100 Roubaix 1007\"),_c('br'),_c('strong',[_vm._v(\"Délégué à la protection des données\")]),_vm._v(\" : Antoine Rochebois – antoine.rochebois@insa-lyon.fr\"),_c('br')]),_c('div',{attrs:{\"ng-bind-html\":\"linkHTML\"}},[_c('p',[_vm._v(\" Ce modèle de mentions légales est proposé par le \"),_c('a',{attrs:{\"href\":\"https://fr.orson.io/1371/generateur-mentions-legales\",\"title\":\"générateur gratuit offert par Orson.io\"}},[_vm._v(\"générateur gratuit offert par Orson.io\")])])]),_c('h2',[_vm._v(\" 2. Conditions générales d’utilisation du site et des services proposés. \")]),_c('p',[_vm._v(\" Le Site constitue une œuvre de l’esprit protégée par les dispositions du Code de la Propriété Intellectuelle et des Réglementations Internationales applicables. Le Client ne peut en aucune manière réutiliser, céder ou exploiter pour son propre compte tout ou partie des éléments ou travaux du Site. \")]),_c('p',[_vm._v(\" L’utilisation du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" implique l’acceptation pleine et entière des conditions générales d’utilisation ci-après décrites. Ces conditions d’utilisation sont susceptibles d’être modifiées ou complétées à tout moment, les utilisateurs du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" sont donc invités à les consulter de manière régulière. \")]),_c('p',[_vm._v(\" Ce site internet est normalement accessible à tout moment aux utilisateurs. Une interruption pour raison de maintenance technique peut être toutefois décidée par \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", qui s’efforcera alors de communiquer préalablement aux utilisateurs les dates et heures de l’intervention. Le site web \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est mis à jour régulièrement par \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" responsable. De la même façon, les mentions légales peuvent être modifiées à tout moment : elles s’imposent néanmoins à l’utilisateur qui est invité à s’y référer le plus souvent possible afin d’en prendre connaissance. \")]),_c('h2',[_vm._v(\"3. Description des services fournis.\")]),_c('p',[_vm._v(\" Le site internet \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" a pour objet de fournir une information concernant l’ensemble des activités de la société. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’efforce de fournir sur le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" des informations aussi précises que possible. Toutefois, il ne pourra être tenu responsable des oublis, des inexactitudes et des carences dans la mise à jour, qu’elles soient de son fait ou du fait des tiers partenaires qui lui fournissent ces informations. \")]),_c('p',[_vm._v(\" Toutes les informations indiquées sur le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" sont données à titre indicatif, et sont susceptibles d’évoluer. Par ailleurs, les renseignements figurant sur le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne sont pas exhaustifs. Ils sont donnés sous réserve de modifications ayant été apportées depuis leur mise en ligne. \")]),_c('h2',[_vm._v(\"4. Limitations contractuelles sur les données techniques.\")]),_c('p',[_vm._v(\" Le site utilise la technologie JavaScript. Le site Internet ne pourra être tenu responsable de dommages matériels liés à l’utilisation du site. De plus, l’utilisateur du site s’engage à accéder au site en utilisant un matériel récent, ne contenant pas de virus et avec un navigateur de dernière génération mis-à-jour Le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est hébergé chez un prestataire sur le territoire de l’Union Européenne conformément aux dispositions du Règlement Général sur la Protection des Données (RGPD : n° 2016-679) \")]),_c('p',[_vm._v(\" L’objectif est d’apporter une prestation qui assure le meilleur taux d’accessibilité. L’hébergeur assure la continuité de son service 24 Heures sur 24, tous les jours de l’année. Il se réserve néanmoins la possibilité d’interrompre le service d’hébergement pour les durées les plus courtes possibles notamment à des fins de maintenance, d’amélioration de ses infrastructures, de défaillance de ses infrastructures ou si les Prestations et Services génèrent un trafic réputé anormal. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" et l’hébergeur ne pourront être tenus responsables en cas de dysfonctionnement du réseau Internet, des lignes téléphoniques ou du matériel informatique et de téléphonie lié notamment à l’encombrement du réseau empêchant l’accès au serveur. \")]),_c('h2',[_vm._v(\"5. Propriété intellectuelle et contrefaçons.\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est propriétaire des droits de propriété intellectuelle et détient les droits d’usage sur tous les éléments accessibles sur le site internet, notamment les textes, images, graphismes, logos, vidéos, icônes et sons. Toute reproduction, représentation, modification, publication, adaptation de tout ou partie des éléments du site, quel que soit le moyen ou le procédé utilisé, est interdite, sauf autorisation écrite préalable de : \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". \")]),_c('p',[_vm._v(\" Toute exploitation non autorisée du site ou de l’un quelconque des éléments qu’il contient sera considérée comme constitutive d’une contrefaçon et poursuivie conformément aux dispositions des articles L.335-2 et suivants du Code de Propriété Intellectuelle. \")]),_c('h2',[_vm._v(\"6. Limitations de responsabilité.\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" agit en tant qu’éditeur du site. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est responsable de la qualité et de la véracité du Contenu qu’il publie. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne pourra être tenu responsable des dommages directs et indirects causés au matériel de l’utilisateur, lors de l’accès au site internet \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", et résultant soit de l’utilisation d’un matériel ne répondant pas aux spécifications indiquées au point 4, soit de l’apparition d’un bug ou d’une incompatibilité. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne pourra également être tenu responsable des dommages indirects (tels par exemple qu’une perte de marché ou perte d’une chance) consécutifs à l’utilisation du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". Des espaces interactifs (possibilité de poser des questions dans l’espace contact) sont à la disposition des utilisateurs. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" se réserve le droit de supprimer, sans mise en demeure préalable, tout contenu déposé dans cet espace qui contreviendrait à la législation applicable en France, en particulier aux dispositions relatives à la protection des données. Le cas échéant, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" se réserve également la possibilité de mettre en cause la responsabilité civile et/ou pénale de l’utilisateur, notamment en cas de message à caractère raciste, injurieux, diffamant, ou pornographique, quel que soit le support utilisé (texte, photographie …). \")]),_c('h2',[_vm._v(\"7. Gestion des données personnelles.\")]),_c('p',[_vm._v(\" Le Client est informé des réglementations concernant la communication marketing, la loi du 21 Juin 2014 pour la confiance dans l’Economie Numérique, la Loi Informatique et Liberté du 06 Août 2004 ainsi que du Règlement Général sur la Protection des Données (RGPD : n° 2016-679). \")]),_c('h3',[_vm._v(\"7.1 Responsables de la collecte des données personnelles\")]),_c('p',[_vm._v(\" Pour les Données Personnelles collectées dans le cadre de la création du compte personnel de l’Utilisateur et de sa navigation sur le Site, le responsable du traitement des Données Personnelles est : Clubelek (Association loi 1901). \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\"est représenté par Thomas Vadebout, son représentant légal \")]),_c('p',[_vm._v(\" En tant que responsable du traitement des données qu’il collecte, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’engage à respecter le cadre des dispositions légales en vigueur. Il lui appartient notamment au Client d’établir les finalités de ses traitements de données, de fournir à ses prospects et clients, à partir de la collecte de leurs consentements, une information complète sur le traitement de leurs données personnelles et de maintenir un registre des traitements conforme à la réalité. Chaque fois que \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" traite des Données Personnelles, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" prend toutes les mesures raisonnables pour s’assurer de l’exactitude et de la pertinence des Données Personnelles au regard des finalités pour lesquelles \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" les traite. \")]),_c('h3',[_vm._v(\"7.2 Finalité des données collectées\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est susceptible de traiter tout ou partie des données : \")]),_c('ul',[_c('li',[_vm._v(\" pour permettre la navigation sur le Site et la gestion et la traçabilité des prestations et services commandés par l’utilisateur : données de connexion et d’utilisation du Site, facturation, historique des commandes, etc. \")]),_c('li',[_vm._v(\" pour prévenir et lutter contre la fraude informatique (spamming, hacking…) : matériel informatique utilisé pour la navigation, l’adresse IP, le mot de passe (hashé) \")]),_c('li',[_vm._v(\" pour améliorer la navigation sur le Site : données de connexion et d’utilisation \")]),_c('li',[_vm._v(\" pour mener des enquêtes de satisfaction facultatives sur \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" : adresse email \")]),_c('li',[_vm._v(\" pour mener des campagnes de communication (sms, mail) : numéro de téléphone, adresse email \")])]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne commercialise pas vos données personnelles qui sont donc uniquement utilisées par nécessité ou à des fins statistiques et d’analyses. \")]),_c('h3',[_vm._v(\"7.3 Droit d’accès, de rectification et d’opposition\")]),_c('p',[_vm._v(\" Conformément à la réglementation européenne en vigueur, les Utilisateurs de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" disposent des droits suivants : \")]),_c('ul',[_c('li',[_vm._v(\" droit d'accès (article 15 RGPD) et de rectification (article 16 RGPD), de mise à jour, de complétude des données des Utilisateurs droit de verrouillage ou d’effacement des données des Utilisateurs à caractère personnel (article 17 du RGPD), lorsqu’elles sont inexactes, incomplètes, équivoques, périmées, ou dont la collecte, l'utilisation, la communication ou la conservation est interdite \")]),_c('li',[_vm._v(\" droit de retirer à tout moment un consentement (article 13-2c RGPD) \")]),_c('li',[_vm._v(\" droit à la limitation du traitement des données des Utilisateurs (article 18 RGPD) \")]),_c('li',[_vm._v(\" droit d’opposition au traitement des données des Utilisateurs (article 21 RGPD) \")]),_c('li',[_vm._v(\" droit à la portabilité des données que les Utilisateurs auront fournies, lorsque ces données font l’objet de traitements automatisés fondés sur leur consentement ou sur un contrat (article 20 RGPD) \")]),_c('li',[_vm._v(\" droit de définir le sort des données des Utilisateurs après leur mort et de choisir à qui \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" devra communiquer (ou non) ses données à un tiers qu’ils aura préalablement désigné \")])]),_c('p',[_vm._v(\" Dès que \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" a connaissance du décès d’un Utilisateur et à défaut d’instructions de sa part, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’engage à détruire ses données, sauf si leur conservation s’avère nécessaire à des fins probatoires ou pour répondre à une obligation légale. \")]),_c('p',[_vm._v(\" Si l’Utilisateur souhaite savoir comment \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" utilise ses Données Personnelles, demander à les rectifier ou s’oppose à leur traitement, l’Utilisateur peut contacter \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" par écrit à l’adresse suivante : \")]),_vm._v(\" Clubelek (Association loi 1901) – DPO, Antoine Rochebois \"),_c('br'),_vm._v(\" INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne. \"),_c('p',[_vm._v(\" Dans ce cas, l’Utilisateur doit indiquer les Données Personnelles qu’il souhaiterait que \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" corrige, mette à jour ou supprime, en s’identifiant précisément avec une copie d’une pièce d’identité (carte d’identité ou passeport). \")]),_c('p',[_vm._v(\" Les demandes de suppression de Données Personnelles seront soumises aux obligations qui sont imposées à \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" par la loi, notamment en matière de conservation ou d’archivage des documents. Enfin, les Utilisateurs de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" peuvent déposer une réclamation auprès des autorités de contrôle, et notamment de la CNIL (https://www.cnil.fr/fr/plaintes). \")]),_c('h3',[_vm._v(\"7.4 Non-communication des données personnelles\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’interdit de traiter, héberger ou transférer les Informations collectées sur ses Clients vers un pays situé en dehors de l’Union européenne ou reconnu comme « non adéquat » par la Commission européenne sans en informer préalablement le client. Pour autant, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" reste libre du choix de ses sous-traitants techniques et commerciaux à la condition qu’il présentent les garanties suffisantes au regard des exigences du Règlement Général sur la Protection des Données (RGPD : n° 2016-679). \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’engage à prendre toutes les précautions nécessaires afin de préserver la sécurité des Informations et notamment qu’elles ne soient pas communiquées à des personnes non autorisées. Cependant, si un incident impactant l’intégrité ou la confidentialité des Informations du Client est portée à la connaissance de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", celle-ci devra dans les meilleurs délais informer le Client et lui communiquer les mesures de corrections prises. Par ailleurs \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne collecte aucune « données sensibles ». \")]),_c('p',[_vm._v(\" Les Données Personnelles de l’Utilisateur peuvent être traitées par des filiales de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" et des sous-traitants (prestataires de services), exclusivement afin de réaliser les finalités de la présente politique. \")]),_c('p',[_vm._v(\" Dans la limite de leurs attributions respectives et pour les finalités rappelées ci-dessus, les principales personnes susceptibles d’avoir accès aux données des Utilisateurs de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" sont principalement les agents de notre service client. \")]),_c('div',{attrs:{\"ng-bind-html\":\"rgpdHTML\"}}),_c('h2',[_vm._v(\"8. Notification d’incident\")]),_c('p',[_vm._v(\" Quels que soient les efforts fournis, aucune méthode de transmission sur Internet et aucune méthode de stockage électronique n'est complètement sûre. Nous ne pouvons en conséquence pas garantir une sécurité absolue. Si nous prenions connaissance d'une brèche de la sécurité, nous avertirions les utilisateurs concernés afin qu'ils puissent prendre les mesures appropriées. Nos procédures de notification d’incident tiennent compte de nos obligations légales, qu'elles se situent au niveau national ou européen. Nous nous engageons à informer pleinement nos clients de toutes les questions relevant de la sécurité de leur compte et à leur fournir toutes les informations nécessaires pour les aider à respecter leurs propres obligations réglementaires en matière de reporting. \")]),_c('p',[_vm._v(\" Aucune information personnelle de l'utilisateur du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" n'est publiée à l'insu de l'utilisateur, échangée, transférée, cédée ou vendue sur un support quelconque à des tiers. Seule l'hypothèse du rachat de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" et de ses droits permettrait la transmission des dites informations à l'éventuel acquéreur qui serait à son tour tenu de la même obligation de conservation et de modification des données vis à vis de l'utilisateur du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". \")]),_c('h3',[_vm._v(\"Sécurité\")]),_c('p',[_vm._v(\" Pour assurer la sécurité et la confidentialité des Données Personnelles et des Données Personnelles de Santé, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" utilise des réseaux protégés par des dispositifs standards tels que par pare-feu, la pseudonymisation, l’encryption et mot de passe. \")]),_c('p',[_vm._v(\" Lors du traitement des Données Personnelles, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\"prend toutes les mesures raisonnables visant à les protéger contre toute perte, utilisation détournée, accès non autorisé, divulgation, altération ou destruction. \")]),_c('h2',[_vm._v(\"9. Liens hypertextes « cookies » et balises (“tags”) internet\")]),_c('p',[_vm._v(\" Le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" contient un certain nombre de liens hypertextes vers d’autres sites, mis en place avec l’autorisation de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". Cependant, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" n’a pas la possibilité de vérifier le contenu des sites ainsi visités, et n’assumera en conséquence aucune responsabilité de ce fait. \")]),_vm._v(\" Sauf si vous décidez de désactiver les cookies, vous acceptez que le site puisse les utiliser. Vous pouvez à tout moment désactiver ces cookies et ce gratuitement à partir des possibilités de désactivation qui vous sont offertes et rappelées ci-après, sachant que cela peut réduire ou empêcher l’accessibilité à tout ou partie des Services proposés par le site. \"),_c('p'),_c('h3',[_vm._v(\"9.1. « COOKIES »\")]),_c('p',[_vm._v(\" Un « cookie » est un petit fichier d’information envoyé sur le navigateur de l’Utilisateur et enregistré au sein du terminal de l’Utilisateur (ex : ordinateur, smartphone), (ci-après « Cookies »). Ce fichier comprend des informations telles que le nom de domaine de l’Utilisateur, le fournisseur d’accès Internet de l’Utilisateur, le système d’exploitation de l’Utilisateur, ainsi que la date et l’heure d’accès. Les Cookies ne risquent en aucun cas d’endommager le terminal de l’Utilisateur. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est susceptible de traiter les informations de l’Utilisateur concernant sa visite du Site, telles que les pages consultées, les recherches effectuées. Ces informations permettent à \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" d’améliorer le contenu du Site, de la navigation de l’Utilisateur. \")]),_c('p',[_vm._v(\" Les Cookies facilitant la navigation et/ou la fourniture des services proposés par le Site, l’Utilisateur peut configurer son navigateur pour qu’il lui permette de décider s’il souhaite ou non les accepter de manière à ce que des Cookies soient enregistrés dans le terminal ou, au contraire, qu’ils soient rejetés, soit systématiquement, soit selon leur émetteur. L’Utilisateur peut également configurer son logiciel de navigation de manière à ce que l’acceptation ou le refus des Cookies lui soient proposés ponctuellement, avant qu’un Cookie soit susceptible d’être enregistré dans son terminal. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" informe l’Utilisateur que, dans ce cas, il se peut que les fonctionnalités de son logiciel de navigation ne soient pas toutes disponibles. \")]),_c('p',[_vm._v(\" Si l’Utilisateur refuse l’enregistrement de Cookies dans son terminal ou son navigateur, ou si l’Utilisateur supprime ceux qui y sont enregistrés, l’Utilisateur est informé que sa navigation et son expérience sur le Site peuvent être limitées. Cela pourrait également être le cas lorsque \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ou l’un de ses prestataires ne peut pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par le terminal, les paramètres de langue et d’affichage ou le pays depuis lequel le terminal semble connecté à Internet. \")]),_c('p',[_vm._v(\" Le cas échéant, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" décline toute responsabilité pour les conséquences liées au fonctionnement dégradé du Site et des services éventuellement proposés par \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", résultant (i) du refus de Cookies par l’Utilisateur (ii) de l’impossibilité pour \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" d’enregistrer ou de consulter les Cookies nécessaires à leur fonctionnement du fait du choix de l’Utilisateur. Pour la gestion des Cookies et des choix de l’Utilisateur, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d’aide du navigateur, qui permettra de savoir de quelle manière l’Utilisateur peut modifier ses souhaits en matière de Cookies. \")]),_c('p',[_vm._v(\" À tout moment, l’Utilisateur peut faire le choix d’exprimer et de modifier ses souhaits en matière de Cookies. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" pourra en outre faire appel aux services de prestataires externes pour l’aider à recueillir et traiter les informations décrites dans cette section. \")]),_c('p',[_vm._v(\" Enfin, en cliquant sur les icônes dédiées aux réseaux sociaux Twitter, Facebook, Linkedin et Google Plus figurant sur le Site de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ou dans son application mobile et si l’Utilisateur a accepté le dépôt de cookies en poursuivant sa navigation sur le Site Internet ou l’application mobile de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", Twitter, Facebook, Linkedin et Google Plus peuvent également déposer des cookies sur vos terminaux (ordinateur, tablette, téléphone portable). \")]),_c('p',[_vm._v(\" Ces types de cookies ne sont déposés sur vos terminaux qu’à condition que vous y consentiez, en continuant votre navigation sur le Site Internet ou l’application mobile de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". À tout moment, l’Utilisateur peut néanmoins revenir sur son consentement à ce que \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" dépose ce type de cookies. \")]),_c('h3',[_vm._v(\"Article 9.2. BALISES (“TAGS”) INTERNET\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" peut employer occasionnellement des balises Internet (également appelées « tags », ou balises d’action, GIF à un pixel, GIF transparents, GIF invisibles et GIF un à un) et les déployer par l’intermédiaire d’un partenaire spécialiste d’analyses Web susceptible de se trouver (et donc de stocker les informations correspondantes, y compris l’adresse IP de l’Utilisateur) dans un pays étranger. \")]),_c('p',[_vm._v(\" Ces balises sont placées à la fois dans les publicités en ligne permettant aux internautes d’accéder au Site, et sur les différentes pages de celui-ci. \")]),_c('p',[_vm._v(\" Cette technologie permet à \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" d’évaluer les réponses des visiteurs face au Site et l’efficacité de ses actions (par exemple, le nombre de fois où une page est ouverte et les informations consultées), ainsi que l’utilisation de ce Site par l’Utilisateur. \")]),_c('p',[_vm._v(\" Le prestataire externe pourra éventuellement recueillir des informations sur les visiteurs du Site et d’autres sites Internet grâce à ces balises, constituer des rapports sur l’activité du Site à l’attention de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", et fournir d’autres services relatifs à l’utilisation de celui-ci et d’Internet. \")]),_c('p'),_c('h2',[_vm._v(\"10. Droit applicable et attribution de juridiction.\")]),_c('p',[_vm._v(\" Tout litige en relation avec l’utilisation du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est soumis au droit français. En dehors des cas où la loi ne le permet pas, il est fait attribution exclusive de juridiction aux tribunaux compétents de Lyon \")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <h2>Définitions</h2>\r\n    <p>\r\n      <b>Client :</b> tout professionnel ou personne physique capable au sens\r\n      des articles 1123 et suivants du Code civil, ou personne morale, qui\r\n      visite le Site objet des présentes conditions générales.<br />\r\n      <b>Prestations et Services :</b>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      met à disposition des Clients :\r\n    </p>\r\n\r\n    <p>\r\n      <b>Contenu :</b> Ensemble des éléments constituants l’information présente\r\n      sur le Site, notamment textes – images – vidéos.\r\n    </p>\r\n\r\n    <p>\r\n      <b>Informations clients :</b> Ci après dénommé « Information (s) » qui\r\n      correspondent à l’ensemble des données personnelles susceptibles d’être\r\n      détenues par\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      pour la gestion de votre compte, de la gestion de la relation client et à\r\n      des fins d’analyses et de statistiques.\r\n    </p>\r\n\r\n    <p>\r\n      <b>Utilisateur :</b> Internaute se connectant, utilisant le site susnommé.\r\n    </p>\r\n    <p>\r\n      <b>Informations personnelles :</b> « Les informations qui permettent, sous\r\n      quelque forme que ce soit, directement ou non, l'identification des\r\n      personnes physiques auxquelles elles s'appliquent » (article 4 de la loi\r\n      n° 78-17 du 6 janvier 1978).\r\n    </p>\r\n    <p>\r\n      Les termes « données à caractère personnel », « personne concernée », «\r\n      sous traitant » et « données sensibles » ont le sens défini par le\r\n      Règlement Général sur la Protection des Données (RGPD : n° 2016-679)\r\n    </p>\r\n\r\n    <h2>1. Présentation du site internet.</h2>\r\n    <p>\r\n      En vertu de l'article 6 de la loi n° 2004-575 du 21 juin 2004 pour la\r\n      confiance dans l'économie numérique, il est précisé aux utilisateurs du\r\n      site internet\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      l'identité des différents intervenants dans le cadre de sa réalisation et\r\n      de son suivi:\r\n    </p>\r\n    <p>\r\n      <strong>Propriétaire</strong> : Association loi 1901 Clubelek (Association\r\n      loi 1901) – INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne<br />\r\n\r\n      <strong>Responsable publication</strong> : Clubelek –\r\n      clubelek@insa-lyon.fr<br />\r\n      Le responsable publication est une personne physique ou une personne\r\n      morale.<br />\r\n      <strong>Webmaster</strong> : Antoine Rochebois –\r\n      antoine.rochebois@insa-lyon.fr<br />\r\n      <strong>Hébergeur</strong> : ovh – 2 rue Kellermann 59100 Roubaix 1007<br />\r\n      <strong>Délégué à la protection des données</strong> : Antoine Rochebois –\r\n      antoine.rochebois@insa-lyon.fr<br />\r\n    </p>\r\n\r\n    <div ng-bind-html=\"linkHTML\">\r\n      <p>\r\n        Ce modèle de mentions légales est proposé par le\r\n        <a\r\n          href=\"https://fr.orson.io/1371/generateur-mentions-legales\"\r\n          title=\"générateur gratuit offert par Orson.io\"\r\n          >générateur gratuit offert par Orson.io</a\r\n        >\r\n      </p>\r\n    </div>\r\n\r\n    <h2>\r\n      2. Conditions générales d’utilisation du site et des services proposés.\r\n    </h2>\r\n\r\n    <p>\r\n      Le Site constitue une œuvre de l’esprit protégée par les dispositions du\r\n      Code de la Propriété Intellectuelle et des Réglementations Internationales\r\n      applicables. Le Client ne peut en aucune manière réutiliser, céder ou\r\n      exploiter pour son propre compte tout ou partie des éléments ou travaux du\r\n      Site.\r\n    </p>\r\n\r\n    <p>\r\n      L’utilisation du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      implique l’acceptation pleine et entière des conditions générales\r\n      d’utilisation ci-après décrites. Ces conditions d’utilisation sont\r\n      susceptibles d’être modifiées ou complétées à tout moment, les\r\n      utilisateurs du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      sont donc invités à les consulter de manière régulière.\r\n    </p>\r\n\r\n    <p>\r\n      Ce site internet est normalement accessible à tout moment aux\r\n      utilisateurs. Une interruption pour raison de maintenance technique peut\r\n      être toutefois décidée par\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, qui s’efforcera alors de communiquer préalablement aux utilisateurs les\r\n      dates et heures de l’intervention. Le site web\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est mis à jour régulièrement par\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      responsable. De la même façon, les mentions légales peuvent être modifiées\r\n      à tout moment : elles s’imposent néanmoins à l’utilisateur qui est invité\r\n      à s’y référer le plus souvent possible afin d’en prendre connaissance.\r\n    </p>\r\n\r\n    <h2>3. Description des services fournis.</h2>\r\n\r\n    <p>\r\n      Le site internet\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      a pour objet de fournir une information concernant l’ensemble des\r\n      activités de la société.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’efforce de fournir sur le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      des informations aussi précises que possible. Toutefois, il ne pourra être\r\n      tenu responsable des oublis, des inexactitudes et des carences dans la\r\n      mise à jour, qu’elles soient de son fait ou du fait des tiers partenaires\r\n      qui lui fournissent ces informations.\r\n    </p>\r\n\r\n    <p>\r\n      Toutes les informations indiquées sur le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      sont données à titre indicatif, et sont susceptibles d’évoluer. Par\r\n      ailleurs, les renseignements figurant sur le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne sont pas exhaustifs. Ils sont donnés sous réserve de modifications\r\n      ayant été apportées depuis leur mise en ligne.\r\n    </p>\r\n\r\n    <h2>4. Limitations contractuelles sur les données techniques.</h2>\r\n\r\n    <p>\r\n      Le site utilise la technologie JavaScript. Le site Internet ne pourra être\r\n      tenu responsable de dommages matériels liés à l’utilisation du site. De\r\n      plus, l’utilisateur du site s’engage à accéder au site en utilisant un\r\n      matériel récent, ne contenant pas de virus et avec un navigateur de\r\n      dernière génération mis-à-jour Le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est hébergé chez un prestataire sur le territoire de l’Union Européenne\r\n      conformément aux dispositions du Règlement Général sur la Protection des\r\n      Données (RGPD : n° 2016-679)\r\n    </p>\r\n\r\n    <p>\r\n      L’objectif est d’apporter une prestation qui assure le meilleur taux\r\n      d’accessibilité. L’hébergeur assure la continuité de son service 24 Heures\r\n      sur 24, tous les jours de l’année. Il se réserve néanmoins la possibilité\r\n      d’interrompre le service d’hébergement pour les durées les plus courtes\r\n      possibles notamment à des fins de maintenance, d’amélioration de ses\r\n      infrastructures, de défaillance de ses infrastructures ou si les\r\n      Prestations et Services génèrent un trafic réputé anormal.\r\n    </p>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      et l’hébergeur ne pourront être tenus responsables en cas de\r\n      dysfonctionnement du réseau Internet, des lignes téléphoniques ou du\r\n      matériel informatique et de téléphonie lié notamment à l’encombrement du\r\n      réseau empêchant l’accès au serveur.\r\n    </p>\r\n\r\n    <h2>5. Propriété intellectuelle et contrefaçons.</h2>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est propriétaire des droits de propriété intellectuelle et détient les\r\n      droits d’usage sur tous les éléments accessibles sur le site internet,\r\n      notamment les textes, images, graphismes, logos, vidéos, icônes et sons.\r\n      Toute reproduction, représentation, modification, publication, adaptation\r\n      de tout ou partie des éléments du site, quel que soit le moyen ou le\r\n      procédé utilisé, est interdite, sauf autorisation écrite préalable de :\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >.\r\n    </p>\r\n\r\n    <p>\r\n      Toute exploitation non autorisée du site ou de l’un quelconque des\r\n      éléments qu’il contient sera considérée comme constitutive d’une\r\n      contrefaçon et poursuivie conformément aux dispositions des articles\r\n      L.335-2 et suivants du Code de Propriété Intellectuelle.\r\n    </p>\r\n\r\n    <h2>6. Limitations de responsabilité.</h2>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      agit en tant qu’éditeur du site.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est responsable de la qualité et de la véracité du Contenu qu’il publie.\r\n    </p>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne pourra être tenu responsable des dommages directs et indirects causés\r\n      au matériel de l’utilisateur, lors de l’accès au site internet\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, et résultant soit de l’utilisation d’un matériel ne répondant pas aux\r\n      spécifications indiquées au point 4, soit de l’apparition d’un bug ou\r\n      d’une incompatibilité.\r\n    </p>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne pourra également être tenu responsable des dommages indirects (tels par\r\n      exemple qu’une perte de marché ou perte d’une chance) consécutifs à\r\n      l’utilisation du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >. Des espaces interactifs (possibilité de poser des questions dans\r\n      l’espace contact) sont à la disposition des utilisateurs.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      se réserve le droit de supprimer, sans mise en demeure préalable, tout\r\n      contenu déposé dans cet espace qui contreviendrait à la législation\r\n      applicable en France, en particulier aux dispositions relatives à la\r\n      protection des données. Le cas échéant,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      se réserve également la possibilité de mettre en cause la responsabilité\r\n      civile et/ou pénale de l’utilisateur, notamment en cas de message à\r\n      caractère raciste, injurieux, diffamant, ou pornographique, quel que soit\r\n      le support utilisé (texte, photographie …).\r\n    </p>\r\n\r\n    <h2>7. Gestion des données personnelles.</h2>\r\n\r\n    <p>\r\n      Le Client est informé des réglementations concernant la communication\r\n      marketing, la loi du 21 Juin 2014 pour la confiance dans l’Economie\r\n      Numérique, la Loi Informatique et Liberté du 06 Août 2004 ainsi que du\r\n      Règlement Général sur la Protection des Données (RGPD : n° 2016-679).\r\n    </p>\r\n\r\n    <h3>7.1 Responsables de la collecte des données personnelles</h3>\r\n\r\n    <p>\r\n      Pour les Données Personnelles collectées dans le cadre de la création du\r\n      compte personnel de l’Utilisateur et de sa navigation sur le Site, le\r\n      responsable du traitement des Données Personnelles est : Clubelek\r\n      (Association loi 1901).\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >est représenté par Thomas Vadebout, son représentant légal\r\n    </p>\r\n\r\n    <p>\r\n      En tant que responsable du traitement des données qu’il collecte,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’engage à respecter le cadre des dispositions légales en vigueur. Il lui\r\n      appartient notamment au Client d’établir les finalités de ses traitements\r\n      de données, de fournir à ses prospects et clients, à partir de la collecte\r\n      de leurs consentements, une information complète sur le traitement de\r\n      leurs données personnelles et de maintenir un registre des traitements\r\n      conforme à la réalité. Chaque fois que\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      traite des Données Personnelles,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      prend toutes les mesures raisonnables pour s’assurer de l’exactitude et de\r\n      la pertinence des Données Personnelles au regard des finalités pour\r\n      lesquelles\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      les traite.\r\n    </p>\r\n\r\n    <h3>7.2 Finalité des données collectées</h3>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est susceptible de traiter tout ou partie des données :\r\n    </p>\r\n\r\n    <ul>\r\n      <li>\r\n        pour permettre la navigation sur le Site et la gestion et la traçabilité\r\n        des prestations et services commandés par l’utilisateur : données de\r\n        connexion et d’utilisation du Site, facturation, historique des\r\n        commandes, etc.\r\n      </li>\r\n\r\n      <li>\r\n        pour prévenir et lutter contre la fraude informatique (spamming,\r\n        hacking…) : matériel informatique utilisé pour la navigation, l’adresse\r\n        IP, le mot de passe (hashé)\r\n      </li>\r\n\r\n      <li>\r\n        pour améliorer la navigation sur le Site : données de connexion et\r\n        d’utilisation\r\n      </li>\r\n\r\n      <li>\r\n        pour mener des enquêtes de satisfaction facultatives sur\r\n        <a href=\"https://escape-game-dd.clubelek.fr\"\r\n          >https://escape-game-dd.clubelek.fr</a\r\n        >\r\n        : adresse email\r\n      </li>\r\n      <li>\r\n        pour mener des campagnes de communication (sms, mail) : numéro de\r\n        téléphone, adresse email\r\n      </li>\r\n    </ul>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne commercialise pas vos données personnelles qui sont donc uniquement\r\n      utilisées par nécessité ou à des fins statistiques et d’analyses.\r\n    </p>\r\n\r\n    <h3>7.3 Droit d’accès, de rectification et d’opposition</h3>\r\n\r\n    <p>\r\n      Conformément à la réglementation européenne en vigueur, les Utilisateurs\r\n      de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      disposent des droits suivants :\r\n    </p>\r\n    <ul>\r\n      <li>\r\n        droit d'accès (article 15 RGPD) et de rectification (article 16 RGPD),\r\n        de mise à jour, de complétude des données des Utilisateurs droit de\r\n        verrouillage ou d’effacement des données des Utilisateurs à caractère\r\n        personnel (article 17 du RGPD), lorsqu’elles sont inexactes,\r\n        incomplètes, équivoques, périmées, ou dont la collecte, l'utilisation,\r\n        la communication ou la conservation est interdite\r\n      </li>\r\n\r\n      <li>\r\n        droit de retirer à tout moment un consentement (article 13-2c RGPD)\r\n      </li>\r\n\r\n      <li>\r\n        droit à la limitation du traitement des données des Utilisateurs\r\n        (article 18 RGPD)\r\n      </li>\r\n\r\n      <li>\r\n        droit d’opposition au traitement des données des Utilisateurs (article\r\n        21 RGPD)\r\n      </li>\r\n\r\n      <li>\r\n        droit à la portabilité des données que les Utilisateurs auront fournies,\r\n        lorsque ces données font l’objet de traitements automatisés fondés sur\r\n        leur consentement ou sur un contrat (article 20 RGPD)\r\n      </li>\r\n\r\n      <li>\r\n        droit de définir le sort des données des Utilisateurs après leur mort et\r\n        de choisir à qui\r\n        <a href=\"https://escape-game-dd.clubelek.fr\"\r\n          >https://escape-game-dd.clubelek.fr</a\r\n        >\r\n        devra communiquer (ou non) ses données à un tiers qu’ils aura\r\n        préalablement désigné\r\n      </li>\r\n    </ul>\r\n\r\n    <p>\r\n      Dès que\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      a connaissance du décès d’un Utilisateur et à défaut d’instructions de sa\r\n      part,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’engage à détruire ses données, sauf si leur conservation s’avère\r\n      nécessaire à des fins probatoires ou pour répondre à une obligation\r\n      légale.\r\n    </p>\r\n\r\n    <p>\r\n      Si l’Utilisateur souhaite savoir comment\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      utilise ses Données Personnelles, demander à les rectifier ou s’oppose à\r\n      leur traitement, l’Utilisateur peut contacter\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      par écrit à l’adresse suivante :\r\n    </p>\r\n\r\n    Clubelek (Association loi 1901) – DPO, Antoine Rochebois <br />\r\n    INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne.\r\n\r\n    <p>\r\n      Dans ce cas, l’Utilisateur doit indiquer les Données Personnelles qu’il\r\n      souhaiterait que\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      corrige, mette à jour ou supprime, en s’identifiant précisément avec une\r\n      copie d’une pièce d’identité (carte d’identité ou passeport).\r\n    </p>\r\n\r\n    <p>\r\n      Les demandes de suppression de Données Personnelles seront soumises aux\r\n      obligations qui sont imposées à\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      par la loi, notamment en matière de conservation ou d’archivage des\r\n      documents. Enfin, les Utilisateurs de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      peuvent déposer une réclamation auprès des autorités de contrôle, et\r\n      notamment de la CNIL (https://www.cnil.fr/fr/plaintes).\r\n    </p>\r\n\r\n    <h3>7.4 Non-communication des données personnelles</h3>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’interdit de traiter, héberger ou transférer les Informations collectées\r\n      sur ses Clients vers un pays situé en dehors de l’Union européenne ou\r\n      reconnu comme « non adéquat » par la Commission européenne sans en\r\n      informer préalablement le client. Pour autant,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      reste libre du choix de ses sous-traitants techniques et commerciaux à la\r\n      condition qu’il présentent les garanties suffisantes au regard des\r\n      exigences du Règlement Général sur la Protection des Données (RGPD : n°\r\n      2016-679).\r\n    </p>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’engage à prendre toutes les précautions nécessaires afin de préserver la\r\n      sécurité des Informations et notamment qu’elles ne soient pas communiquées\r\n      à des personnes non autorisées. Cependant, si un incident impactant\r\n      l’intégrité ou la confidentialité des Informations du Client est portée à\r\n      la connaissance de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, celle-ci devra dans les meilleurs délais informer le Client et lui\r\n      communiquer les mesures de corrections prises. Par ailleurs\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne collecte aucune « données sensibles ».\r\n    </p>\r\n\r\n    <p>\r\n      Les Données Personnelles de l’Utilisateur peuvent être traitées par des\r\n      filiales de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      et des sous-traitants (prestataires de services), exclusivement afin de\r\n      réaliser les finalités de la présente politique.\r\n    </p>\r\n    <p>\r\n      Dans la limite de leurs attributions respectives et pour les finalités\r\n      rappelées ci-dessus, les principales personnes susceptibles d’avoir accès\r\n      aux données des Utilisateurs de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      sont principalement les agents de notre service client.\r\n    </p>\r\n\r\n    <div ng-bind-html=\"rgpdHTML\"></div>\r\n\r\n    <h2>8. Notification d’incident</h2>\r\n    <p>\r\n      Quels que soient les efforts fournis, aucune méthode de transmission sur\r\n      Internet et aucune méthode de stockage électronique n'est complètement\r\n      sûre. Nous ne pouvons en conséquence pas garantir une sécurité absolue. Si\r\n      nous prenions connaissance d'une brèche de la sécurité, nous avertirions\r\n      les utilisateurs concernés afin qu'ils puissent prendre les mesures\r\n      appropriées. Nos procédures de notification d’incident tiennent compte de\r\n      nos obligations légales, qu'elles se situent au niveau national ou\r\n      européen. Nous nous engageons à informer pleinement nos clients de toutes\r\n      les questions relevant de la sécurité de leur compte et à leur fournir\r\n      toutes les informations nécessaires pour les aider à respecter leurs\r\n      propres obligations réglementaires en matière de reporting.\r\n    </p>\r\n    <p>\r\n      Aucune information personnelle de l'utilisateur du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      n'est publiée à l'insu de l'utilisateur, échangée, transférée, cédée ou\r\n      vendue sur un support quelconque à des tiers. Seule l'hypothèse du rachat\r\n      de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      et de ses droits permettrait la transmission des dites informations à\r\n      l'éventuel acquéreur qui serait à son tour tenu de la même obligation de\r\n      conservation et de modification des données vis à vis de l'utilisateur du\r\n      site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >.\r\n    </p>\r\n\r\n    <h3>Sécurité</h3>\r\n\r\n    <p>\r\n      Pour assurer la sécurité et la confidentialité des Données Personnelles et\r\n      des Données Personnelles de Santé,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      utilise des réseaux protégés par des dispositifs standards tels que par\r\n      pare-feu, la pseudonymisation, l’encryption et mot de passe.\r\n    </p>\r\n\r\n    <p>\r\n      Lors du traitement des Données Personnelles,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >prend toutes les mesures raisonnables visant à les protéger contre toute\r\n      perte, utilisation détournée, accès non autorisé, divulgation, altération\r\n      ou destruction.\r\n    </p>\r\n\r\n    <h2>9. Liens hypertextes « cookies » et balises (“tags”) internet</h2>\r\n    <p>\r\n      Le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      contient un certain nombre de liens hypertextes vers d’autres sites, mis\r\n      en place avec l’autorisation de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >. Cependant,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      n’a pas la possibilité de vérifier le contenu des sites ainsi visités, et\r\n      n’assumera en conséquence aucune responsabilité de ce fait.\r\n    </p>\r\n    Sauf si vous décidez de désactiver les cookies, vous acceptez que le site\r\n    puisse les utiliser. Vous pouvez à tout moment désactiver ces cookies et ce\r\n    gratuitement à partir des possibilités de désactivation qui vous sont\r\n    offertes et rappelées ci-après, sachant que cela peut réduire ou empêcher\r\n    l’accessibilité à tout ou partie des Services proposés par le site.\r\n    <p></p>\r\n\r\n    <h3>9.1. « COOKIES »</h3>\r\n    <p>\r\n      Un « cookie » est un petit fichier d’information envoyé sur le navigateur\r\n      de l’Utilisateur et enregistré au sein du terminal de l’Utilisateur (ex :\r\n      ordinateur, smartphone), (ci-après « Cookies »). Ce fichier comprend des\r\n      informations telles que le nom de domaine de l’Utilisateur, le fournisseur\r\n      d’accès Internet de l’Utilisateur, le système d’exploitation de\r\n      l’Utilisateur, ainsi que la date et l’heure d’accès. Les Cookies ne\r\n      risquent en aucun cas d’endommager le terminal de l’Utilisateur.\r\n    </p>\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est susceptible de traiter les informations de l’Utilisateur concernant sa\r\n      visite du Site, telles que les pages consultées, les recherches\r\n      effectuées. Ces informations permettent à\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      d’améliorer le contenu du Site, de la navigation de l’Utilisateur.\r\n    </p>\r\n    <p>\r\n      Les Cookies facilitant la navigation et/ou la fourniture des services\r\n      proposés par le Site, l’Utilisateur peut configurer son navigateur pour\r\n      qu’il lui permette de décider s’il souhaite ou non les accepter de manière\r\n      à ce que des Cookies soient enregistrés dans le terminal ou, au contraire,\r\n      qu’ils soient rejetés, soit systématiquement, soit selon leur émetteur.\r\n      L’Utilisateur peut également configurer son logiciel de navigation de\r\n      manière à ce que l’acceptation ou le refus des Cookies lui soient proposés\r\n      ponctuellement, avant qu’un Cookie soit susceptible d’être enregistré dans\r\n      son terminal.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      informe l’Utilisateur que, dans ce cas, il se peut que les fonctionnalités\r\n      de son logiciel de navigation ne soient pas toutes disponibles.\r\n    </p>\r\n    <p>\r\n      Si l’Utilisateur refuse l’enregistrement de Cookies dans son terminal ou\r\n      son navigateur, ou si l’Utilisateur supprime ceux qui y sont enregistrés,\r\n      l’Utilisateur est informé que sa navigation et son expérience sur le Site\r\n      peuvent être limitées. Cela pourrait également être le cas lorsque\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ou l’un de ses prestataires ne peut pas reconnaître, à des fins de\r\n      compatibilité technique, le type de navigateur utilisé par le terminal,\r\n      les paramètres de langue et d’affichage ou le pays depuis lequel le\r\n      terminal semble connecté à Internet.\r\n    </p>\r\n    <p>\r\n      Le cas échéant,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      décline toute responsabilité pour les conséquences liées au fonctionnement\r\n      dégradé du Site et des services éventuellement proposés par\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, résultant (i) du refus de Cookies par l’Utilisateur (ii) de\r\n      l’impossibilité pour\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      d’enregistrer ou de consulter les Cookies nécessaires à leur\r\n      fonctionnement du fait du choix de l’Utilisateur. Pour la gestion des\r\n      Cookies et des choix de l’Utilisateur, la configuration de chaque\r\n      navigateur est différente. Elle est décrite dans le menu d’aide du\r\n      navigateur, qui permettra de savoir de quelle manière l’Utilisateur peut\r\n      modifier ses souhaits en matière de Cookies.\r\n    </p>\r\n    <p>\r\n      À tout moment, l’Utilisateur peut faire le choix d’exprimer et de modifier\r\n      ses souhaits en matière de Cookies.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      pourra en outre faire appel aux services de prestataires externes pour\r\n      l’aider à recueillir et traiter les informations décrites dans cette\r\n      section.\r\n    </p>\r\n    <p>\r\n      Enfin, en cliquant sur les icônes dédiées aux réseaux sociaux Twitter,\r\n      Facebook, Linkedin et Google Plus figurant sur le Site de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ou dans son application mobile et si l’Utilisateur a accepté le dépôt de\r\n      cookies en poursuivant sa navigation sur le Site Internet ou l’application\r\n      mobile de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, Twitter, Facebook, Linkedin et Google Plus peuvent également déposer\r\n      des cookies sur vos terminaux (ordinateur, tablette, téléphone portable).\r\n    </p>\r\n    <p>\r\n      Ces types de cookies ne sont déposés sur vos terminaux qu’à condition que\r\n      vous y consentiez, en continuant votre navigation sur le Site Internet ou\r\n      l’application mobile de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >. À tout moment, l’Utilisateur peut néanmoins revenir sur son\r\n      consentement à ce que\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      dépose ce type de cookies.\r\n    </p>\r\n\r\n    <h3>Article 9.2. BALISES (“TAGS”) INTERNET</h3>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      peut employer occasionnellement des balises Internet (également appelées «\r\n      tags », ou balises d’action, GIF à un pixel, GIF transparents, GIF\r\n      invisibles et GIF un à un) et les déployer par l’intermédiaire d’un\r\n      partenaire spécialiste d’analyses Web susceptible de se trouver (et donc\r\n      de stocker les informations correspondantes, y compris l’adresse IP de\r\n      l’Utilisateur) dans un pays étranger.\r\n    </p>\r\n\r\n    <p>\r\n      Ces balises sont placées à la fois dans les publicités en ligne permettant\r\n      aux internautes d’accéder au Site, et sur les différentes pages de\r\n      celui-ci.\r\n    </p>\r\n    <p>\r\n      Cette technologie permet à\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      d’évaluer les réponses des visiteurs face au Site et l’efficacité de ses\r\n      actions (par exemple, le nombre de fois où une page est ouverte et les\r\n      informations consultées), ainsi que l’utilisation de ce Site par\r\n      l’Utilisateur.\r\n    </p>\r\n    <p>\r\n      Le prestataire externe pourra éventuellement recueillir des informations\r\n      sur les visiteurs du Site et d’autres sites Internet grâce à ces balises,\r\n      constituer des rapports sur l’activité du Site à l’attention de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, et fournir d’autres services relatifs à l’utilisation de celui-ci et\r\n      d’Internet.\r\n    </p>\r\n    <p></p>\r\n    <h2>10. Droit applicable et attribution de juridiction.</h2>\r\n    <p>\r\n      Tout litige en relation avec l’utilisation du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est soumis au droit français. En dehors des cas où la loi ne le permet\r\n      pas, il est fait attribution exclusive de juridiction aux tribunaux\r\n      compétents de Lyon\r\n    </p>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"MentionsLegales\"\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionsLegales.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionsLegales.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MentionsLegales.vue?vue&type=template&id=a990db8a&scoped=true&\"\nimport script from \"./MentionsLegales.vue?vue&type=script&lang=js&\"\nexport * from \"./MentionsLegales.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"a990db8a\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"text\",\"placeholder\":\"Identifiant\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._m(0)])]),_c('br'),_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"password\",\"placeholder\":\"Mot de passe\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._m(1)])]),_c('br'),_vm._m(2)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-user\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-lock\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('button',{staticClass:\"button is-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Se connecter\")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <form @submit.prevent=\"login\">\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            class=\"input is-primary\"\r\n            type=\"text\"\r\n            v-model=\"username\"\r\n            placeholder=\"Identifiant\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-user\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            type=\"password\"\r\n            class=\"input is-primary\"\r\n            v-model=\"password\"\r\n            placeholder=\"Mot de passe\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-lock\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div>\r\n        <button class=\"button is-primary\" type=\"submit\">Se connecter</button>\r\n      </div>\r\n    </form>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"Login\",\r\n  data() {\r\n    return {\r\n      username: \"\",\r\n      password: \"\"\r\n    };\r\n  },\r\n  methods: {\r\n    login() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + \"/login\";\r\n      this.axios\r\n        .post(\r\n          uri,\r\n          { username: this.username, password: this.password },\r\n          { withCredentials: true }\r\n        )\r\n        .then(response => {\r\n          console.log(response);\r\n          this.$store.commit(\"login\", response.data);\r\n          this.$router.push(\"/school\");\r\n        });\r\n    }\r\n  }\r\n};\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=265126be&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.register($event)}}},[_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"text\",\"placeholder\":\"Identifiant\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._m(0)])]),_c('br'),_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.schoolName),expression:\"schoolName\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"text\",\"placeholder\":\"Nom de l'établissement\"},domProps:{\"value\":(_vm.schoolName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.schoolName=$event.target.value}}}),_vm._m(1)])]),_c('br'),_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"password\",\"placeholder\":\"Mot de passe\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._m(2)])]),_c('br'),_vm._m(3)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-user\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-school\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-lock\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('button',{staticClass:\"button is-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"S'inscire\")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <form @submit.prevent=\"register\">\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            class=\"input is-primary\"\r\n            type=\"text\"\r\n            v-model=\"username\"\r\n            placeholder=\"Identifiant\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-user\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            class=\"input is-primary\"\r\n            type=\"text\"\r\n            v-model=\"schoolName\"\r\n            placeholder=\"Nom de l'établissement\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-school\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            type=\"password\"\r\n            class=\"input is-primary\"\r\n            v-model=\"password\"\r\n            placeholder=\"Mot de passe\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-lock\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div>\r\n        <button class=\"button is-primary\" type=\"submit\">S'inscire</button>\r\n      </div>\r\n    </form>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"Login\",\r\n  data() {\r\n    return {\r\n      username: \"\",\r\n      schoolName: \"\",\r\n      password: \"\"\r\n    };\r\n  },\r\n  methods: {\r\n    register() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + \"/register\";\r\n      this.axios\r\n        .post(\r\n          uri,\r\n          {\r\n            username: this.username,\r\n            schoolName: this.schoolName,\r\n            password: this.password\r\n          },\r\n          { withCredentials: true }\r\n        )\r\n        .then(response => {\r\n          console.log(response);\r\n          this.$router.push(\"/login\");\r\n        });\r\n    }\r\n  }\r\n};\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Register.vue?vue&type=template&id=41b4256c&\"\nimport script from \"./Register.vue?vue&type=script&lang=js&\"\nexport * from \"./Register.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\"},[_c('div',{staticClass:\"message is-warning\"},[_vm._m(0),_c('div',{staticClass:\"message-body\"},[_c('p',[_vm._v(\"Entrez un objet JSON valide dans le champs ci-dessous pour l'écrire sur le tag NFC présenté au lecteur. Attention à ne pas dépasser la longueur mémoire maximale de votre tag !\")]),_c('div',{ref:\"editor\",staticClass:\"language-js\"}),_c('div',[_c('p',[_vm._v(\"Longueur : \"+_vm._s(_vm.jsonText.length))]),_c('p',{class:_vm.isJsonTextValid ? 'has-text-success' : 'has-text-danger'},[_c('strong',[_vm._v(\"JSON généré : \")]),_vm._v(_vm._s(_vm.jsonText))])]),_c('button',{staticClass:\"button is-warning\",attrs:{\"disabled\":!_vm.isJsonTextValid}},[_vm._m(1)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message-header\"},[_c('p',[_vm._v(\"Encodeur de TAG/cartes NFC (outil de développement)\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-upload\"}),_vm._v(\" Ecrire sur la carte/le tag\")])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"section\">\r\n    <div class=\"message is-warning\">\r\n      <div class=\"message-header\">\r\n        <p>Encodeur de TAG/cartes NFC (outil de développement)</p>\r\n      </div>\r\n      <div class=\"message-body\">\r\n        <p>Entrez un objet JSON valide dans le champs ci-dessous pour l'écrire sur le tag NFC présenté au lecteur. Attention à ne pas dépasser la longueur mémoire maximale de votre tag !</p>\r\n        <div ref=\"editor\" class=\"language-js\"></div>\r\n        <div>\r\n          <p>Longueur : {{jsonText.length}}</p>\r\n          <p :class=\"isJsonTextValid ? 'has-text-success' : 'has-text-danger'\"><strong>JSON généré : </strong>{{jsonText}}</p>\r\n        </div>\r\n        <button class = \"button is-warning\" :disabled=\"!isJsonTextValid\"><span><i class=\"fas fa-upload\"></i> Ecrire sur la carte/le tag</span></button>\r\n      </div>\r\n    </div>\r\n    \r\n    \r\n\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport {CodeJar} from 'codejar';\r\nimport {withLineNumbers} from 'codejar/linenumbers';\r\nimport Prism from 'prismjs';\r\nimport 'prismjs/themes/prism.css'\r\nexport default {\r\n  name: \"Encoder\",\r\n  components: {},\r\n  data() {\r\n    return {\r\n      jsonText : \"\"\r\n    }\r\n  },\r\n\r\n  computed : {\r\n    isJsonTextValid : function() {\r\n        try {\r\n            JSON.parse(this.jsonText);\r\n            return true;\r\n        } catch (e) {\r\n            return false;\r\n        }\r\n    }   \r\n  },\r\n\r\n  mounted() {\r\n     const sampleCode = `{\\n \\t \"type\" : \"<objet ? carte ?>\", \\n \\t \"puzzle\" : \"<nom d'énigme>\", \\n \\t custom params...\\n}`;\r\n     this.jsonText = sampleCode;\r\n     const node =  this.$refs.editor;\r\n     const jar = CodeJar(node, withLineNumbers(Prism.highlightElement));\r\n     jar.onUpdate(code => {\r\n       try {\r\n          var jsonObject = JSON.parse(code);\r\n          this.jsonText = JSON.stringify(jsonObject, null, 0)\r\n       } catch (e) {\r\n         this.jsonText = code;\r\n       }\r\n       \r\n       \r\n     })\r\n     jar.updateCode(sampleCode);\r\n     \r\n  }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Encoder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Encoder.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Encoder.vue?vue&type=template&id=7c9e39cd&scoped=true&\"\nimport script from \"./Encoder.vue?vue&type=script&lang=js&\"\nexport * from \"./Encoder.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7c9e39cd\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[(_vm.globalScore >= 0)?_c('div',{staticClass:\"has-text-centered\"},[_c('p',{staticClass:\"is-size-4 m-0\"},[_vm._v(\"Score total :\")]),_c('p',{staticClass:\"is-size-1 m-0\",staticStyle:{\"color\":\"green\"}},[_vm._v(\"🔥 \"+_vm._s(_vm.globalScore)+\" 🔥\")]),_c('p',{staticClass:\"is-size-3 mb-6\"},[_vm._v(\"🥳 Félicitations ! 🥳\")])]):_vm._e(),(this.team.name.length > 0)?_c('article',{staticClass:\"message is-success\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" 🏁 Résultats de l'équipe \\\"\"+_vm._s(_vm.team.name)+\"\\\" (\"+_vm._s(_vm.memberCount)+\" membres) 🏁 \")]),_c('div',{staticClass:\"message-body\"},[_c('div',[_vm._m(0),_c('ul',_vm._l((_vm.team.members),function(member){return _c('li',{key:member},[_vm._v(_vm._s(member))])}),0)]),_c('div',[(_vm.team.donePuzzles.length > 0)?_c('p',{staticClass:\"is-size-4\"},[_c('strong',[_vm._v(\"Puzzles effectués :\")])]):_vm._e(),_vm._l((_vm.team.donePuzzles),function(puzzle){return _c('div',{key:puzzle.name},[(puzzle.score)?_c('div',{staticClass:\"level\"},[_c('div',{staticClass:\"level-item level-left\"},[_c('p',[_c('strong',[_vm._v(_vm._s(puzzle.name))]),_vm._v(\" (\"+_vm._s(puzzle.room)+\") : \")])]),_c('div',{staticClass:\"level-item level-right\"},[_c('progress',{staticClass:\"progress is-small\",attrs:{\"max\":puzzle.maxScore},domProps:{\"value\":puzzle.score}})]),_c('div',{staticClass:\"level-item level-right\"},[_c('p',[_vm._v(_vm._s(puzzle.score)+\"/\"+_vm._s(puzzle.maxScore))])])]):_c('div',{staticClass:\"level \"},[_c('div',{staticClass:\"level-item level-left\"},[_c('p',[_c('strong',[_vm._v(_vm._s(puzzle.name))]),_vm._v(\" (\"+_vm._s(puzzle.room)+\") : \")])]),_c('div',{staticClass:\"level-item level-right\"},[(puzzle.validated)?_c('span',{staticClass:\"icon has-text-success\"},[_c('i',{staticClass:\"fas fa-check-circle\"})]):_c('span',{staticClass:\"icon has-text-danger\"},[_c('i',{staticClass:\"fas fa-times-circle\"})])])])])})],2)])]):_vm._e(),_c('article',{staticClass:\"container has-text-centered\"},[_c('p',{staticClass:\"is-size-4\"},[_vm._v(\"🏁 Merci de scanner une carte d'équipe pour afficher et enregistrer des résultats 🏁\")]),_c('button',{staticClass:\"button is-primary is-large is-fullwidth\",on:{\"click\":function($event){return _vm.manageCardReading()}}},[_c('i',{staticClass:\"fas fa-download\"}),_vm._v(\" Scanner la carte de l'équipe !\")])]),_c('div',{staticClass:\"modal\",class:{ 'is-active': _vm.showPairingModal }},[_c('div',{staticClass:\"modal-background\"}),_vm._m(1),_c('button',{staticClass:\"modal-close is-large\",on:{\"click\":function($event){_vm.showPairingModal = false}}})])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"is-size-4\"},[_c('strong',[_vm._v(\"Membres de l'équipe :\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"message\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" Lecture d'une carte NFC d'équipe \")]),_c('div',{staticClass:\"message-body\"},[_vm._v(\" Veuillez scanner une carte sur le lecteur pour charger ses résultats équipe. \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <div v-if=\"globalScore >= 0\" class=\"has-text-centered\">\r\n      <p class = \"is-size-4 m-0\">Score total :</p>\r\n      <p class = \"is-size-1 m-0\" style=\"color:green;\">🔥  {{globalScore}}  🔥</p>\r\n      <p class = \"is-size-3 mb-6\">🥳  Félicitations ! 🥳</p>\r\n    </div>\r\n\r\n    <article v-if=\"this.team.name.length > 0\" class=\"message is-success\">\r\n      <div class=\"message-header\">\r\n        🏁 Résultats de l'équipe \"{{ team.name }}\" ({{ memberCount }} membres) 🏁\r\n      </div>\r\n      <div class=\"message-body\">\r\n        <div>\r\n            <p class=\"is-size-4\"><strong>Membres de l'équipe :</strong></p>\r\n            <ul>\r\n              <li v-for=\"member in team.members\" :key=\"member\">{{ member }}</li>\r\n            </ul>\r\n        </div>\r\n        <div>\r\n          <p v-if=\"team.donePuzzles.length > 0\" class=\"is-size-4\">\r\n            <strong>Puzzles effectués :</strong>\r\n          </p>\r\n          <div v-for=\"puzzle in team.donePuzzles\" :key=\"puzzle.name\">\r\n            <div class=\"level\" v-if=\"puzzle.score\">\r\n              <div class=\"level-item level-left\">\r\n                <p>\r\n                  <strong>{{ puzzle.name }}</strong> ({{ puzzle.room }}) :\r\n                </p>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <progress\r\n                  class=\"progress is-small\"\r\n                  :value=\"puzzle.score\"\r\n                  :max=\"puzzle.maxScore\"\r\n                ></progress>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <p>{{ puzzle.score }}/{{ puzzle.maxScore }}</p>\r\n              </div>\r\n            </div>\r\n            <div v-else class=\"level \">\r\n              <div class=\"level-item level-left\">\r\n                <p>\r\n                  <strong>{{ puzzle.name }}</strong> ({{ puzzle.room }}) :\r\n                </p>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <span v-if=\"puzzle.validated\" class=\"icon has-text-success\">\r\n                  <i class=\"fas fa-check-circle\"></i>\r\n                </span>\r\n                <span v-else class=\"icon has-text-danger\">\r\n                  <i class=\"fas fa-times-circle\"></i>\r\n                </span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </article>\r\n    <article class=\"container has-text-centered\">\r\n      <p class=\"is-size-4\">🏁  Merci de scanner une carte d'équipe pour afficher et enregistrer des résultats  🏁</p>\r\n      <button class=\"button is-primary is-large is-fullwidth\" @click=\"manageCardReading()\"><i class=\"fas fa-download\"></i> Scanner la carte de l'équipe !</button>\r\n    </article>\r\n\r\n    <div class=\"modal\" :class=\"{ 'is-active': showPairingModal }\">\r\n        <div class=\"modal-background\"></div>\r\n        <div class=\"modal-content\">\r\n          <div class=\"message\">\r\n            <div class=\"message-header\">\r\n              Lecture d'une carte NFC d'équipe\r\n            </div>\r\n            <div class=\"message-body\">\r\n              Veuillez scanner une carte sur le lecteur pour charger ses résultats\r\n              équipe.\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <button\r\n          class=\"modal-close is-large\"\r\n          @click=\"showPairingModal = false\"\r\n        ></button>\r\n      </div>\r\n\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport puzzleJson from '../puzzles.json'\r\nexport default {\r\n  name: \"ResultDisplay\",\r\n\r\n  data() {\r\n    return {\r\n      showPairingModal: false,\r\n      puzzles: puzzleJson,\r\n      team : { name: \"\", members: [], donePuzzles : [] },\r\n      globalScore: -1\r\n    };\r\n  },\r\n\r\n  computed: {\r\n    memberCount: function() {\r\n      return this.team.members.length;\r\n    }\r\n  },\r\n\r\n  methods: {\r\n    manageCardReading() {\r\n      this.showPairingModal = true;\r\n      this.$parent.usbNfcReader.readCard().then(cardContent=> {\r\n        this.$parent.usbNfcReader.readTagUid().then(tagUid => {\r\n          this.team = { name: \"\", members: [], donePuzzles : [] }\r\n          let resultsStr = cardContent.split(';')\r\n          resultsStr.shift()\r\n          resultsStr.pop()\r\n          if (resultsStr.length == 0) {\r\n            console.log(\"Carte vierge de toute épreuve !\")\r\n            return;\r\n          }\r\n          resultsStr.forEach(resultStr => {\r\n            let resShort = resultStr.split('_')[0]\r\n            let score = resultStr.split('_')[1]\r\n            let puzzle = this.puzzles[resShort]\r\n            var donePuzzle = {name: puzzle.name, room:puzzle.room, coef:puzzle.coef}\r\n            if (puzzle.type == \"boolean\") {\r\n              if (score >= 1) donePuzzle.validated = true;\r\n              else donePuzzle.validated = false;\r\n            } else if (puzzle.type == \"number\") {\r\n              donePuzzle.maxScore = puzzle.maxScore;\r\n              donePuzzle.score = score\r\n            }\r\n            this.team.donePuzzles.push(donePuzzle)\r\n          });\r\n          console.log(this.team.donePuzzles)\r\n          var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n          let uri = domainName + \"/school/updateTeamPuzzles/\" + tagUid;\r\n          let uriGet = domainName + \"/school/getTeamByCardID/\" + tagUid;\r\n          this.axios.post(uri, this.team.donePuzzles, { withCredentials: true }).then(() => {\r\n            console.log(\"Score ajouté à la BD !\");\r\n            this.axios.get(uriGet, { withCredentials: true }).then((response) => {\r\n              this.team = response.data[0]\r\n              this.globalScore = 0\r\n              this.team.donePuzzles.forEach(puzzle => {\r\n                if (puzzle.score)\r\n                  this.globalScore += parseInt(puzzle.coef)*parseInt(puzzle.score)\r\n                else if (puzzle.validated)\r\n                this.globalScore += parseInt(puzzle.coef)\r\n                \r\n              });\r\n              this.showPairingModal = false\r\n            });\r\n          });\r\n        });\r\n      });\r\n    }\r\n  }\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResultsDisplay.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResultsDisplay.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResultsDisplay.vue?vue&type=template&id=9924b722&scoped=true&\"\nimport script from \"./ResultsDisplay.vue?vue&type=script&lang=js&\"\nexport * from \"./ResultsDisplay.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"9924b722\",\n  null\n  \n)\n\nexport default component.exports","import Vue from \"vue\";\r\nimport Vuex from \"vuex\";\r\nimport createPersistedState from \"vuex-persistedstate\";\r\nimport VueRouter from \"vue-router\";\r\nimport App from \"./App.vue\";\r\nimport VueAxios from \"vue-axios\";\r\nimport axios from \"axios\";\r\n\r\n\r\nimport HomeComponent from \"./components/HomeComponent.vue\";\r\nimport SchoolManager from \"./components/SchoolManager.vue\";\r\nimport MentionsLegales from \"./components/MentionsLegales.vue\";\r\nimport Login from \"./components/Login.vue\";\r\nimport Register from \"./components/Register.vue\";\r\nimport Encoder from \"./components/Encoder.vue\";\r\nimport ResultsDisplay from \"./components/ResultsDisplay.vue\";\r\nrequire(\"@/assets/main.scss\");\r\nimport \"@fortawesome/fontawesome-free/css/all.css\";\r\nimport \"@fortawesome/fontawesome-free/js/all.js\";\r\n\r\nVue.use(VueRouter);\r\nVue.use(Vuex);\r\nVue.use(VueAxios, axios);\r\n\r\nVue.config.productionTip = false;\r\n\r\n\r\nconst routes = [\r\n  {\r\n    name: \"home\",\r\n    path: \"/\",\r\n    component: HomeComponent\r\n  },\r\n  {\r\n    name: \"resultsDisplay\",\r\n    path: \"/results\",\r\n    component: ResultsDisplay\r\n  },\r\n  {\r\n    name: \"encoder\",\r\n    path: \"/encoder\",\r\n    component: Encoder\r\n  },\r\n  {\r\n    name: \"schoolManager\",\r\n    path: \"/school\",\r\n    component: SchoolManager\r\n  },\r\n  {\r\n    name: \"mentionsLegales\",\r\n    path: \"/legal\",\r\n    component: MentionsLegales\r\n  },\r\n  {\r\n    name: \"register\",\r\n    path: \"/register\",\r\n    component: Register\r\n  },\r\n  {\r\n    name: \"login\",\r\n    path: \"/login\",\r\n    component: Login\r\n  }\r\n];\r\n\r\nconst store = new Vuex.Store({\r\n  state: {\r\n    isLoggedIn: false,\r\n    schoolName: \"school-name\"\r\n  },\r\n  mutations: {\r\n    login(state, user) {\r\n      state.isLoggedIn = true;\r\n      state.schoolName = user.schoolName;\r\n    },\r\n    logout(state) {\r\n      state.isLoggedIn = false;\r\n      state.schoolName = \"school-name\";\r\n    }\r\n  },\r\n  plugins: [createPersistedState()]\r\n});\r\n\r\nconst router = new VueRouter({ base: \"\", mode: \"history\", routes: routes });\r\n\r\nnew Vue(Vue.util.extend({ router, store }, App)).$mount(\"#app\");\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=3342100e&scoped=true&lang=css&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/server/dist/js/app.6c3f3df9.js b/server/dist/js/app.6c3f3df9.js
deleted file mode 100644
index ef75ca1..0000000
--- a/server/dist/js/app.6c3f3df9.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(function(e){function t(t){for(var a,r,o=t[0],l=t[1],c=t[2],d=0,p=[];d<o.length;d++)r=o[d],Object.prototype.hasOwnProperty.call(i,r)&&i[r]&&p.push(i[r][0]),i[r]=0;for(a in l)Object.prototype.hasOwnProperty.call(l,a)&&(e[a]=l[a]);u&&u(t);while(p.length)p.shift()();return n.push.apply(n,c||[]),s()}function s(){for(var e,t=0;t<n.length;t++){for(var s=n[t],a=!0,o=1;o<s.length;o++){var l=s[o];0!==i[l]&&(a=!1)}a&&(n.splice(t--,1),e=r(r.s=s[0]))}return e}var a={},i={app:0},n=[];function r(t){if(a[t])return a[t].exports;var s=a[t]={i:t,l:!1,exports:{}};return e[t].call(s.exports,s,s.exports,r),s.l=!0,s.exports}r.m=e,r.c=a,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},r.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(r.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(s,a,function(t){return e[t]}.bind(null,a));return s},r.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/";var o=window["webpackJsonp"]=window["webpackJsonp"]||[],l=o.push.bind(o);o.push=t,o=o.slice();for(var c=0;c<o.length;c++)t(o[c]);var u=l;n.push([0,"chunk-vendors"]),s()})({0:function(e,t,s){e.exports=s("56d7")},"06fc":function(e,t,s){},"3b57":function(e,t,s){e.exports=s.p+"img/clubelek.e63dc7f1.png"},4597:function(e,t,s){e.exports=s.p+"img/insa.bc285c14.png"},5453:function(e,t,s){"use strict";s("bad2")},"54da":function(e,t,s){e.exports=s.p+"img/objectif21.e8d264c0.png"},"56d7":function(e,t,s){"use strict";s.r(t);var a=s("2b0e"),i=s("2f62"),n=s("0e44"),r=s("8c4f"),o=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content page-wrapper"},[s("div",{staticClass:"content-wrapper"},[s("nav",{staticClass:"navbar is-fixed-top mb-6"},[s("div",{staticClass:"navbar-brand"},[s("a",{staticClass:"navbar-item"},[s("router-link",{attrs:{to:"/"}},[s("i",{staticClass:"fas fa-home"}),e._v(" Home")])],1),s("a",{staticClass:"navbar-burger",class:{"is-active":e.showNav},on:{click:function(t){e.showNav=!e.showNav}}},[s("span",{attrs:{"aria-hidden":"true"}}),s("span",{attrs:{"aria-hidden":"true"}}),s("span",{attrs:{"aria-hidden":"true"}})])]),s("div",{staticClass:"navbar-menu",class:{"is-active":e.showNav},attrs:{id:"navMenu"}},[s("div",{staticClass:"navbar-start"},[s("a",{staticClass:"navbar-item"},[s("router-link",{attrs:{to:"/results"}},[s("i",{staticClass:"fas fa-flag-checkered"}),e._v(" Enregistrer des résultats")])],1),e.$store.state.isLoggedIn?s("a",{staticClass:"navbar-item"},[s("router-link",{attrs:{to:"/school"}},[s("i",{staticClass:"fas fa-school"}),e._v(" Mon établissement ("+e._s(e.$store.state.schoolName)+")")])],1):e._e(),s("a",{staticClass:"navbar-item"},[s("router-link",{attrs:{to:"/legal"}},[s("i",{staticClass:"fas fa-balance-scale"}),e._v(" Mentions légales")])],1)]),s("div",{staticClass:"navbar-end"},[s("div",{staticClass:"buttons has-addons"},[e.usbConnected?s("a",{staticClass:"navbar-item button is-danger",on:{click:function(t){return e.disconnectUsb()}}},[e._m(1)]):s("a",{staticClass:"navbar-item button is-info",on:{click:function(t){return e.connectUsb()}}},[e._m(0)]),e.$store.state.isLoggedIn?e._e():s("a",{staticClass:"navbar-item button"},[s("router-link",{attrs:{to:"/register"}},[s("span",[s("i",{staticClass:"fas fa-user-plus"}),e._v(" Inscription")])])],1),e.$store.state.isLoggedIn?e._e():s("a",{staticClass:"navbar-item button is-primary"},[s("router-link",{attrs:{to:"/login"}},[s("span",[s("i",{staticClass:"fas fa-sign-in-alt"}),e._v(" Connexion")])])],1),e.$store.state.isLoggedIn?s("a",{staticClass:"navbar-item button is-dark",on:{click:function(t){return e.logout()}}},[e._m(2)]):e._e()])])])]),s("transition",{attrs:{name:"fade"}},[s("router-view",{staticClass:"section container is-widescreen mt-6"})],1)],1),s("PageFooter")],1)},l=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[s("i",{staticClass:"fab fa-usb"}),e._v(" Connexion lecteur NFC USB")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[s("i",{staticClass:"fab fa-usb"}),e._v(" Déconnexion lecteur NFC USB")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[s("i",{staticClass:"fas fa-sign-out-alt"}),e._v(" Déconnexion")])}],c=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},u=[function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("footer",{staticClass:"footer has-text-centered"},[a("div",{staticClass:"content level"},[a("a",{staticClass:"level-item has-text-centered",attrs:{href:"https://www.insa-lyon.fr"}},[a("img",{attrs:{src:s("4597")}})]),a("a",{staticClass:"level-item has-text-centered",attrs:{href:"https://www.clubelek.fr"}},[a("img",{attrs:{src:s("3b57")}})]),a("a",{staticClass:"level-item has-text-centered"},[a("img",{attrs:{src:s("54da")}})])]),a("div",{staticClass:"content"},[a("p",[e._v(" Conçu et développé par les associations Clubelek et Objectif21, de l'INSA Lyon - Saison 2020/2021 - Made with 💚 by Antoine Rochebois ")])])])}],d={name:"PageFooter"},p=d,m=(s("5453"),s("2877")),v=Object(m["a"])(p,c,u,!1,null,"45bbb7b4",null),h=v.exports,f={};(function(){f.getPorts=function(){return navigator.usb.getDevices().then(e=>e.map(e=>new f.Port(e)))},f.requestPort=function(){const e=[{vendorId:9025,productId:32822},{vendorId:9025,productId:32823},{vendorId:9025,productId:32845},{vendorId:9025,productId:32846},{vendorId:9025,productId:32847},{vendorId:9025,productId:32848},{vendorId:9025,productId:32850},{vendorId:9025,productId:32851},{vendorId:9025,productId:32852},{vendorId:9025,productId:32853},{vendorId:9025,productId:32854},{vendorId:9025,productId:32855},{vendorId:9114}];return navigator.usb.requestDevice({filters:e}).then(e=>new f.Port(e))},f.Port=function(e){this.device_=e,this.interfaceNumber_=2,this.endpointIn_=5,this.endpointOut_=4},f.Port.prototype.connect=function(){let e=()=>{this.device_.transferIn(this.endpointIn_,64).then(t=>{this.onReceive(t.data),e()},e=>{this.onReceiveError(e)})};return this.device_.open().then(()=>{if(null===this.device_.configuration)return this.device_.selectConfiguration(1)}).then(()=>{var e=this.device_.configuration.interfaces;e.forEach(e=>{e.alternates.forEach(t=>{255==t.interfaceClass&&(this.interfaceNumber_=e.interfaceNumber,t.endpoints.forEach(e=>{"out"==e.direction&&(this.endpointOut_=e.endpointNumber),"in"==e.direction&&(this.endpointIn_=e.endpointNumber)}))})})}).then(()=>this.device_.claimInterface(this.interfaceNumber_)).then(()=>this.device_.selectAlternateInterface(this.interfaceNumber_,0)).then(()=>this.device_.controlTransferOut({requestType:"class",recipient:"interface",request:34,value:1,index:this.interfaceNumber_})).then(()=>{e()})},f.Port.prototype.disconnect=function(){return this.device_.controlTransferOut({requestType:"class",recipient:"interface",request:34,value:0,index:this.interfaceNumber_}).then(()=>this.device_.close())},f.Port.prototype.send=function(e){return this.device_.transferOut(this.endpointOut_,e)}})();var g=f;class b{constructor(){this.textEncoder=new TextEncoder,this.locked=!1,g.getPorts().then(e=>{0==e.length?console.log("No devices found."):(this.port=e[0],console.log("Port choisi :",this.port),this.connect()),this.locked=!1})}selectAndConnect(){g.requestPort().then(e=>{this.port=e,this.connect()}).catch(e=>{console.log("Connection error: "+e)})}disconnect(){this.port.disconnect(),this.port=null}connect(){console.log("Connecting to "+this.port.device_.productName+"..."),this.port.connect().then(()=>(console.log(this.port,"Connected."),this.port.onReceive=e=>{let t=new TextDecoder;this.receivedMsg=t.decode(e),console.log("Reçu :"+this.receivedMsg)},this.port.onReceiveError=e=>{console.log("Receive error: "+e)},!0),e=>(console.log("Connection error: "+e),!1))}readTagUid(){return new Promise((e,t)=>{this.locked=!0,this.sendString("GETID_"),this.port.onReceive=s=>{let a=new TextDecoder,i=a.decode(s);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("Reçu :"+i);let n=i.split("_")[0];"RECEIVED_GETID;"==i?console.log("GETID request ACK by Arduino"):"UID"==n&&";"==i.slice(-1)?(this.locked=!1,e(i.split("_")[1].slice(0,-1))):t("Bad message structure received")}})}readCard(){return new Promise((e,t)=>{this.locked=!0,this.sendString("READ_");var s=0,a="";this.port.onReceive=i=>{let n=new TextDecoder,r=n.decode(i);r=r.replace(/(\r\n|\n|\r)/gm,"").replace(/[^\w;]+/g,""),a+=r,a.includes("CONTENT_BEGIN_en")&&a.includes("_END")?(a=a.split("CONTENT_BEGIN_en"),a=a[a.length-1].split("_END")[0],this.locked=!1,e(a)):a.includes("RECEIVED_READ")||(s>100&&t("Too many reading fail"),s++)}})}writeCard(e){return new Promise((t,s)=>{this.locked=!0,this.sendString("WRITE_"+e),this.port.onReceive=e=>{let a=new TextDecoder,i=a.decode(e);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("recu ",i),"WRITTEN;"==i?(console.log("wrote team message"),this.locked=!1,t("")):i.includes("RECEIVED_WRITE")||s("Write : Bad message structure received")}})}cleanCard(){return new Promise((e,t)=>{this.locked=!0,this.sendString("CLEAN_"),this.port.onReceive=s=>{let a=new TextDecoder,i=a.decode(s);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("recu ",i),"CLEANED;"==i?(console.log("Cleaned card"),this.locked=!1,e("")):i.includes("RECEIVED_CLEAN")||t("Clean : Bad message structure received")}})}formatCard(){return new Promise((e,t)=>{this.locked=!0,this.sendString("FORMAT_"),this.port.onReceive=s=>{let a=new TextDecoder,i=a.decode(s);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("recu ",i),"FORMATED;"==i?(console.log("Formated card"),this.locked=!1,e("")):i.includes("RECEIVED_FORMAT")||t("Format : Bad message structure received")}})}eraseCard(){return new Promise((e,t)=>{this.locked=!0,this.sendString("ERASE_"),this.port.onReceive=s=>{let a=new TextDecoder,i=a.decode(s);i=i.replace(/(\r\n|\n|\r)/gm,""),console.log("recu ",i),"ERASED;"==i?(console.log("Erased card"),this.locked=!1,e("")):i.includes("RECEIVED_ERASE")||t("Erase : Bad message structure received")}})}ping(){return new Promise((e,t)=>{if(this.locked)return console.log("Trying to ping while performing another task"),e("");this.sendString("PING_");var s=setTimeout(()=>{t("ping timeout")},2e3);this.port.onReceive=t=>{let a=new TextDecoder,i=a.decode(t);i=i.replace(/(\r\n|\n|\r)/gm,""),"PONG;"==i&&(clearTimeout(s),e(""))}})}sendString(e){void 0!==this.port&&this.port.send(this.textEncoder.encode(e)).catch(e=>{console.log("Send error: "+e)})}}var _={name:"app",data(){return{showNav:!1,usbConnected:!1}},created(){this.usbNfcReader=new b},mounted(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/loginCheck";this.axios.post(t,{},{withCredentials:!0}).then(e=>{console.log(e),"ok"!=e.data&&this.$store.commit("logout")}),setTimeout(()=>this.checkNfcModule(),1e3),setInterval(()=>{this.checkNfcModule()},2500)},methods:{logout(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/logout";this.axios.post(t,{},{withCredentials:!0}).then(e=>{console.log(e),this.$store.commit("logout")})},connectUsb(){this.usbNfcReader.selectAndConnect(),this.setTimeout(()=>this.checkNfcModule(),500)},disconnectUsb(){this.usbNfcReader.disconnect(),this.setTimeout(()=>this.checkNfcModule(),500)},checkNfcModule(){this.usbNfcReader.ping().then(()=>{this.usbConnected=!0,console.log("Still connected to USB")}).catch(()=>{this.usbConnected=!1,console.log("Distconnected from USB !")})}},components:{PageFooter:h}},C=_,k=(s("d2cc"),Object(m["a"])(C,o,l,!1,null,"3342100e",null)),x=k.exports,q=s("2106"),y=s.n(q),P=s("bc3a"),E=s.n(P),I=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},w=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("h1",[e._v("Escape game économies d'énergies")]),s("p",[e._v(" Bienvenu sur cet escape game développé par les associations Clubelek et Objectif21 de l'INSA Lyon ")])])}],S={components:{}},N=S,T=Object(m["a"])(N,I,w,!1,null,"688c470e",null),D=T.exports,R=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content",attrs:{id:"app"}},[e.teams[0].donePuzzles.length>0?s("div",{staticClass:"container mb-6 has-text-centered"},[s("p",{staticClass:"is-size-3"},[e._v("🏅 Classement des équipes 🏅")]),e._l(e.teams,(function(t,a){return s("div",{key:t._id},[t.donePuzzles?s("div",[t.donePuzzles.length>0?s("div",{staticClass:"box mb-2"},[s("nav",{staticClass:"level"},[s("div",{staticClass:"level-item has-text-centered"},[s("div",[s("p",{staticClass:"heading"},[e._v("Rang")]),s("p",{staticClass:"title"},0==a?[e._v("🥇")]:1==a?[e._v("🥈")]:2==a?[e._v("🥉")]:[e._v(e._s(a+1))])])]),s("div",{staticClass:"level-item has-text-centered"},[s("div",[s("p",{staticClass:"heading"},[e._v("équipe")]),s("p",{staticClass:"title"},[e._v(e._s(t.name))])])]),s("div",{staticClass:"level-item has-text-centered"},[s("div",[s("p",{staticClass:"heading"},[e._v("Score")]),s("p",{staticClass:"title"},[e._v(e._s(e.getGlobalScore(t)))])])])])]):e._e()]):e._e()])}))],2):e._e(),e._l(e.teams,(function(t){return s("div",{key:t._id,staticClass:"mb-2",on:{addedTeam:e.updateTeams}},[s("TeamElement",{attrs:{team:t,teamArray:e.teams}})],1)})),s("TeamAdder",{staticClass:"mt-6",attrs:{teamArray:e.teams}})],2)},z=[],$=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("span",{staticClass:"message is-info"},[s("div",{staticClass:"message-header"},[e._v(" Equipe "+e._s(e.team.name)+" ("+e._s(e.memberCount)+" membres) "),s("button",{staticClass:"delete",on:{click:e.removeTeam}})]),s("div",{staticClass:"message-body"},[s("div",{staticClass:"level"},[s("div",{staticClass:"level-left level-item column"},[e._m(0),s("ul",e._l(e.team.members,(function(t){return s("li",{key:t},[e._v(e._s(t))])})),0)]),s("div",{staticClass:"level-right level-item column has-text-centered"},[""!=this.team.cardId?s("p",{staticClass:"heading"},[e._v(" Carte associée avec l'ID : "+e._s(e.team.cardId)+" ")]):s("p",{staticClass:"heading"},[e._v(" Aucune carte associée ! ")]),""!=this.team.cardId?s("button",{staticClass:"button is-danger",on:{click:function(t){return e.removeCardPairing()}}},[e._v(" Dissocier la carte ")]):s("button",{staticClass:"button is-warning",on:{click:function(t){return e.manageCardPairing()}}},[e._v(" Associer une carte ")])])]),e.team.donePuzzles?s("div",[e.team.donePuzzles.length>0?s("p",{staticClass:"is-size-4"},[s("strong",[e._v("Puzzles effectués :")])]):e._e(),e._l(e.team.donePuzzles,(function(t){return s("div",{key:t.name},[t.score?s("div",{staticClass:"level"},[s("div",{staticClass:"level-item level-left"},[s("p",[s("strong",[e._v(e._s(t.name))]),e._v(" ("+e._s(t.room)+") : ")])]),s("div",{staticClass:"level-item level-right"},[s("progress",{staticClass:"progress is-small",attrs:{max:t.maxScore},domProps:{value:t.score}})]),s("div",{staticClass:"level-item level-right"},[s("p",[e._v(e._s(t.score)+"/"+e._s(t.maxScore))])])]):s("div",{staticClass:"level "},[s("div",{staticClass:"level-item level-left"},[s("p",[s("strong",[e._v(e._s(t.name))]),e._v(" ("+e._s(t.room)+") : ")])]),s("div",{staticClass:"level-item level-right"},[t.validated?s("span",{staticClass:"icon has-text-success"},[s("i",{staticClass:"fas fa-check-circle"})]):s("span",{staticClass:"icon has-text-danger"},[s("i",{staticClass:"fas fa-times-circle"})])])])])}))],2):e._e()]),s("div",{staticClass:"modal",class:{"is-active":e.showPairingModal}},[s("div",{staticClass:"modal-background"}),s("div",{staticClass:"modal-content"},[s("div",{staticClass:"message"},[s("div",{staticClass:"message-header"},[e._v(" Association d'une carte NFC à l'équipe "+e._s(e.team.name)+" ")]),e._m(1)])]),s("button",{staticClass:"modal-close is-large",on:{click:function(t){e.showPairingModal=!1}}})]),s("div",{staticClass:"modal",class:{"is-active":e.showAlreadyPairedError}},[s("div",{staticClass:"modal-background"}),e._m(2),s("button",{staticClass:"modal-close is-large",on:{click:function(t){e.showAlreadyPairedError=!1}}})])])])},A=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("p",{staticClass:"is-size-4"},[s("strong",[e._v("Membres de l'équipe :")])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"message-body"},[e._v(" Veuillez scanner une carte sur le lecteur pour l'associer à cette équipe. "),s("br"),s("br"),e._v(" ATTENTION : Ceci effacera le contenu actuel de cette carte ! Vous ne pourrez pas attribuer à cette équipe une carte déjà attribuée à une autre équipe. Merci donc de dissocier toutes les cartes de votre équipe une fois le jeu fini. "),s("br"),s("br"),e._v(" Vous devez avoir connecté le lecteur USB au site. Déposez la carte d'équipe sur le lecteur NFC (face en plastique). Vous devez entendre deux bip consécutifs. Si cette fenêtre se ferme, c'est bon ! Si cela prend du temps ou qu'il n'y a qu'un seul bip, fermez et recommencez. Si le problème persiste, débranchez le lecteur, rechargez la page puis rebranchez le lecteur. ")])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"modal-content"},[s("div",{staticClass:"message is-danger"},[s("div",{staticClass:"message-header"},[e._v(" Carte déjà associée à une autre équipe ! ")]),s("div",{staticClass:"message-body"},[e._v(" Erreur : cette carte est déjà associée à une autre équipe (de votre établissement ou non). Merci de la dissocier de l'équipe originale. ")])])])}],j={name:"TeamElement",props:{team:Object,teamArray:Array},data(){return{showPairingModal:!1,showAlreadyPairedError:!1}},computed:{memberCount:function(){return this.team.members.length}},methods:{removeTeam:function(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/school/deleteTeam/"+this.team._id;this.axios.delete(t,{withCredentials:!0}).then(e=>{console.log("bien supprimé !",e),this.teamArray.splice(this.teamArray.indexOf(this.team),1)})},manageCardPairing:function(){this.showPairingModal=!this.showPairingModal,console.log("Trying to reset card"),this.$parent.$parent.usbNfcReader.cleanCard().then(()=>{this.$parent.$parent.usbNfcReader.formatCard().then(()=>{this.$parent.$parent.usbNfcReader.eraseCard().then(()=>{this.$parent.$parent.usbNfcReader.writeCard("team").then(e=>{console.log("Reset successful, trying to read uid",e),this.$parent.$parent.usbNfcReader.readTagUid().then(e=>{var t="//"+location.hostname+(location.port?":"+location.port:"");let s=t+"/school/updateTeamCard/"+this.team._id;this.axios.post(s,{cardId:e},{withCredentials:!0}).then(()=>{console.log("Carte ajoutée !"),this.team.cardId=e,this.showPairingModal=!1,this.$forceUpdate()}).catch(e=>{this.showPairingModal=!1,this.showAlreadyPairedError=!0,this.team.cardId="",this.$forceUpdate(),console.log("Carte déjà utilisée !",e)})})})})})})},removeCardPairing:function(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e`/school/removeTeamCard/${this.team._id}`;this.axios.post(t,this.team,{withCredentials:!0}).then(e=>{console.log("Carte dissociée !",e),this.team.cardId="",this.$forceUpdate()})}},created:function(){this.team.cardId||(this.team.cardId=""),null==this.team.cardId&&(this.team.cardId="")}},U=j,L=Object(m["a"])(U,$,A,!1,null,"2df3538e",null),O=L.exports,M=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"message is-primary"},[s("div",{staticClass:"message-header"},[e._v("Créer une nouvelle équipe")]),s("div",{staticClass:"message-body"},[s("form",{on:{submit:function(t){return t.preventDefault(),e.addTeam(t)}}},[s("div",{staticClass:"field"},[s("label",{staticClass:"label"},[e._v("Nom de l'équipe")]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.team.name,expression:"team.name"}],staticClass:"input",attrs:{type:"text"},domProps:{value:e.team.name},on:{input:function(t){t.target.composing||e.$set(e.team,"name",t.target.value)}}})]),s("br"),s("div",{staticClass:"field"},[s("label",{staticClass:"label"},[e._v("Membres de l'équipe")]),e._l(e.count,(function(t,a){return s("div",{key:t._id},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.team.members[a],expression:"team.members[index]"}],staticClass:"input",attrs:{type:"text"},domProps:{value:e.team.members[a]},on:{input:function(t){t.target.composing||e.$set(e.team.members,a,t.target.value)}}})])})),s("button",{staticClass:"button is-primary is-outlined",attrs:{type:"button"},on:{click:e.addMemberField}},[e._v(" + ")]),s("button",{staticClass:"button is-primary is-outlined",attrs:{type:"button"},on:{click:e.removeMemberField}},[e._v(" - ")])],2),s("br"),e._m(0)])])])},G=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("button",{staticClass:"button is-primary",attrs:{type:"submit"}},[e._v(" Ajouter l'équipe ")])])}],F={name:"TeamAdder",props:{teamArray:Array},data(){return{team:{name:"",members:[],cardId:""},count:1}},methods:{addTeam(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/school/addTeam";this.axios.post(t,this.team,{withCredentials:!0}).then(e=>{console.log("Team créée !",e),this.teamArray.push(this.team),this.$emit("addedTeam",this.teamArray),this.team={name:"",members:[]}})},addMemberField(){this.count++},removeMemberField(){this.count>0&&(this.team.members.pop(),this.count--)}}},V=F,B=Object(m["a"])(V,M,G,!1,null,null,null),J=B.exports,W={name:"SchoolManager",components:{TeamElement:O,TeamAdder:J},data(){return{teams:[]}},created(){},mounted(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/school";this.axios.get(t,{withCredentials:!0}).then(e=>{this.teams=e.data,this.sortTeams(),console.log(e)})},methods:{updateTeams(e){this.teams=e,this.sortTeams()},getGlobalScore(e){var t=0;return e.donePuzzles.forEach(e=>{e.score?t+=parseInt(e.coef)*parseInt(e.score):e.validated&&(t+=parseInt(e.coef))}),t},sortTeams(){this.teams.sort((e,t)=>this.getGlobalScore(t)-this.getGlobalScore(e))}}},H=W,K=Object(m["a"])(H,R,z,!1,null,null,null),Q=K.exports,X=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},Y=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("h2",[e._v("Définitions")]),s("p",[s("b",[e._v("Client :")]),e._v(" tout professionnel ou personne physique capable au sens des articles 1123 et suivants du Code civil, ou personne morale, qui visite le Site objet des présentes conditions générales."),s("br"),s("b",[e._v("Prestations et Services :")]),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" met à disposition des Clients : ")]),s("p",[s("b",[e._v("Contenu :")]),e._v(" Ensemble des éléments constituants l’information présente sur le Site, notamment textes – images – vidéos. ")]),s("p",[s("b",[e._v("Informations clients :")]),e._v(" Ci après dénommé « Information (s) » qui correspondent à l’ensemble des données personnelles susceptibles d’être détenues par "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" pour la gestion de votre compte, de la gestion de la relation client et à des fins d’analyses et de statistiques. ")]),s("p",[s("b",[e._v("Utilisateur :")]),e._v(" Internaute se connectant, utilisant le site susnommé. ")]),s("p",[s("b",[e._v("Informations personnelles :")]),e._v(" « Les informations qui permettent, sous quelque forme que ce soit, directement ou non, l'identification des personnes physiques auxquelles elles s'appliquent » (article 4 de la loi n° 78-17 du 6 janvier 1978). ")]),s("p",[e._v(" Les termes « données à caractère personnel », « personne concernée », « sous traitant » et « données sensibles » ont le sens défini par le Règlement Général sur la Protection des Données (RGPD : n° 2016-679) ")]),s("h2",[e._v("1. Présentation du site internet.")]),s("p",[e._v(" En vertu de l'article 6 de la loi n° 2004-575 du 21 juin 2004 pour la confiance dans l'économie numérique, il est précisé aux utilisateurs du site internet "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" l'identité des différents intervenants dans le cadre de sa réalisation et de son suivi: ")]),s("p",[s("strong",[e._v("Propriétaire")]),e._v(" : Association loi 1901 Clubelek (Association loi 1901) – INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne"),s("br"),s("strong",[e._v("Responsable publication")]),e._v(" : Clubelek – clubelek@insa-lyon.fr"),s("br"),e._v(" Le responsable publication est une personne physique ou une personne morale."),s("br"),s("strong",[e._v("Webmaster")]),e._v(" : Antoine Rochebois – antoine.rochebois@insa-lyon.fr"),s("br"),s("strong",[e._v("Hébergeur")]),e._v(" : ovh – 2 rue Kellermann 59100 Roubaix 1007"),s("br"),s("strong",[e._v("Délégué à la protection des données")]),e._v(" : Antoine Rochebois – antoine.rochebois@insa-lyon.fr"),s("br")]),s("div",{attrs:{"ng-bind-html":"linkHTML"}},[s("p",[e._v(" Ce modèle de mentions légales est proposé par le "),s("a",{attrs:{href:"https://fr.orson.io/1371/generateur-mentions-legales",title:"générateur gratuit offert par Orson.io"}},[e._v("générateur gratuit offert par Orson.io")])])]),s("h2",[e._v(" 2. Conditions générales d’utilisation du site et des services proposés. ")]),s("p",[e._v(" Le Site constitue une œuvre de l’esprit protégée par les dispositions du Code de la Propriété Intellectuelle et des Réglementations Internationales applicables. Le Client ne peut en aucune manière réutiliser, céder ou exploiter pour son propre compte tout ou partie des éléments ou travaux du Site. ")]),s("p",[e._v(" L’utilisation du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" implique l’acceptation pleine et entière des conditions générales d’utilisation ci-après décrites. Ces conditions d’utilisation sont susceptibles d’être modifiées ou complétées à tout moment, les utilisateurs du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" sont donc invités à les consulter de manière régulière. ")]),s("p",[e._v(" Ce site internet est normalement accessible à tout moment aux utilisateurs. Une interruption pour raison de maintenance technique peut être toutefois décidée par "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", qui s’efforcera alors de communiquer préalablement aux utilisateurs les dates et heures de l’intervention. Le site web "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est mis à jour régulièrement par "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" responsable. De la même façon, les mentions légales peuvent être modifiées à tout moment : elles s’imposent néanmoins à l’utilisateur qui est invité à s’y référer le plus souvent possible afin d’en prendre connaissance. ")]),s("h2",[e._v("3. Description des services fournis.")]),s("p",[e._v(" Le site internet "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" a pour objet de fournir une information concernant l’ensemble des activités de la société. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’efforce de fournir sur le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" des informations aussi précises que possible. Toutefois, il ne pourra être tenu responsable des oublis, des inexactitudes et des carences dans la mise à jour, qu’elles soient de son fait ou du fait des tiers partenaires qui lui fournissent ces informations. ")]),s("p",[e._v(" Toutes les informations indiquées sur le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" sont données à titre indicatif, et sont susceptibles d’évoluer. Par ailleurs, les renseignements figurant sur le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne sont pas exhaustifs. Ils sont donnés sous réserve de modifications ayant été apportées depuis leur mise en ligne. ")]),s("h2",[e._v("4. Limitations contractuelles sur les données techniques.")]),s("p",[e._v(" Le site utilise la technologie JavaScript. Le site Internet ne pourra être tenu responsable de dommages matériels liés à l’utilisation du site. De plus, l’utilisateur du site s’engage à accéder au site en utilisant un matériel récent, ne contenant pas de virus et avec un navigateur de dernière génération mis-à-jour Le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est hébergé chez un prestataire sur le territoire de l’Union Européenne conformément aux dispositions du Règlement Général sur la Protection des Données (RGPD : n° 2016-679) ")]),s("p",[e._v(" L’objectif est d’apporter une prestation qui assure le meilleur taux d’accessibilité. L’hébergeur assure la continuité de son service 24 Heures sur 24, tous les jours de l’année. Il se réserve néanmoins la possibilité d’interrompre le service d’hébergement pour les durées les plus courtes possibles notamment à des fins de maintenance, d’amélioration de ses infrastructures, de défaillance de ses infrastructures ou si les Prestations et Services génèrent un trafic réputé anormal. ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" et l’hébergeur ne pourront être tenus responsables en cas de dysfonctionnement du réseau Internet, des lignes téléphoniques ou du matériel informatique et de téléphonie lié notamment à l’encombrement du réseau empêchant l’accès au serveur. ")]),s("h2",[e._v("5. Propriété intellectuelle et contrefaçons.")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est propriétaire des droits de propriété intellectuelle et détient les droits d’usage sur tous les éléments accessibles sur le site internet, notamment les textes, images, graphismes, logos, vidéos, icônes et sons. Toute reproduction, représentation, modification, publication, adaptation de tout ou partie des éléments du site, quel que soit le moyen ou le procédé utilisé, est interdite, sauf autorisation écrite préalable de : "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". ")]),s("p",[e._v(" Toute exploitation non autorisée du site ou de l’un quelconque des éléments qu’il contient sera considérée comme constitutive d’une contrefaçon et poursuivie conformément aux dispositions des articles L.335-2 et suivants du Code de Propriété Intellectuelle. ")]),s("h2",[e._v("6. Limitations de responsabilité.")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" agit en tant qu’éditeur du site. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est responsable de la qualité et de la véracité du Contenu qu’il publie. ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne pourra être tenu responsable des dommages directs et indirects causés au matériel de l’utilisateur, lors de l’accès au site internet "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", et résultant soit de l’utilisation d’un matériel ne répondant pas aux spécifications indiquées au point 4, soit de l’apparition d’un bug ou d’une incompatibilité. ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne pourra également être tenu responsable des dommages indirects (tels par exemple qu’une perte de marché ou perte d’une chance) consécutifs à l’utilisation du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". Des espaces interactifs (possibilité de poser des questions dans l’espace contact) sont à la disposition des utilisateurs. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" se réserve le droit de supprimer, sans mise en demeure préalable, tout contenu déposé dans cet espace qui contreviendrait à la législation applicable en France, en particulier aux dispositions relatives à la protection des données. Le cas échéant, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" se réserve également la possibilité de mettre en cause la responsabilité civile et/ou pénale de l’utilisateur, notamment en cas de message à caractère raciste, injurieux, diffamant, ou pornographique, quel que soit le support utilisé (texte, photographie …). ")]),s("h2",[e._v("7. Gestion des données personnelles.")]),s("p",[e._v(" Le Client est informé des réglementations concernant la communication marketing, la loi du 21 Juin 2014 pour la confiance dans l’Economie Numérique, la Loi Informatique et Liberté du 06 Août 2004 ainsi que du Règlement Général sur la Protection des Données (RGPD : n° 2016-679). ")]),s("h3",[e._v("7.1 Responsables de la collecte des données personnelles")]),s("p",[e._v(" Pour les Données Personnelles collectées dans le cadre de la création du compte personnel de l’Utilisateur et de sa navigation sur le Site, le responsable du traitement des Données Personnelles est : Clubelek (Association loi 1901). "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v("est représenté par Thomas Vadebout, son représentant légal ")]),s("p",[e._v(" En tant que responsable du traitement des données qu’il collecte, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’engage à respecter le cadre des dispositions légales en vigueur. Il lui appartient notamment au Client d’établir les finalités de ses traitements de données, de fournir à ses prospects et clients, à partir de la collecte de leurs consentements, une information complète sur le traitement de leurs données personnelles et de maintenir un registre des traitements conforme à la réalité. Chaque fois que "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" traite des Données Personnelles, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" prend toutes les mesures raisonnables pour s’assurer de l’exactitude et de la pertinence des Données Personnelles au regard des finalités pour lesquelles "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" les traite. ")]),s("h3",[e._v("7.2 Finalité des données collectées")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est susceptible de traiter tout ou partie des données : ")]),s("ul",[s("li",[e._v(" pour permettre la navigation sur le Site et la gestion et la traçabilité des prestations et services commandés par l’utilisateur : données de connexion et d’utilisation du Site, facturation, historique des commandes, etc. ")]),s("li",[e._v(" pour prévenir et lutter contre la fraude informatique (spamming, hacking…) : matériel informatique utilisé pour la navigation, l’adresse IP, le mot de passe (hashé) ")]),s("li",[e._v(" pour améliorer la navigation sur le Site : données de connexion et d’utilisation ")]),s("li",[e._v(" pour mener des enquêtes de satisfaction facultatives sur "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" : adresse email ")]),s("li",[e._v(" pour mener des campagnes de communication (sms, mail) : numéro de téléphone, adresse email ")])]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne commercialise pas vos données personnelles qui sont donc uniquement utilisées par nécessité ou à des fins statistiques et d’analyses. ")]),s("h3",[e._v("7.3 Droit d’accès, de rectification et d’opposition")]),s("p",[e._v(" Conformément à la réglementation européenne en vigueur, les Utilisateurs de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" disposent des droits suivants : ")]),s("ul",[s("li",[e._v(" droit d'accès (article 15 RGPD) et de rectification (article 16 RGPD), de mise à jour, de complétude des données des Utilisateurs droit de verrouillage ou d’effacement des données des Utilisateurs à caractère personnel (article 17 du RGPD), lorsqu’elles sont inexactes, incomplètes, équivoques, périmées, ou dont la collecte, l'utilisation, la communication ou la conservation est interdite ")]),s("li",[e._v(" droit de retirer à tout moment un consentement (article 13-2c RGPD) ")]),s("li",[e._v(" droit à la limitation du traitement des données des Utilisateurs (article 18 RGPD) ")]),s("li",[e._v(" droit d’opposition au traitement des données des Utilisateurs (article 21 RGPD) ")]),s("li",[e._v(" droit à la portabilité des données que les Utilisateurs auront fournies, lorsque ces données font l’objet de traitements automatisés fondés sur leur consentement ou sur un contrat (article 20 RGPD) ")]),s("li",[e._v(" droit de définir le sort des données des Utilisateurs après leur mort et de choisir à qui "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" devra communiquer (ou non) ses données à un tiers qu’ils aura préalablement désigné ")])]),s("p",[e._v(" Dès que "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" a connaissance du décès d’un Utilisateur et à défaut d’instructions de sa part, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’engage à détruire ses données, sauf si leur conservation s’avère nécessaire à des fins probatoires ou pour répondre à une obligation légale. ")]),s("p",[e._v(" Si l’Utilisateur souhaite savoir comment "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" utilise ses Données Personnelles, demander à les rectifier ou s’oppose à leur traitement, l’Utilisateur peut contacter "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" par écrit à l’adresse suivante : ")]),e._v(" Clubelek (Association loi 1901) – DPO, Antoine Rochebois "),s("br"),e._v(" INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne. "),s("p",[e._v(" Dans ce cas, l’Utilisateur doit indiquer les Données Personnelles qu’il souhaiterait que "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" corrige, mette à jour ou supprime, en s’identifiant précisément avec une copie d’une pièce d’identité (carte d’identité ou passeport). ")]),s("p",[e._v(" Les demandes de suppression de Données Personnelles seront soumises aux obligations qui sont imposées à "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" par la loi, notamment en matière de conservation ou d’archivage des documents. Enfin, les Utilisateurs de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" peuvent déposer une réclamation auprès des autorités de contrôle, et notamment de la CNIL (https://www.cnil.fr/fr/plaintes). ")]),s("h3",[e._v("7.4 Non-communication des données personnelles")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’interdit de traiter, héberger ou transférer les Informations collectées sur ses Clients vers un pays situé en dehors de l’Union européenne ou reconnu comme « non adéquat » par la Commission européenne sans en informer préalablement le client. Pour autant, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" reste libre du choix de ses sous-traitants techniques et commerciaux à la condition qu’il présentent les garanties suffisantes au regard des exigences du Règlement Général sur la Protection des Données (RGPD : n° 2016-679). ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" s’engage à prendre toutes les précautions nécessaires afin de préserver la sécurité des Informations et notamment qu’elles ne soient pas communiquées à des personnes non autorisées. Cependant, si un incident impactant l’intégrité ou la confidentialité des Informations du Client est portée à la connaissance de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", celle-ci devra dans les meilleurs délais informer le Client et lui communiquer les mesures de corrections prises. Par ailleurs "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ne collecte aucune « données sensibles ». ")]),s("p",[e._v(" Les Données Personnelles de l’Utilisateur peuvent être traitées par des filiales de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" et des sous-traitants (prestataires de services), exclusivement afin de réaliser les finalités de la présente politique. ")]),s("p",[e._v(" Dans la limite de leurs attributions respectives et pour les finalités rappelées ci-dessus, les principales personnes susceptibles d’avoir accès aux données des Utilisateurs de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" sont principalement les agents de notre service client. ")]),s("div",{attrs:{"ng-bind-html":"rgpdHTML"}}),s("h2",[e._v("8. Notification d’incident")]),s("p",[e._v(" Quels que soient les efforts fournis, aucune méthode de transmission sur Internet et aucune méthode de stockage électronique n'est complètement sûre. Nous ne pouvons en conséquence pas garantir une sécurité absolue. Si nous prenions connaissance d'une brèche de la sécurité, nous avertirions les utilisateurs concernés afin qu'ils puissent prendre les mesures appropriées. Nos procédures de notification d’incident tiennent compte de nos obligations légales, qu'elles se situent au niveau national ou européen. Nous nous engageons à informer pleinement nos clients de toutes les questions relevant de la sécurité de leur compte et à leur fournir toutes les informations nécessaires pour les aider à respecter leurs propres obligations réglementaires en matière de reporting. ")]),s("p",[e._v(" Aucune information personnelle de l'utilisateur du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" n'est publiée à l'insu de l'utilisateur, échangée, transférée, cédée ou vendue sur un support quelconque à des tiers. Seule l'hypothèse du rachat de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" et de ses droits permettrait la transmission des dites informations à l'éventuel acquéreur qui serait à son tour tenu de la même obligation de conservation et de modification des données vis à vis de l'utilisateur du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". ")]),s("h3",[e._v("Sécurité")]),s("p",[e._v(" Pour assurer la sécurité et la confidentialité des Données Personnelles et des Données Personnelles de Santé, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" utilise des réseaux protégés par des dispositifs standards tels que par pare-feu, la pseudonymisation, l’encryption et mot de passe. ")]),s("p",[e._v(" Lors du traitement des Données Personnelles, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v("prend toutes les mesures raisonnables visant à les protéger contre toute perte, utilisation détournée, accès non autorisé, divulgation, altération ou destruction. ")]),s("h2",[e._v("9. Liens hypertextes « cookies » et balises (“tags”) internet")]),s("p",[e._v(" Le site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" contient un certain nombre de liens hypertextes vers d’autres sites, mis en place avec l’autorisation de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". Cependant, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" n’a pas la possibilité de vérifier le contenu des sites ainsi visités, et n’assumera en conséquence aucune responsabilité de ce fait. ")]),e._v(" Sauf si vous décidez de désactiver les cookies, vous acceptez que le site puisse les utiliser. Vous pouvez à tout moment désactiver ces cookies et ce gratuitement à partir des possibilités de désactivation qui vous sont offertes et rappelées ci-après, sachant que cela peut réduire ou empêcher l’accessibilité à tout ou partie des Services proposés par le site. "),s("p"),s("h3",[e._v("9.1. « COOKIES »")]),s("p",[e._v(" Un « cookie » est un petit fichier d’information envoyé sur le navigateur de l’Utilisateur et enregistré au sein du terminal de l’Utilisateur (ex : ordinateur, smartphone), (ci-après « Cookies »). Ce fichier comprend des informations telles que le nom de domaine de l’Utilisateur, le fournisseur d’accès Internet de l’Utilisateur, le système d’exploitation de l’Utilisateur, ainsi que la date et l’heure d’accès. Les Cookies ne risquent en aucun cas d’endommager le terminal de l’Utilisateur. ")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est susceptible de traiter les informations de l’Utilisateur concernant sa visite du Site, telles que les pages consultées, les recherches effectuées. Ces informations permettent à "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" d’améliorer le contenu du Site, de la navigation de l’Utilisateur. ")]),s("p",[e._v(" Les Cookies facilitant la navigation et/ou la fourniture des services proposés par le Site, l’Utilisateur peut configurer son navigateur pour qu’il lui permette de décider s’il souhaite ou non les accepter de manière à ce que des Cookies soient enregistrés dans le terminal ou, au contraire, qu’ils soient rejetés, soit systématiquement, soit selon leur émetteur. L’Utilisateur peut également configurer son logiciel de navigation de manière à ce que l’acceptation ou le refus des Cookies lui soient proposés ponctuellement, avant qu’un Cookie soit susceptible d’être enregistré dans son terminal. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" informe l’Utilisateur que, dans ce cas, il se peut que les fonctionnalités de son logiciel de navigation ne soient pas toutes disponibles. ")]),s("p",[e._v(" Si l’Utilisateur refuse l’enregistrement de Cookies dans son terminal ou son navigateur, ou si l’Utilisateur supprime ceux qui y sont enregistrés, l’Utilisateur est informé que sa navigation et son expérience sur le Site peuvent être limitées. Cela pourrait également être le cas lorsque "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ou l’un de ses prestataires ne peut pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par le terminal, les paramètres de langue et d’affichage ou le pays depuis lequel le terminal semble connecté à Internet. ")]),s("p",[e._v(" Le cas échéant, "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" décline toute responsabilité pour les conséquences liées au fonctionnement dégradé du Site et des services éventuellement proposés par "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", résultant (i) du refus de Cookies par l’Utilisateur (ii) de l’impossibilité pour "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" d’enregistrer ou de consulter les Cookies nécessaires à leur fonctionnement du fait du choix de l’Utilisateur. Pour la gestion des Cookies et des choix de l’Utilisateur, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d’aide du navigateur, qui permettra de savoir de quelle manière l’Utilisateur peut modifier ses souhaits en matière de Cookies. ")]),s("p",[e._v(" À tout moment, l’Utilisateur peut faire le choix d’exprimer et de modifier ses souhaits en matière de Cookies. "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" pourra en outre faire appel aux services de prestataires externes pour l’aider à recueillir et traiter les informations décrites dans cette section. ")]),s("p",[e._v(" Enfin, en cliquant sur les icônes dédiées aux réseaux sociaux Twitter, Facebook, Linkedin et Google Plus figurant sur le Site de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" ou dans son application mobile et si l’Utilisateur a accepté le dépôt de cookies en poursuivant sa navigation sur le Site Internet ou l’application mobile de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", Twitter, Facebook, Linkedin et Google Plus peuvent également déposer des cookies sur vos terminaux (ordinateur, tablette, téléphone portable). ")]),s("p",[e._v(" Ces types de cookies ne sont déposés sur vos terminaux qu’à condition que vous y consentiez, en continuant votre navigation sur le Site Internet ou l’application mobile de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(". À tout moment, l’Utilisateur peut néanmoins revenir sur son consentement à ce que "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" dépose ce type de cookies. ")]),s("h3",[e._v("Article 9.2. BALISES (“TAGS”) INTERNET")]),s("p",[s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" peut employer occasionnellement des balises Internet (également appelées « tags », ou balises d’action, GIF à un pixel, GIF transparents, GIF invisibles et GIF un à un) et les déployer par l’intermédiaire d’un partenaire spécialiste d’analyses Web susceptible de se trouver (et donc de stocker les informations correspondantes, y compris l’adresse IP de l’Utilisateur) dans un pays étranger. ")]),s("p",[e._v(" Ces balises sont placées à la fois dans les publicités en ligne permettant aux internautes d’accéder au Site, et sur les différentes pages de celui-ci. ")]),s("p",[e._v(" Cette technologie permet à "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" d’évaluer les réponses des visiteurs face au Site et l’efficacité de ses actions (par exemple, le nombre de fois où une page est ouverte et les informations consultées), ainsi que l’utilisation de ce Site par l’Utilisateur. ")]),s("p",[e._v(" Le prestataire externe pourra éventuellement recueillir des informations sur les visiteurs du Site et d’autres sites Internet grâce à ces balises, constituer des rapports sur l’activité du Site à l’attention de "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(", et fournir d’autres services relatifs à l’utilisation de celui-ci et d’Internet. ")]),s("p"),s("h2",[e._v("10. Droit applicable et attribution de juridiction.")]),s("p",[e._v(" Tout litige en relation avec l’utilisation du site "),s("a",{attrs:{href:"https://escape-game-dd.clubelek.fr"}},[e._v("https://escape-game-dd.clubelek.fr")]),e._v(" est soumis au droit français. En dehors des cas où la loi ne le permet pas, il est fait attribution exclusive de juridiction aux tribunaux compétents de Lyon ")])])}],Z={name:"MentionsLegales"},ee=Z,te=Object(m["a"])(ee,X,Y,!1,null,"a990db8a",null),se=te.exports,ae=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("form",{on:{submit:function(t){return t.preventDefault(),e.login(t)}}},[s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],staticClass:"input is-primary",attrs:{type:"text",placeholder:"Identifiant"},domProps:{value:e.username},on:{input:function(t){t.target.composing||(e.username=t.target.value)}}}),e._m(0)])]),s("br"),s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],staticClass:"input is-primary",attrs:{type:"password",placeholder:"Mot de passe"},domProps:{value:e.password},on:{input:function(t){t.target.composing||(e.password=t.target.value)}}}),e._m(1)])]),s("br"),e._m(2)])])},ie=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-user"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-lock"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("button",{staticClass:"button is-primary",attrs:{type:"submit"}},[e._v("Se connecter")])])}],ne={name:"Login",data(){return{username:"",password:""}},methods:{login(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/login";this.axios.post(t,{username:this.username,password:this.password},{withCredentials:!0}).then(e=>{console.log(e),this.$store.commit("login",e.data),this.$router.push("/school")})}}},re=ne,oe=Object(m["a"])(re,ae,ie,!1,null,null,null),le=oe.exports,ce=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[s("form",{on:{submit:function(t){return t.preventDefault(),e.register(t)}}},[s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],staticClass:"input is-primary",attrs:{type:"text",placeholder:"Identifiant"},domProps:{value:e.username},on:{input:function(t){t.target.composing||(e.username=t.target.value)}}}),e._m(0)])]),s("br"),s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.schoolName,expression:"schoolName"}],staticClass:"input is-primary",attrs:{type:"text",placeholder:"Nom de l'établissement"},domProps:{value:e.schoolName},on:{input:function(t){t.target.composing||(e.schoolName=t.target.value)}}}),e._m(1)])]),s("br"),s("div",{staticClass:"field"},[s("p",{staticClass:"control has-icons-left"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],staticClass:"input is-primary",attrs:{type:"password",placeholder:"Mot de passe"},domProps:{value:e.password},on:{input:function(t){t.target.composing||(e.password=t.target.value)}}}),e._m(2)])]),s("br"),e._m(3)])])},ue=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-user"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-school"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"icon is-small is-left"},[s("i",{staticClass:"fas fa-lock"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("button",{staticClass:"button is-primary",attrs:{type:"submit"}},[e._v("S'inscire")])])}],de={name:"Login",data(){return{username:"",schoolName:"",password:""}},methods:{register(){var e="//"+location.hostname+(location.port?":"+location.port:"");let t=e+"/register";this.axios.post(t,{username:this.username,schoolName:this.schoolName,password:this.password},{withCredentials:!0}).then(e=>{console.log(e),this.$router.push("/login")})}}},pe=de,me=Object(m["a"])(pe,ce,ue,!1,null,null,null),ve=me.exports,he=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"section"},[s("div",{staticClass:"message is-warning"},[e._m(0),s("div",{staticClass:"message-body"},[s("p",[e._v("Entrez un objet JSON valide dans le champs ci-dessous pour l'écrire sur le tag NFC présenté au lecteur. Attention à ne pas dépasser la longueur mémoire maximale de votre tag !")]),s("div",{ref:"editor",staticClass:"language-js"}),s("div",[s("p",[e._v("Longueur : "+e._s(e.jsonText.length))]),s("p",{class:e.isJsonTextValid?"has-text-success":"has-text-danger"},[s("strong",[e._v("JSON généré : ")]),e._v(e._s(e.jsonText))])]),s("button",{staticClass:"button is-warning",attrs:{disabled:!e.isJsonTextValid}},[e._m(1)])])])])},fe=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"message-header"},[s("p",[e._v("Encodeur de TAG/cartes NFC (outil de développement)")])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[s("i",{staticClass:"fas fa-upload"}),e._v(" Ecrire sur la carte/le tag")])}],ge=s("0377"),be=s("b7be"),_e=s("c197"),Ce=s.n(_e),ke=(s("a878"),{name:"Encoder",components:{},data(){return{jsonText:""}},computed:{isJsonTextValid:function(){try{return JSON.parse(this.jsonText),!0}catch(e){return!1}}},mounted(){const e='{\n \t "type" : "<objet ? carte ?>", \n \t "puzzle" : "<nom d\'énigme>", \n \t custom params...\n}';this.jsonText=e;const t=this.$refs.editor,s=Object(ge["a"])(t,Object(be["a"])(Ce.a.highlightElement));s.onUpdate(e=>{try{var t=JSON.parse(e);this.jsonText=JSON.stringify(t,null,0)}catch(s){this.jsonText=e}}),s.updateCode(e)}}),xe=ke,qe=Object(m["a"])(xe,he,fe,!1,null,"7c9e39cd",null),ye=qe.exports,Pe=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"content"},[e.globalScore>=0?s("div",{staticClass:"has-text-centered"},[s("p",{staticClass:"is-size-4 m-0"},[e._v("Score total :")]),s("p",{staticClass:"is-size-1 m-0",staticStyle:{color:"green"}},[e._v("🔥 "+e._s(e.globalScore)+" 🔥")]),s("p",{staticClass:"is-size-3 mb-6"},[e._v("🥳 Félicitations ! 🥳")])]):e._e(),this.team.name.length>0?s("article",{staticClass:"message is-success"},[s("div",{staticClass:"message-header"},[e._v(" 🏁 Résultats de l'équipe \""+e._s(e.team.name)+'" ('+e._s(e.memberCount)+" membres) 🏁 ")]),s("div",{staticClass:"message-body"},[s("div",[e._m(0),s("ul",e._l(e.team.members,(function(t){return s("li",{key:t},[e._v(e._s(t))])})),0)]),s("div",[e.team.donePuzzles.length>0?s("p",{staticClass:"is-size-4"},[s("strong",[e._v("Puzzles effectués :")])]):e._e(),e._l(e.team.donePuzzles,(function(t){return s("div",{key:t.name},[t.score?s("div",{staticClass:"level"},[s("div",{staticClass:"level-item level-left"},[s("p",[s("strong",[e._v(e._s(t.name))]),e._v(" ("+e._s(t.room)+") : ")])]),s("div",{staticClass:"level-item level-right"},[s("progress",{staticClass:"progress is-small",attrs:{max:t.maxScore},domProps:{value:t.score}})]),s("div",{staticClass:"level-item level-right"},[s("p",[e._v(e._s(t.score)+"/"+e._s(t.maxScore))])])]):s("div",{staticClass:"level "},[s("div",{staticClass:"level-item level-left"},[s("p",[s("strong",[e._v(e._s(t.name))]),e._v(" ("+e._s(t.room)+") : ")])]),s("div",{staticClass:"level-item level-right"},[t.validated?s("span",{staticClass:"icon has-text-success"},[s("i",{staticClass:"fas fa-check-circle"})]):s("span",{staticClass:"icon has-text-danger"},[s("i",{staticClass:"fas fa-times-circle"})])])])])}))],2)])]):e._e(),s("article",{staticClass:"container has-text-centered"},[s("p",{staticClass:"is-size-4"},[e._v("🏁 Merci de scanner une carte d'équipe pour afficher et enregistrer des résultats 🏁")]),s("button",{staticClass:"button is-primary is-large is-fullwidth",on:{click:function(t){return e.manageCardReading()}}},[s("i",{staticClass:"fas fa-download"}),e._v(" Scanner la carte de l'équipe !")])]),s("div",{staticClass:"modal",class:{"is-active":e.showPairingModal}},[s("div",{staticClass:"modal-background"}),e._m(1),s("button",{staticClass:"modal-close is-large",on:{click:function(t){e.showPairingModal=!1}}})])])},Ee=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("p",{staticClass:"is-size-4"},[s("strong",[e._v("Membres de l'équipe :")])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"modal-content"},[s("div",{staticClass:"message"},[s("div",{staticClass:"message-header"},[e._v(" Lecture d'une carte NFC d'équipe ")]),s("div",{staticClass:"message-body"},[e._v(" Veuillez scanner une carte sur le lecteur pour charger ses résultats équipe. ")])])])}],Ie=s("671d"),we={name:"ResultDisplay",data(){return{showPairingModal:!1,puzzles:Ie,team:{name:"",members:[],donePuzzles:[]},globalScore:-1}},computed:{memberCount:function(){return this.team.members.length}},methods:{manageCardReading(){this.showPairingModal=!0,this.$parent.usbNfcReader.readCard().then(e=>{this.$parent.usbNfcReader.readTagUid().then(t=>{this.team={name:"",members:[],donePuzzles:[]};let s=e.split(";");if(s.shift(),s.pop(),0==s.length)return void console.log("Carte vierge de toute épreuve !");s.forEach(e=>{let t=e.split("_")[0],s=e.split("_")[1],a=this.puzzles[t];var i={name:a.name,room:a.room,coef:a.coef};"boolean"==a.type?i.validated=s>=1:"number"==a.type&&(i.maxScore=a.maxScore,i.score=s),this.team.donePuzzles.push(i)}),console.log(this.team.donePuzzles);var a="//"+location.hostname+(location.port?":"+location.port:"");let i=a+"/school/updateTeamPuzzles/"+t,n=a+"/school/getTeamByCardID/"+t;this.axios.post(i,this.team.donePuzzles,{withCredentials:!0}).then(()=>{console.log("Score ajouté à la BD !"),this.axios.get(n,{withCredentials:!0}).then(e=>{this.team=e.data[0],this.globalScore=0,this.team.donePuzzles.forEach(e=>{e.score?this.globalScore+=parseInt(e.coef)*parseInt(e.score):e.validated&&(this.globalScore+=parseInt(e.coef))}),this.showPairingModal=!1})})})})}}},Se=we,Ne=Object(m["a"])(Se,Pe,Ee,!1,null,"9924b722",null),Te=Ne.exports;s("15f5"),s("7051");s("b383"),a["a"].use(r["a"]),a["a"].use(i["a"]),a["a"].use(y.a,E.a),a["a"].config.productionTip=!1;const De=[{name:"home",path:"/",component:D},{name:"resultsDisplay",path:"/results",component:Te},{name:"encoder",path:"/encoder",component:ye},{name:"schoolManager",path:"/school",component:Q},{name:"mentionsLegales",path:"/legal",component:se},{name:"register",path:"/register",component:ve},{name:"login",path:"/login",component:le}],Re=new i["a"].Store({state:{isLoggedIn:!1,schoolName:"school-name"},mutations:{login(e,t){e.isLoggedIn=!0,e.schoolName=t.schoolName},logout(e){e.isLoggedIn=!1,e.schoolName="school-name"}},plugins:[Object(n["a"])()]}),ze=new r["a"]({base:"",mode:"history",routes:De});new a["a"](a["a"].util.extend({router:ze,store:Re},x)).$mount("#app")},"671d":function(e){e.exports=JSON.parse('{"C":{"name":"Faire une recette de saison","room":"Cuisine","type":"number","maxScore":100,"coef":5},"A":{"name":"Manger des pommes","room":"Cuisine","type":"boolean","coef":20}}')},b383:function(e,t,s){},bad2:function(e,t,s){},d2cc:function(e,t,s){"use strict";s("06fc")}});
-//# sourceMappingURL=app.6c3f3df9.js.map
\ No newline at end of file
diff --git a/server/dist/js/app.6c3f3df9.js.map b/server/dist/js/app.6c3f3df9.js.map
deleted file mode 100644
index 30f0e33..0000000
--- a/server/dist/js/app.6c3f3df9.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/img/clubelek.png","webpack:///./src/assets/img/insa.png","webpack:///./src/components/PageFooter.vue?ba31","webpack:///./src/assets/img/objectif21.png","webpack:///./src/App.vue?f6af","webpack:///./src/components/PageFooter.vue?5465","webpack:///src/components/PageFooter.vue","webpack:///./src/components/PageFooter.vue?2881","webpack:///./src/components/PageFooter.vue?eabb","webpack:///./src/serial.js","webpack:///./src/usbNfcReader.js","webpack:///src/App.vue","webpack:///./src/App.vue?b65f","webpack:///./src/App.vue?a286","webpack:///./src/components/HomeComponent.vue?faec","webpack:///src/components/HomeComponent.vue","webpack:///./src/components/HomeComponent.vue?76c1","webpack:///./src/components/HomeComponent.vue","webpack:///./src/components/SchoolManager.vue?6e82","webpack:///./src/components/TeamElement.vue?3872","webpack:///src/components/TeamElement.vue","webpack:///./src/components/TeamElement.vue?46a3","webpack:///./src/components/TeamElement.vue","webpack:///./src/components/TeamAdder.vue?bfbb","webpack:///src/components/TeamAdder.vue","webpack:///./src/components/TeamAdder.vue?2514","webpack:///./src/components/TeamAdder.vue","webpack:///src/components/SchoolManager.vue","webpack:///./src/components/SchoolManager.vue?0c55","webpack:///./src/components/SchoolManager.vue","webpack:///./src/components/MentionsLegales.vue?605a","webpack:///src/components/MentionsLegales.vue","webpack:///./src/components/MentionsLegales.vue?d10d","webpack:///./src/components/MentionsLegales.vue","webpack:///./src/components/Login.vue?b986","webpack:///src/components/Login.vue","webpack:///./src/components/Login.vue?bbcf","webpack:///./src/components/Login.vue","webpack:///./src/components/Register.vue?224f","webpack:///src/components/Register.vue","webpack:///./src/components/Register.vue?e944","webpack:///./src/components/Register.vue","webpack:///./src/components/Encoder.vue?777e","webpack:///src/components/Encoder.vue","webpack:///./src/components/Encoder.vue?d4a2","webpack:///./src/components/Encoder.vue","webpack:///./src/components/ResultsDisplay.vue?204b","webpack:///src/components/ResultsDisplay.vue","webpack:///./src/components/ResultsDisplay.vue?0550","webpack:///./src/components/ResultsDisplay.vue","webpack:///./src/main.js","webpack:///./src/App.vue?7deb"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","class","showNav","on","$event","$store","state","_s","schoolName","_e","usbConnected","disconnectUsb","_m","connectUsb","isLoggedIn","logout","staticRenderFns","component","serial","getPorts","navigator","usb","getDevices","then","devices","map","device","Port","requestPort","filters","requestDevice","device_","interfaceNumber_","endpointIn_","endpointOut_","connect","readLoop","transferIn","onReceive","error","onReceiveError","open","configuration","selectConfiguration","configurationInterfaces","interfaces","forEach","element","alternates","elementalt","interfaceClass","interfaceNumber","endpoints","elementendpoint","direction","endpointNumber","claimInterface","selectAlternateInterface","controlTransferOut","disconnect","close","send","transferOut","textEncoder","TextEncoder","locked","ports","console","log","port","selectedPort","catch","productName","textDecoder","TextDecoder","receivedMsg","decode","Promise","resolve","reject","sendString","msg","replace","cmdIdentifier","split","failCount","msgBuff","includes","content","timeout","setTimeout","clearTimeout","str","undefined","encode","usbNfcReader","domainName","location","hostname","uri","axios","post","withCredentials","response","commit","checkNfcModule","setInterval","methods","selectAndConnect","ping","components","PageFooter","teams","donePuzzles","_l","team","index","_id","getGlobalScore","updateTeams","memberCount","removeTeam","member","cardId","removeCardPairing","manageCardPairing","puzzle","room","maxScore","domProps","score","showPairingModal","showAlreadyPairedError","props","teamArray","Array","computed","members","delete","indexOf","$parent","cleanCard","formatCard","eraseCard","writeCard","readTagUid","$forceUpdate","created","preventDefault","addTeam","directives","rawName","expression","target","composing","$set","addMemberField","removeMemberField","count","$emit","pop","TeamElement","TeamAdder","sortTeams","globalScore","parseInt","coef","validated","sort","a","b","login","username","password","$router","register","ref","jsonText","isJsonTextValid","JSON","parse","e","sampleCode","node","$refs","editor","jar","highlightElement","onUpdate","code","jsonObject","stringify","updateCode","staticStyle","manageCardReading","puzzles","readCard","cardContent","tagUid","resultsStr","resultStr","resShort","donePuzzle","type","uriGet","use","config","productionTip","routes","path","HomeComponent","ResultsDisplay","Encoder","SchoolManager","MentionsLegales","Register","Login","store","Store","mutations","user","plugins","router","base","util","extend","App","$mount"],"mappings":"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","file":"js/app.6c3f3df9.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/clubelek.e63dc7f1.png\";","module.exports = __webpack_public_path__ + \"img/insa.bc285c14.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=style&index=0&id=45bbb7b4&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/objectif21.e8d264c0.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content page-wrapper\"},[_c('div',{staticClass:\"content-wrapper\"},[_c('nav',{staticClass:\"navbar is-fixed-top mb-6\"},[_c('div',{staticClass:\"navbar-brand\"},[_c('a',{staticClass:\"navbar-item\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('i',{staticClass:\"fas fa-home\"}),_vm._v(\" Home\")])],1),_c('a',{staticClass:\"navbar-burger\",class:{ 'is-active': _vm.showNav },on:{\"click\":function($event){_vm.showNav = !_vm.showNav}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}}),_c('span',{attrs:{\"aria-hidden\":\"true\"}}),_c('span',{attrs:{\"aria-hidden\":\"true\"}})])]),_c('div',{staticClass:\"navbar-menu\",class:{ 'is-active': _vm.showNav },attrs:{\"id\":\"navMenu\"}},[_c('div',{staticClass:\"navbar-start\"},[_c('a',{staticClass:\"navbar-item\"},[_c('router-link',{attrs:{\"to\":\"/results\"}},[_c('i',{staticClass:\"fas fa-flag-checkered\"}),_vm._v(\" Enregistrer des résultats\")])],1),(_vm.$store.state.isLoggedIn)?_c('a',{staticClass:\"navbar-item\"},[_c('router-link',{attrs:{\"to\":\"/school\"}},[_c('i',{staticClass:\"fas fa-school\"}),_vm._v(\" Mon établissement (\"+_vm._s(_vm.$store.state.schoolName)+\")\")])],1):_vm._e(),_c('a',{staticClass:\"navbar-item\"},[_c('router-link',{attrs:{\"to\":\"/legal\"}},[_c('i',{staticClass:\"fas fa-balance-scale\"}),_vm._v(\" Mentions légales\")])],1)]),_c('div',{staticClass:\"navbar-end\"},[_c('div',{staticClass:\"buttons has-addons\"},[(!_vm.usbConnected)?_c('a',{staticClass:\"navbar-item button is-info\",on:{\"click\":function($event){return _vm.connectUsb()}}},[_vm._m(0)]):_c('a',{staticClass:\"navbar-item button is-danger\",on:{\"click\":function($event){return _vm.disconnectUsb()}}},[_vm._m(1)]),(!_vm.$store.state.isLoggedIn)?_c('a',{staticClass:\"navbar-item button\"},[_c('router-link',{attrs:{\"to\":\"/register\"}},[_c('span',[_c('i',{staticClass:\"fas fa-user-plus\"}),_vm._v(\" Inscription\")])])],1):_vm._e(),(!_vm.$store.state.isLoggedIn)?_c('a',{staticClass:\"navbar-item button is-primary\"},[_c('router-link',{attrs:{\"to\":\"/login\"}},[_c('span',[_c('i',{staticClass:\"fas fa-sign-in-alt\"}),_vm._v(\" Connexion\")])])],1):_vm._e(),(_vm.$store.state.isLoggedIn)?_c('a',{staticClass:\"navbar-item button is-dark\",on:{\"click\":function($event){return _vm.logout()}}},[_vm._m(2)]):_vm._e()])])])]),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('router-view',{staticClass:\"section container is-widescreen mt-6\"})],1)],1),_c('PageFooter')],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fab fa-usb\"}),_vm._v(\" Connexion lecteur NFC USB\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fab fa-usb\"}),_vm._v(\" Déconnexion lecteur NFC USB\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-sign-out-alt\"}),_vm._v(\" Déconnexion\")])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"footer has-text-centered\"},[_c('div',{staticClass:\"content level\"},[_c('a',{staticClass:\"level-item has-text-centered\",attrs:{\"href\":\"https://www.insa-lyon.fr\"}},[_c('img',{attrs:{\"src\":require(\"../assets/img/insa.png\")}})]),_c('a',{staticClass:\"level-item has-text-centered\",attrs:{\"href\":\"https://www.clubelek.fr\"}},[_c('img',{attrs:{\"src\":require(\"../assets/img/clubelek.png\")}})]),_c('a',{staticClass:\"level-item has-text-centered\"},[_c('img',{attrs:{\"src\":require(\"../assets/img/objectif21.png\")}})])]),_c('div',{staticClass:\"content\"},[_c('p',[_vm._v(\" Conçu et développé par les associations Clubelek et Objectif21, de l'INSA Lyon - Saison 2020/2021 - Made with 💚 by Antoine Rochebois \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <footer class=\"footer has-text-centered\">\r\n    <div class=\"content level\">\r\n      <a class=\"level-item has-text-centered\" href=\"https://www.insa-lyon.fr\">\r\n        <img src=\"../assets/img/insa.png\" />\r\n      </a>\r\n      <a class=\"level-item has-text-centered\" href=\"https://www.clubelek.fr\">\r\n        <img src=\"../assets/img/clubelek.png\" />\r\n      </a>\r\n      <a class=\"level-item has-text-centered\">\r\n        <img src=\"../assets/img/objectif21.png\" />\r\n      </a>\r\n    </div>\r\n    <div class=\"content\">\r\n      <p>\r\n        Conçu et développé par les associations Clubelek et Objectif21, de\r\n        l'INSA Lyon - Saison 2020/2021 - Made with 💚 by Antoine Rochebois\r\n      </p>\r\n    </div>\r\n  </footer>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"PageFooter\"\r\n};\r\n</script>\r\n\r\n<style scoped>\r\nimg {\r\n  height: 64px;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PageFooter.vue?vue&type=template&id=45bbb7b4&scoped=true&\"\nimport script from \"./PageFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./PageFooter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PageFooter.vue?vue&type=style&index=0&id=45bbb7b4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"45bbb7b4\",\n  null\n  \n)\n\nexport default component.exports","var serial = {};\r\n\r\n(function() {\r\n  'use strict';\r\n\r\n  serial.getPorts = function() {\r\n    return navigator.usb.getDevices().then(devices => {\r\n      return devices.map(device => new serial.Port(device));\r\n    });\r\n  };\r\n\r\n  serial.requestPort = function() {\r\n    const filters = [\r\n      { 'vendorId': 0x2341, 'productId': 0x8036 }, // Arduino Leonardo\r\n      { 'vendorId': 0x2341, 'productId': 0x8037 }, // Arduino Micro\r\n      { 'vendorId': 0x2341, 'productId': 0x804d }, // Arduino/Genuino Zero\r\n      { 'vendorId': 0x2341, 'productId': 0x804e }, // Arduino/Genuino MKR1000\r\n      { 'vendorId': 0x2341, 'productId': 0x804f }, // Arduino MKRZERO\r\n      { 'vendorId': 0x2341, 'productId': 0x8050 }, // Arduino MKR FOX 1200\r\n      { 'vendorId': 0x2341, 'productId': 0x8052 }, // Arduino MKR GSM 1400\r\n      { 'vendorId': 0x2341, 'productId': 0x8053 }, // Arduino MKR WAN 1300\r\n      { 'vendorId': 0x2341, 'productId': 0x8054 }, // Arduino MKR WiFi 1010\r\n      { 'vendorId': 0x2341, 'productId': 0x8055 }, // Arduino MKR NB 1500\r\n      { 'vendorId': 0x2341, 'productId': 0x8056 }, // Arduino MKR Vidor 4000\r\n      { 'vendorId': 0x2341, 'productId': 0x8057 }, // Arduino NANO 33 IoT\r\n      { 'vendorId': 0x239A }, // Adafruit Boards!\r\n    ];\r\n    return navigator.usb.requestDevice({ 'filters': filters }).then(\r\n      device => new serial.Port(device)\r\n    );\r\n  }\r\n\r\n  serial.Port = function(device) {\r\n    this.device_ = device;\r\n    this.interfaceNumber_ = 2;  // original interface number of WebUSB Arduino demo\r\n    this.endpointIn_ = 5;       // original in endpoint ID of WebUSB Arduino demo\r\n    this.endpointOut_ = 4;      // original out endpoint ID of WebUSB Arduino demo\r\n  };\r\n\r\n  serial.Port.prototype.connect = function() {\r\n    let readLoop = () => {\r\n      this.device_.transferIn(this.endpointIn_, 64).then(result => {\r\n        this.onReceive(result.data);\r\n        readLoop();\r\n      }, error => {\r\n        this.onReceiveError(error);\r\n      });\r\n    };\r\n\r\n    return this.device_.open()\r\n        .then(() => {\r\n          if (this.device_.configuration === null) {\r\n            return this.device_.selectConfiguration(1);\r\n          }\r\n        })\r\n        .then(() => {\r\n          var configurationInterfaces = this.device_.configuration.interfaces;\r\n          configurationInterfaces.forEach(element => {\r\n            element.alternates.forEach(elementalt => {\r\n              if (elementalt.interfaceClass==0xff) {\r\n                this.interfaceNumber_ = element.interfaceNumber;\r\n                elementalt.endpoints.forEach(elementendpoint => {\r\n                  if (elementendpoint.direction == \"out\") {\r\n                    this.endpointOut_ = elementendpoint.endpointNumber;\r\n                  }\r\n                  if (elementendpoint.direction==\"in\") {\r\n                    this.endpointIn_ =elementendpoint.endpointNumber;\r\n                  }\r\n                })\r\n              }\r\n            })\r\n          })\r\n        })\r\n        .then(() => this.device_.claimInterface(this.interfaceNumber_))\r\n        .then(() => this.device_.selectAlternateInterface(this.interfaceNumber_, 0))\r\n        .then(() => this.device_.controlTransferOut({\r\n            'requestType': 'class',\r\n            'recipient': 'interface',\r\n            'request': 0x22,\r\n            'value': 0x01,\r\n            'index': this.interfaceNumber_}))\r\n        .then(() => {\r\n          readLoop();\r\n        });\r\n  };\r\n\r\n  serial.Port.prototype.disconnect = function() {\r\n    return this.device_.controlTransferOut({\r\n            'requestType': 'class',\r\n            'recipient': 'interface',\r\n            'request': 0x22,\r\n            'value': 0x00,\r\n            'index': this.interfaceNumber_})\r\n        .then(() => this.device_.close());\r\n  };\r\n\r\n  serial.Port.prototype.send = function(data) {\r\n    return this.device_.transferOut(this.endpointOut_, data);\r\n  };\r\n})();\r\nexport default serial;\r\n","import Serial from \"./serial.js\"\r\n\r\nexport default class UsbNfcReader {\r\n    constructor() {\r\n        this.textEncoder = new TextEncoder();\r\n        this.locked = false;\r\n        //Tentative de connexion/reconnexion automatique\r\n        Serial.getPorts().then(ports => {\r\n            if (ports.length == 0) {\r\n                console.log('No devices found.');\r\n            } else {\r\n                this.port = ports[0];\r\n                console.log(\"Port choisi :\", this.port);\r\n                this.connect();\r\n            }\r\n        this.locked = false;\r\n        });\r\n    }\r\n\r\n    selectAndConnect() {\r\n        Serial.requestPort().then(selectedPort => {\r\n            this.port = selectedPort;\r\n            this.connect();\r\n          }).catch(error => {\r\n            console.log('Connection error: ' + error);\r\n          });\r\n    }\r\n\r\n    disconnect() {\r\n        this.port.disconnect();\r\n        this.port = null;\r\n    }\r\n\r\n    connect() {\r\n        console.log('Connecting to ' + this.port.device_.productName + '...');\r\n        this.port.connect().then(() => {\r\n          console.log(this.port, 'Connected.');\r\n\r\n          //Important : callback de réception\r\n          this.port.onReceive = data => {\r\n            let textDecoder = new TextDecoder();\r\n            this.receivedMsg = textDecoder.decode(data);\r\n            console.log(\"Reçu :\" + this.receivedMsg);\r\n          }\r\n          this.port.onReceiveError = error => {\r\n            console.log('Receive error: ' + error);\r\n          };\r\n          return true;\r\n        }, error => {\r\n          console.log('Connection error: ' + error);\r\n          return false;\r\n        });\r\n    }\r\n\r\n    readTagUid() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"GETID_\")\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"Reçu :\" + msg);\r\n          let cmdIdentifier = msg.split('_')[0]\r\n          if (msg == \"RECEIVED_GETID;\") {\r\n            console.log(\"GETID request ACK by Arduino\")\r\n          } else if (cmdIdentifier == \"UID\" && msg.slice(-1) == ';') {\r\n            this.locked = false;\r\n            resolve(msg.split('_')[1].slice(0, -1))        \r\n          } else {\r\n            reject(\"Bad message structure received\")\r\n          }\r\n          \r\n        }\r\n      })\r\n    }\r\n\r\n    readCard() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"READ_\")\r\n        var failCount = 0\r\n        var msg = \"\"\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msgBuff = textDecoder.decode(data);\r\n          msgBuff = msgBuff.replace(/(\\r\\n|\\n|\\r)/gm, \"\").replace(/[^\\w;]+/g, '');\r\n          msg += msgBuff\r\n          if (msg.includes(\"CONTENT_BEGIN_en\") && msg.includes(\"_END\")) {\r\n            msg = msg.split(\"CONTENT_BEGIN_en\")\r\n            msg = msg[msg.length-1].split(\"_END\")[0]\r\n            this.locked = false;\r\n            resolve(msg)\r\n          } else if (!msg.includes(\"RECEIVED_READ\")) {\r\n            if (failCount > 100) {\r\n              reject(\"Too many reading fail\")\r\n            }\r\n            failCount++\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    writeCard(content) {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"WRITE_\" + content)\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"recu \", msg)\r\n          if (msg == \"WRITTEN;\") {\r\n            console.log(\"wrote team message\")\r\n            this.locked = false;\r\n            resolve(\"\")\r\n          } else if (!msg.includes(\"RECEIVED_WRITE\")) {\r\n            reject(\"Write : Bad message structure received\")\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    cleanCard() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"CLEAN_\")\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"recu \", msg)\r\n          if (msg == \"CLEANED;\") {\r\n            console.log(\"Cleaned card\")\r\n            this.locked = false;\r\n            resolve(\"\")\r\n          } else if (!msg.includes(\"RECEIVED_CLEAN\")) {\r\n            reject(\"Clean : Bad message structure received\")\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    formatCard() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"FORMAT_\")\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"recu \", msg)\r\n          if (msg == \"FORMATED;\") {\r\n            console.log(\"Formated card\")\r\n            this.locked = false;\r\n            resolve(\"\")\r\n          } else if (!msg.includes(\"RECEIVED_FORMAT\")) {\r\n            reject(\"Format : Bad message structure received\")\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    eraseCard() {\r\n      return new Promise((resolve, reject) => {\r\n        this.locked = true;\r\n        this.sendString(\"ERASE_\")\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          console.log(\"recu \", msg)\r\n          if (msg == \"ERASED;\") {\r\n            console.log(\"Erased card\")\r\n            this.locked = false;\r\n            resolve(\"\")\r\n          } else if (!msg.includes(\"RECEIVED_ERASE\")) {\r\n            reject(\"Erase : Bad message structure received\")\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    ping() {\r\n      return new Promise((resolve, reject) => {\r\n        if (this.locked) {\r\n          console.log(\"Trying to ping while performing another task\")\r\n          return resolve(\"\")\r\n        }\r\n        this.sendString(\"PING_\")\r\n        var timeout = setTimeout(() => {\r\n          reject(\"ping timeout\")}\r\n          \r\n          , 2000);\r\n        this.port.onReceive = data => {\r\n          let textDecoder = new TextDecoder();\r\n          let msg = textDecoder.decode(data);\r\n          msg = msg.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n          if (msg == \"PONG;\") {\r\n            clearTimeout(timeout)\r\n            resolve(\"\")\r\n          } \r\n        }\r\n      })\r\n    }\r\n    //Envoie ce string à l'Arduino\r\n    sendString(str) {\r\n        if (this.port !== undefined) {\r\n            this.port.send(this.textEncoder.encode(str)).catch(error => {\r\n                console.log('Send error: ' + error);\r\n            });\r\n        }\r\n    }\r\n}\r\n","<template>\r\n  <div class=\"content page-wrapper\">\r\n    <div class=\"content-wrapper\">\r\n      <nav class=\"navbar is-fixed-top mb-6\">\r\n        <div class=\"navbar-brand\">\r\n          <a class=\"navbar-item\"\r\n            ><router-link to=\"/\"><i class=\"fas fa-home\" /> Home</router-link></a\r\n          >\r\n          <a\r\n            class=\"navbar-burger\"\r\n            @click=\"showNav = !showNav\"\r\n            :class=\"{ 'is-active': showNav }\"\r\n          >\r\n            <span aria-hidden=\"true\"></span>\r\n            <span aria-hidden=\"true\"></span>\r\n            <span aria-hidden=\"true\"></span>\r\n          </a>\r\n        </div>\r\n        <div id=\"navMenu\" class=\"navbar-menu\" :class=\"{ 'is-active': showNav }\">\r\n          <div class=\"navbar-start\">\r\n            <a class=\"navbar-item\"\r\n              ><router-link to=\"/results\"\r\n                ><i class=\"fas fa-flag-checkered\" /> Enregistrer des résultats</router-link\r\n              ></a\r\n            >\r\n            <!--a class=\"navbar-item\"\r\n              ><router-link to=\"/encoder\"\r\n                ><i class=\"fas fa-code\" /> Encodeur NFC</router-link\r\n              ></a\r\n            -->\r\n            \r\n            <a v-if=\"$store.state.isLoggedIn\" class=\"navbar-item\"\r\n              ><router-link to=\"/school\"\r\n                ><i class=\"fas fa-school\" /> Mon établissement ({{\r\n                  $store.state.schoolName\r\n                }})</router-link\r\n              ></a\r\n            >\r\n            <a class=\"navbar-item\"\r\n              ><router-link to=\"/legal\"\r\n                ><i class=\"fas fa-balance-scale\" /> Mentions\r\n                légales</router-link\r\n              ></a\r\n            >\r\n          </div>\r\n          <div class=\"navbar-end\">\r\n            \r\n            <div class=\"buttons has-addons\">\r\n              <a v-if=\"!usbConnected\" class=\"navbar-item button is-info\" @click=\"connectUsb()\"><span><i class=\"fab fa-usb\"></i> Connexion lecteur NFC USB</span></a>\r\n              <a v-else class=\"navbar-item button is-danger\" @click=\"disconnectUsb()\"><span><i class=\"fab fa-usb\"></i> Déconnexion lecteur NFC USB</span></a>\r\n              <a v-if=\"!$store.state.isLoggedIn\" class=\"navbar-item button\"\r\n                ><router-link to=\"/register\"\r\n                  ><span\r\n                    ><i class=\"fas fa-user-plus\"></i> Inscription</span\r\n                  ></router-link\r\n                ></a\r\n              >\r\n              <a\r\n                v-if=\"!$store.state.isLoggedIn\"\r\n                class=\"navbar-item button is-primary\"\r\n                ><router-link to=\"/login\"\r\n                  ><span\r\n                    ><i class=\"fas fa-sign-in-alt\"></i> Connexion</span\r\n                  ></router-link\r\n                ></a\r\n              >\r\n              <a\r\n                v-if=\"$store.state.isLoggedIn\"\r\n                class=\"navbar-item button is-dark\"\r\n                @click=\"logout()\"\r\n                ><span><i class=\"fas fa-sign-out-alt\"></i> Déconnexion</span></a\r\n              >\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </nav>\r\n\r\n      <transition name=\"fade\">\r\n        <router-view class=\"section container is-widescreen mt-6\"></router-view>\r\n      </transition>\r\n    </div>\r\n\r\n    <PageFooter></PageFooter>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport PageFooter from \"./components/PageFooter.vue\";\r\nimport UsbNfcReader from \"./usbNfcReader.js\"\r\n\r\nexport default {\r\n  name: \"app\",\r\n  data() {\r\n    return {\r\n      showNav: false,\r\n      usbConnected: false\r\n    };\r\n  },\r\n  created() {\r\n    this.usbNfcReader = new UsbNfcReader();\r\n  },\r\n  mounted() {\r\n    var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n    let uri = domainName + \"/loginCheck\";\r\n    this.axios.post(uri, {}, { withCredentials: true }).then(response => {\r\n        console.log(response);\r\n        if (response.data != \"ok\")\r\n          this.$store.commit(\"logout\");\r\n      });\r\n    setTimeout(() => this.checkNfcModule(), 1000)\r\n    setInterval(() => {\r\n      this.checkNfcModule()\r\n    }, 2500)\r\n      \r\n  },\r\n  methods: {\r\n    logout() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + \"/logout\";\r\n      this.axios.post(uri, {}, { withCredentials: true }).then(response => {\r\n        console.log(response);\r\n        this.$store.commit(\"logout\");\r\n      });\r\n    },\r\n    connectUsb() {\r\n      this.usbNfcReader.selectAndConnect()\r\n      this.setTimeout(() => this.checkNfcModule(), 500);\r\n    },\r\n    disconnectUsb() {\r\n      this.usbNfcReader.disconnect()\r\n      this.setTimeout(() => this.checkNfcModule(), 500);\r\n    },\r\n    checkNfcModule() {\r\n      this.usbNfcReader.ping().then(() => {\r\n        this.usbConnected = true;\r\n        console.log(\"Still connected to USB\")\r\n      })\r\n      .catch(() => {\r\n        this.usbConnected = false;\r\n        console.log(\"Distconnected from USB !\")\r\n      })\r\n    }\r\n  },\r\n  components: {\r\n    PageFooter\r\n  }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.page-wrapper {\r\n  display: flex;\r\n  min-height: 100vh;\r\n  flex-direction: column;\r\n}\r\n\r\n.content-wrapper {\r\n  flex: 1;\r\n}\r\n</style>\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=3342100e&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=3342100e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3342100e\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('h1',[_vm._v(\"Escape game économies d'énergies\")]),_c('p',[_vm._v(\" Bienvenu sur cet escape game développé par les associations Clubelek et Objectif21 de l'INSA Lyon \")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <h1>Escape game économies d'énergies</h1>\r\n\r\n    <p>\r\n      Bienvenu sur cet escape game développé par les associations Clubelek et\r\n      Objectif21 de l'INSA Lyon\r\n    </p>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  components: {}\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeComponent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HomeComponent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HomeComponent.vue?vue&type=template&id=688c470e&scoped=true&\"\nimport script from \"./HomeComponent.vue?vue&type=script&lang=js&\"\nexport * from \"./HomeComponent.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"688c470e\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\",attrs:{\"id\":\"app\"}},[(_vm.teams[0].donePuzzles.length > 0)?_c('div',{staticClass:\"container mb-6 has-text-centered\"},[_c('p',{staticClass:\"is-size-3\"},[_vm._v(\"🏅 Classement des équipes 🏅\")]),_vm._l((_vm.teams),function(team,index){return _c('div',{key:team._id},[(team.donePuzzles)?_c('div',[(team.donePuzzles.length > 0)?_c('div',{staticClass:\"box mb-2\"},[_c('nav',{staticClass:\"level\"},[_c('div',{staticClass:\"level-item has-text-centered\"},[_c('div',[_c('p',{staticClass:\"heading\"},[_vm._v(\"Rang\")]),(index==0)?_c('p',{staticClass:\"title\"},[_vm._v(\"🥇\")]):(index==1)?_c('p',{staticClass:\"title\"},[_vm._v(\"🥈\")]):(index==2)?_c('p',{staticClass:\"title\"},[_vm._v(\"🥉\")]):_c('p',{staticClass:\"title\"},[_vm._v(_vm._s(index+1))])])]),_c('div',{staticClass:\"level-item has-text-centered\"},[_c('div',[_c('p',{staticClass:\"heading\"},[_vm._v(\"équipe\")]),_c('p',{staticClass:\"title\"},[_vm._v(_vm._s(team.name))])])]),_c('div',{staticClass:\"level-item has-text-centered\"},[_c('div',[_c('p',{staticClass:\"heading\"},[_vm._v(\"Score\")]),_c('p',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.getGlobalScore(team)))])])])])]):_vm._e()]):_vm._e()])})],2):_vm._e(),_vm._l((_vm.teams),function(team){return _c('div',{key:team._id,staticClass:\"mb-2\",on:{\"addedTeam\":_vm.updateTeams}},[_c('TeamElement',{attrs:{\"team\":team,\"teamArray\":_vm.teams}})],1)}),_c('TeamAdder',{staticClass:\"mt-6\",attrs:{\"teamArray\":_vm.teams}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('span',{staticClass:\"message is-info\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" Equipe \"+_vm._s(_vm.team.name)+\" (\"+_vm._s(_vm.memberCount)+\" membres) \"),_c('button',{staticClass:\"delete\",on:{\"click\":_vm.removeTeam}})]),_c('div',{staticClass:\"message-body\"},[_c('div',{staticClass:\"level\"},[_c('div',{staticClass:\"level-left level-item column\"},[_vm._m(0),_c('ul',_vm._l((_vm.team.members),function(member){return _c('li',{key:member},[_vm._v(_vm._s(member))])}),0)]),_c('div',{staticClass:\"level-right level-item column has-text-centered\"},[(this.team.cardId != '')?_c('p',{staticClass:\"heading\"},[_vm._v(\" Carte associée avec l'ID : \"+_vm._s(_vm.team.cardId)+\" \")]):_c('p',{staticClass:\"heading\"},[_vm._v(\" Aucune carte associée ! \")]),(this.team.cardId != '')?_c('button',{staticClass:\"button is-danger\",on:{\"click\":function($event){return _vm.removeCardPairing()}}},[_vm._v(\" Dissocier la carte \")]):_c('button',{staticClass:\"button is-warning\",on:{\"click\":function($event){return _vm.manageCardPairing()}}},[_vm._v(\" Associer une carte \")])])]),(_vm.team.donePuzzles)?_c('div',[(_vm.team.donePuzzles.length > 0)?_c('p',{staticClass:\"is-size-4\"},[_c('strong',[_vm._v(\"Puzzles effectués :\")])]):_vm._e(),_vm._l((_vm.team.donePuzzles),function(puzzle){return _c('div',{key:puzzle.name},[(puzzle.score)?_c('div',{staticClass:\"level\"},[_c('div',{staticClass:\"level-item level-left\"},[_c('p',[_c('strong',[_vm._v(_vm._s(puzzle.name))]),_vm._v(\" (\"+_vm._s(puzzle.room)+\") : \")])]),_c('div',{staticClass:\"level-item level-right\"},[_c('progress',{staticClass:\"progress is-small\",attrs:{\"max\":puzzle.maxScore},domProps:{\"value\":puzzle.score}})]),_c('div',{staticClass:\"level-item level-right\"},[_c('p',[_vm._v(_vm._s(puzzle.score)+\"/\"+_vm._s(puzzle.maxScore))])])]):_c('div',{staticClass:\"level \"},[_c('div',{staticClass:\"level-item level-left\"},[_c('p',[_c('strong',[_vm._v(_vm._s(puzzle.name))]),_vm._v(\" (\"+_vm._s(puzzle.room)+\") : \")])]),_c('div',{staticClass:\"level-item level-right\"},[(puzzle.validated)?_c('span',{staticClass:\"icon has-text-success\"},[_c('i',{staticClass:\"fas fa-check-circle\"})]):_c('span',{staticClass:\"icon has-text-danger\"},[_c('i',{staticClass:\"fas fa-times-circle\"})])])])])})],2):_vm._e()]),_c('div',{staticClass:\"modal\",class:{ 'is-active': _vm.showPairingModal }},[_c('div',{staticClass:\"modal-background\"}),_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"message\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" Association d'une carte NFC à l'équipe \"+_vm._s(_vm.team.name)+\" \")]),_vm._m(1)])]),_c('button',{staticClass:\"modal-close is-large\",on:{\"click\":function($event){_vm.showPairingModal = false}}})]),_c('div',{staticClass:\"modal\",class:{ 'is-active': _vm.showAlreadyPairedError}},[_c('div',{staticClass:\"modal-background\"}),_vm._m(2),_c('button',{staticClass:\"modal-close is-large\",on:{\"click\":function($event){_vm.showAlreadyPairedError = false}}})])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"is-size-4\"},[_c('strong',[_vm._v(\"Membres de l'équipe :\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message-body\"},[_vm._v(\" Veuillez scanner une carte sur le lecteur pour l'associer à cette équipe. \"),_c('br'),_c('br'),_vm._v(\" ATTENTION : Ceci effacera le contenu actuel de cette carte ! Vous ne pourrez pas attribuer à cette équipe une carte déjà attribuée à une autre équipe. Merci donc de dissocier toutes les cartes de votre équipe une fois le jeu fini. \"),_c('br'),_c('br'),_vm._v(\" Vous devez avoir connecté le lecteur USB au site. Déposez la carte d'équipe sur le lecteur NFC (face en plastique). Vous devez entendre deux bip consécutifs. Si cette fenêtre se ferme, c'est bon ! Si cela prend du temps ou qu'il n'y a qu'un seul bip, fermez et recommencez. Si le problème persiste, débranchez le lecteur, rechargez la page puis rebranchez le lecteur. \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"message is-danger\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" Carte déjà associée à une autre équipe ! \")]),_c('div',{staticClass:\"message-body\"},[_vm._v(\" Erreur : cette carte est déjà associée à une autre équipe (de votre établissement ou non). Merci de la dissocier de l'équipe originale. \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <span class=\"message is-info\">\r\n      <div class=\"message-header\">\r\n        Equipe {{ team.name }} ({{ memberCount }} membres)\r\n        <button class=\"delete\" @click=\"removeTeam\"></button>\r\n      </div>\r\n\r\n      <div class=\"message-body\">\r\n        <div class=\"level\">\r\n          <div class=\"level-left level-item column\">\r\n            <p class=\"is-size-4\"><strong>Membres de l'équipe :</strong></p>\r\n            <ul>\r\n              <li v-for=\"member in team.members\" :key=\"member\">{{ member }}</li>\r\n            </ul>\r\n          </div>\r\n          <div class=\"level-right level-item column has-text-centered\">\r\n            <p class=\"heading\" v-if=\"this.team.cardId != ''\">\r\n              Carte associée avec l'ID : {{ team.cardId }}\r\n            </p>\r\n            <p class=\"heading\" v-else>\r\n              Aucune carte associée !\r\n            </p>\r\n            <button v-if=\"this.team.cardId != ''\" @click=\"removeCardPairing()\" class=\"button is-danger\">\r\n              Dissocier la carte\r\n            </button>\r\n            <button\r\n              v-else\r\n              @click=\"manageCardPairing()\"\r\n              class=\"button is-warning\"\r\n            >\r\n              Associer une carte\r\n            </button>\r\n          </div>\r\n        </div>\r\n        <div v-if=\"team.donePuzzles\">\r\n          <p v-if=\"team.donePuzzles.length > 0\" class=\"is-size-4\">\r\n            <strong>Puzzles effectués :</strong>\r\n          </p>\r\n          <div v-for=\"puzzle in team.donePuzzles\" :key=\"puzzle.name\">\r\n            <div class=\"level\" v-if=\"puzzle.score\">\r\n              <div class=\"level-item level-left\">\r\n                <p>\r\n                  <strong>{{ puzzle.name }}</strong> ({{ puzzle.room }}) :\r\n                </p>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <progress\r\n                  class=\"progress is-small\"\r\n                  :value=\"puzzle.score\"\r\n                  :max=\"puzzle.maxScore\"\r\n                ></progress>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <p>{{ puzzle.score }}/{{ puzzle.maxScore }}</p>\r\n              </div>\r\n            </div>\r\n            <div v-else class=\"level \">\r\n              <div class=\"level-item level-left\">\r\n                <p>\r\n                  <strong>{{ puzzle.name }}</strong> ({{ puzzle.room }}) :\r\n                </p>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <span v-if=\"puzzle.validated\" class=\"icon has-text-success\">\r\n                  <i class=\"fas fa-check-circle\"></i>\r\n                </span>\r\n                <span v-else class=\"icon has-text-danger\">\r\n                  <i class=\"fas fa-times-circle\"></i>\r\n                </span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"modal\" :class=\"{ 'is-active': showPairingModal }\">\r\n        <div class=\"modal-background\"></div>\r\n        <div class=\"modal-content\">\r\n          <div class=\"message\">\r\n            <div class=\"message-header\">\r\n              Association d'une carte NFC à l'équipe {{ team.name }}\r\n            </div>\r\n            <div class=\"message-body\">\r\n              Veuillez scanner une carte sur le lecteur pour l'associer à cette\r\n              équipe. <br>\r\n              <br>\r\n              ATTENTION : Ceci effacera le contenu actuel de cette carte ! Vous ne pourrez pas attribuer à cette équipe une carte déjà attribuée à une autre équipe.\r\n              Merci donc de dissocier toutes les cartes de votre équipe une fois le jeu fini.\r\n              <br>\r\n              <br>\r\n              Vous devez avoir connecté le lecteur USB au site. Déposez la carte d'équipe sur le lecteur NFC (face en plastique). Vous devez entendre deux bip consécutifs. Si cette fenêtre se ferme, c'est bon ! Si cela prend du temps ou qu'il n'y a qu'un seul bip, fermez et recommencez. Si le problème persiste, débranchez le lecteur, rechargez la page puis rebranchez le lecteur.\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <button\r\n          class=\"modal-close is-large\"\r\n          @click=\"showPairingModal = false\"\r\n        ></button>\r\n      </div>\r\n\r\n      <div class=\"modal\" :class=\"{ 'is-active': showAlreadyPairedError}\" >\r\n        <div class=\"modal-background\"></div>\r\n        <div class=\"modal-content\">\r\n          <div class=\"message is-danger\">\r\n            <div class=\"message-header\">\r\n              Carte déjà associée à une autre équipe !\r\n            </div>\r\n            <div class=\"message-body\">\r\n              Erreur : cette carte est déjà associée à une autre équipe (de votre établissement ou non). Merci de la dissocier de l'équipe originale.\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <button\r\n          class=\"modal-close is-large\"\r\n          @click=\"showAlreadyPairedError = false\"\r\n        ></button>\r\n      </div>\r\n    </span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"TeamElement\",\r\n  props: {\r\n    team: Object,\r\n    teamArray: Array\r\n  },\r\n  data() {\r\n    return {\r\n      showPairingModal: false,\r\n      showAlreadyPairedError: false\r\n    };\r\n  },\r\n\r\n  computed: {\r\n    memberCount: function() {\r\n      return this.team.members.length;\r\n    }\r\n  },\r\n\r\n  methods: {\r\n    removeTeam: function() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + `/school/deleteTeam/${this.team._id}`;\r\n      this.axios.delete(uri, { withCredentials: true }).then(response => {\r\n        console.log(\"bien supprimé !\", response);\r\n        this.teamArray.splice(this.teamArray.indexOf(this.team), 1);\r\n      });\r\n    },\r\n\r\n    manageCardPairing: function() {\r\n      this.showPairingModal = !this.showPairingModal\r\n      console.log(\"Trying to reset card\")\r\n      this.$parent.$parent.usbNfcReader.cleanCard().then(()=> {\r\n      this.$parent.$parent.usbNfcReader.formatCard().then(()=> {\r\n      this.$parent.$parent.usbNfcReader.eraseCard().then(()=> {\r\n        this.$parent.$parent.usbNfcReader.writeCard(\"team\").then(response=> {\r\n          console.log(\"Reset successful, trying to read uid\", response)\r\n          this.$parent.$parent.usbNfcReader.readTagUid()\r\n          .then(response => {   \r\n            var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n            let uri = domainName + `/school/updateTeamCard/${this.team._id}`;\r\n            this.axios\r\n            .post(uri, {cardId: response}, { withCredentials: true })\r\n            .then(() => {\r\n              console.log(\"Carte ajoutée !\");\r\n              this.team.cardId = response   \r\n              this.showPairingModal = false;\r\n              this.$forceUpdate()\r\n            }).catch(response => {\r\n              this.showPairingModal = false;\r\n              this.showAlreadyPairedError = true;\r\n              this.team.cardId = \"\";\r\n              this.$forceUpdate()\r\n              console.log(\"Carte déjà utilisée !\", response)\r\n            })\r\n        \r\n          })\r\n        })\r\n      })\r\n      })\r\n      })\r\n    },\r\n\r\n    removeCardPairing: function() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName `/school/removeTeamCard/${this.team._id}`;\r\n        this.axios\r\n        .post(uri, this.team, { withCredentials: true })\r\n        .then(response => {\r\n          console.log(\"Carte dissociée !\", response);\r\n          this.team.cardId = \"\";\r\n          this.$forceUpdate()\r\n        });\r\n    }\r\n  },\r\n  created: function()  {\r\n    if (!this.team.cardId) this.team.cardId = \"\"\r\n    if (this.team.cardId == null) this.team.cardId =\"\"\r\n  }\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamElement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamElement.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TeamElement.vue?vue&type=template&id=2df3538e&scoped=true&\"\nimport script from \"./TeamElement.vue?vue&type=script&lang=js&\"\nexport * from \"./TeamElement.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2df3538e\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message is-primary\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\"Créer une nouvelle équipe\")]),_c('div',{staticClass:\"message-body\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.addTeam($event)}}},[_c('div',{staticClass:\"field\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Nom de l'équipe\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.team.name),expression:\"team.name\"}],staticClass:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.team.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.team, \"name\", $event.target.value)}}})]),_c('br'),_c('div',{staticClass:\"field\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Membres de l'équipe\")]),_vm._l((_vm.count),function(c,index){return _c('div',{key:c._id},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.team.members[index]),expression:\"team.members[index]\"}],staticClass:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.team.members[index])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.team.members, index, $event.target.value)}}})])}),_c('button',{staticClass:\"button is-primary is-outlined\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.addMemberField}},[_vm._v(\" + \")]),_c('button',{staticClass:\"button is-primary is-outlined\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.removeMemberField}},[_vm._v(\" - \")])],2),_c('br'),_vm._m(0)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('button',{staticClass:\"button is-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\" Ajouter l'équipe \")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"message is-primary\">\r\n    <div class=\"message-header\">Créer une nouvelle équipe</div>\r\n    <div class=\"message-body\">\r\n      <form @submit.prevent=\"addTeam\">\r\n        <div class=\"field\">\r\n          <label class=\"label\">Nom de l'équipe</label>\r\n          <input class=\"input\" type=\"text\" v-model=\"team.name\" />\r\n        </div>\r\n        <br />\r\n        <div class=\"field\">\r\n          <label class=\"label\">Membres de l'équipe</label>\r\n          <div v-for=\"(c, index) in count\" :key=\"c._id\">\r\n            <input class=\"input\" type=\"text\" v-model=\"team.members[index]\" />\r\n          </div>\r\n          <button\r\n            class=\"button is-primary is-outlined\"\r\n            type=\"button\"\r\n            @click=\"addMemberField\"\r\n          >\r\n            +\r\n          </button>\r\n          <button\r\n            class=\"button is-primary is-outlined\"\r\n            type=\"button\"\r\n            @click=\"removeMemberField\"\r\n          >\r\n            -\r\n          </button>\r\n        </div>\r\n        <br />\r\n        <div>\r\n          <button class=\"button is-primary\" type=\"submit\">\r\n            Ajouter l'équipe\r\n          </button>\r\n        </div>\r\n      </form>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"TeamAdder\",\r\n  props: {\r\n    teamArray: Array\r\n  },\r\n  data() {\r\n    return {\r\n      team: { name: \"\", members: [], cardId:\"\" },\r\n      count: 1\r\n    };\r\n  },\r\n  methods: {\r\n    addTeam() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + \"/school/addTeam\";\r\n      this.axios\r\n        .post(uri, this.team, { withCredentials: true })\r\n        .then(response => {\r\n          console.log(\"Team créée !\", response);\r\n          this.teamArray.push(this.team);\r\n          this.$emit('addedTeam', this.teamArray);\r\n          this.team = { name: \"\", members: [] };\r\n        });\r\n    },\r\n    addMemberField() {\r\n      this.count++;\r\n    },\r\n    removeMemberField() {\r\n      if (this.count > 0) {\r\n        this.team.members.pop();\r\n        this.count--;\r\n      }\r\n      \r\n    }\r\n  }\r\n};\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamAdder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamAdder.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TeamAdder.vue?vue&type=template&id=069fa8c2&\"\nimport script from \"./TeamAdder.vue?vue&type=script&lang=js&\"\nexport * from \"./TeamAdder.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div id=\"app\" class=\"content\">\r\n\r\n        <div v-if=\"teams[0].donePuzzles.length > 0\" class=\"container mb-6 has-text-centered\">\r\n          <p class=\"is-size-3\">🏅  Classement des équipes  🏅</p>\r\n\r\n          <div v-for=\"(team, index) in teams\" :key=\"team._id\" >\r\n            <div v-if=\"team.donePuzzles\">\r\n              <div v-if=\"team.donePuzzles.length > 0\" class=\"box mb-2\">\r\n                <nav class=\"level\">\r\n                  <div class=\"level-item has-text-centered\">\r\n                    <div>\r\n                      <p class=\"heading\">Rang</p>\r\n                      <p v-if=\"index==0\" class=\"title\">🥇</p>\r\n                      <p v-else-if=\"index==1\" class=\"title\">🥈</p>\r\n                      <p v-else-if=\"index==2\" class=\"title\">🥉</p>\r\n                      <p v-else class=\"title\">{{index+1}}</p>\r\n                    </div>\r\n                  </div>\r\n                  <div class=\"level-item has-text-centered\">\r\n                    <div>\r\n                      <p class=\"heading\">équipe</p>\r\n                      <p class=\"title\">{{team.name}}</p>\r\n                    </div>\r\n                  </div>\r\n                  <div class=\"level-item has-text-centered\">\r\n                    <div>\r\n                      <p class=\"heading\">Score</p>\r\n                      <p class=\"title\">{{getGlobalScore(team)}}</p>\r\n                    </div>\r\n                  </div>\r\n                </nav>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n\r\n        <div class=\"mb-2\" @addedTeam=\"updateTeams\" v-for=\"team in teams\" :key=\"team._id\">\r\n          <TeamElement :team=\"team\" :teamArray=\"teams\" />\r\n        </div>\r\n\r\n\r\n        <TeamAdder class=\"mt-6\" :teamArray=\"teams\"></TeamAdder>\r\n      </div>\r\n</template>\r\n\r\n<script>\r\nimport TeamElement from \"./TeamElement.vue\";\r\nimport TeamAdder from \"./TeamAdder.vue\";\r\n\r\nexport default {\r\n  name: \"SchoolManager\",\r\n  components: {\r\n    TeamElement,\r\n    TeamAdder\r\n  },\r\n  data() {\r\n    return {\r\n      teams: []\r\n    };\r\n  },\r\n  created() {\r\n    \r\n  },\r\n\r\n  mounted() {\r\n    var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n    let uri = domainName + \"/school\";\r\n    this.axios.get(uri, { withCredentials: true }).then(response => {\r\n      this.teams = response.data;\r\n      this.sortTeams()\r\n      console.log(response);\r\n    });\r\n\r\n  },\r\n  methods: {\r\n    updateTeams(teams) {\r\n      this.teams = teams;\r\n      this.sortTeams()\r\n    },\r\n    getGlobalScore(team) {\r\n      var globalScore = 0\r\n      team.donePuzzles.forEach(puzzle => {\r\n        if (puzzle.score)\r\n          globalScore += parseInt(puzzle.coef)*parseInt(puzzle.score)\r\n        else if (puzzle.validated)\r\n          globalScore += parseInt(puzzle.coef)\r\n        \r\n      });\r\n      return globalScore;\r\n    },\r\n    sortTeams() {\r\n      this.teams.sort((a, b) => {\r\n        return this.getGlobalScore(b) - this.getGlobalScore(a)\r\n      })\r\n    }\r\n  }\r\n  \r\n};\r\n</script>\r\n\r\n<style></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SchoolManager.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SchoolManager.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SchoolManager.vue?vue&type=template&id=57c61bdb&\"\nimport script from \"./SchoolManager.vue?vue&type=script&lang=js&\"\nexport * from \"./SchoolManager.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('h2',[_vm._v(\"Définitions\")]),_c('p',[_c('b',[_vm._v(\"Client :\")]),_vm._v(\" tout professionnel ou personne physique capable au sens des articles 1123 et suivants du Code civil, ou personne morale, qui visite le Site objet des présentes conditions générales.\"),_c('br'),_c('b',[_vm._v(\"Prestations et Services :\")]),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" met à disposition des Clients : \")]),_c('p',[_c('b',[_vm._v(\"Contenu :\")]),_vm._v(\" Ensemble des éléments constituants l’information présente sur le Site, notamment textes – images – vidéos. \")]),_c('p',[_c('b',[_vm._v(\"Informations clients :\")]),_vm._v(\" Ci après dénommé « Information (s) » qui correspondent à l’ensemble des données personnelles susceptibles d’être détenues par \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" pour la gestion de votre compte, de la gestion de la relation client et à des fins d’analyses et de statistiques. \")]),_c('p',[_c('b',[_vm._v(\"Utilisateur :\")]),_vm._v(\" Internaute se connectant, utilisant le site susnommé. \")]),_c('p',[_c('b',[_vm._v(\"Informations personnelles :\")]),_vm._v(\" « Les informations qui permettent, sous quelque forme que ce soit, directement ou non, l'identification des personnes physiques auxquelles elles s'appliquent » (article 4 de la loi n° 78-17 du 6 janvier 1978). \")]),_c('p',[_vm._v(\" Les termes « données à caractère personnel », « personne concernée », « sous traitant » et « données sensibles » ont le sens défini par le Règlement Général sur la Protection des Données (RGPD : n° 2016-679) \")]),_c('h2',[_vm._v(\"1. Présentation du site internet.\")]),_c('p',[_vm._v(\" En vertu de l'article 6 de la loi n° 2004-575 du 21 juin 2004 pour la confiance dans l'économie numérique, il est précisé aux utilisateurs du site internet \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" l'identité des différents intervenants dans le cadre de sa réalisation et de son suivi: \")]),_c('p',[_c('strong',[_vm._v(\"Propriétaire\")]),_vm._v(\" : Association loi 1901 Clubelek (Association loi 1901) – INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne\"),_c('br'),_c('strong',[_vm._v(\"Responsable publication\")]),_vm._v(\" : Clubelek – clubelek@insa-lyon.fr\"),_c('br'),_vm._v(\" Le responsable publication est une personne physique ou une personne morale.\"),_c('br'),_c('strong',[_vm._v(\"Webmaster\")]),_vm._v(\" : Antoine Rochebois – antoine.rochebois@insa-lyon.fr\"),_c('br'),_c('strong',[_vm._v(\"Hébergeur\")]),_vm._v(\" : ovh – 2 rue Kellermann 59100 Roubaix 1007\"),_c('br'),_c('strong',[_vm._v(\"Délégué à la protection des données\")]),_vm._v(\" : Antoine Rochebois – antoine.rochebois@insa-lyon.fr\"),_c('br')]),_c('div',{attrs:{\"ng-bind-html\":\"linkHTML\"}},[_c('p',[_vm._v(\" Ce modèle de mentions légales est proposé par le \"),_c('a',{attrs:{\"href\":\"https://fr.orson.io/1371/generateur-mentions-legales\",\"title\":\"générateur gratuit offert par Orson.io\"}},[_vm._v(\"générateur gratuit offert par Orson.io\")])])]),_c('h2',[_vm._v(\" 2. Conditions générales d’utilisation du site et des services proposés. \")]),_c('p',[_vm._v(\" Le Site constitue une œuvre de l’esprit protégée par les dispositions du Code de la Propriété Intellectuelle et des Réglementations Internationales applicables. Le Client ne peut en aucune manière réutiliser, céder ou exploiter pour son propre compte tout ou partie des éléments ou travaux du Site. \")]),_c('p',[_vm._v(\" L’utilisation du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" implique l’acceptation pleine et entière des conditions générales d’utilisation ci-après décrites. Ces conditions d’utilisation sont susceptibles d’être modifiées ou complétées à tout moment, les utilisateurs du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" sont donc invités à les consulter de manière régulière. \")]),_c('p',[_vm._v(\" Ce site internet est normalement accessible à tout moment aux utilisateurs. Une interruption pour raison de maintenance technique peut être toutefois décidée par \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", qui s’efforcera alors de communiquer préalablement aux utilisateurs les dates et heures de l’intervention. Le site web \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est mis à jour régulièrement par \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" responsable. De la même façon, les mentions légales peuvent être modifiées à tout moment : elles s’imposent néanmoins à l’utilisateur qui est invité à s’y référer le plus souvent possible afin d’en prendre connaissance. \")]),_c('h2',[_vm._v(\"3. Description des services fournis.\")]),_c('p',[_vm._v(\" Le site internet \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" a pour objet de fournir une information concernant l’ensemble des activités de la société. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’efforce de fournir sur le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" des informations aussi précises que possible. Toutefois, il ne pourra être tenu responsable des oublis, des inexactitudes et des carences dans la mise à jour, qu’elles soient de son fait ou du fait des tiers partenaires qui lui fournissent ces informations. \")]),_c('p',[_vm._v(\" Toutes les informations indiquées sur le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" sont données à titre indicatif, et sont susceptibles d’évoluer. Par ailleurs, les renseignements figurant sur le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne sont pas exhaustifs. Ils sont donnés sous réserve de modifications ayant été apportées depuis leur mise en ligne. \")]),_c('h2',[_vm._v(\"4. Limitations contractuelles sur les données techniques.\")]),_c('p',[_vm._v(\" Le site utilise la technologie JavaScript. Le site Internet ne pourra être tenu responsable de dommages matériels liés à l’utilisation du site. De plus, l’utilisateur du site s’engage à accéder au site en utilisant un matériel récent, ne contenant pas de virus et avec un navigateur de dernière génération mis-à-jour Le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est hébergé chez un prestataire sur le territoire de l’Union Européenne conformément aux dispositions du Règlement Général sur la Protection des Données (RGPD : n° 2016-679) \")]),_c('p',[_vm._v(\" L’objectif est d’apporter une prestation qui assure le meilleur taux d’accessibilité. L’hébergeur assure la continuité de son service 24 Heures sur 24, tous les jours de l’année. Il se réserve néanmoins la possibilité d’interrompre le service d’hébergement pour les durées les plus courtes possibles notamment à des fins de maintenance, d’amélioration de ses infrastructures, de défaillance de ses infrastructures ou si les Prestations et Services génèrent un trafic réputé anormal. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" et l’hébergeur ne pourront être tenus responsables en cas de dysfonctionnement du réseau Internet, des lignes téléphoniques ou du matériel informatique et de téléphonie lié notamment à l’encombrement du réseau empêchant l’accès au serveur. \")]),_c('h2',[_vm._v(\"5. Propriété intellectuelle et contrefaçons.\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est propriétaire des droits de propriété intellectuelle et détient les droits d’usage sur tous les éléments accessibles sur le site internet, notamment les textes, images, graphismes, logos, vidéos, icônes et sons. Toute reproduction, représentation, modification, publication, adaptation de tout ou partie des éléments du site, quel que soit le moyen ou le procédé utilisé, est interdite, sauf autorisation écrite préalable de : \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". \")]),_c('p',[_vm._v(\" Toute exploitation non autorisée du site ou de l’un quelconque des éléments qu’il contient sera considérée comme constitutive d’une contrefaçon et poursuivie conformément aux dispositions des articles L.335-2 et suivants du Code de Propriété Intellectuelle. \")]),_c('h2',[_vm._v(\"6. Limitations de responsabilité.\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" agit en tant qu’éditeur du site. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est responsable de la qualité et de la véracité du Contenu qu’il publie. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne pourra être tenu responsable des dommages directs et indirects causés au matériel de l’utilisateur, lors de l’accès au site internet \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", et résultant soit de l’utilisation d’un matériel ne répondant pas aux spécifications indiquées au point 4, soit de l’apparition d’un bug ou d’une incompatibilité. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne pourra également être tenu responsable des dommages indirects (tels par exemple qu’une perte de marché ou perte d’une chance) consécutifs à l’utilisation du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". Des espaces interactifs (possibilité de poser des questions dans l’espace contact) sont à la disposition des utilisateurs. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" se réserve le droit de supprimer, sans mise en demeure préalable, tout contenu déposé dans cet espace qui contreviendrait à la législation applicable en France, en particulier aux dispositions relatives à la protection des données. Le cas échéant, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" se réserve également la possibilité de mettre en cause la responsabilité civile et/ou pénale de l’utilisateur, notamment en cas de message à caractère raciste, injurieux, diffamant, ou pornographique, quel que soit le support utilisé (texte, photographie …). \")]),_c('h2',[_vm._v(\"7. Gestion des données personnelles.\")]),_c('p',[_vm._v(\" Le Client est informé des réglementations concernant la communication marketing, la loi du 21 Juin 2014 pour la confiance dans l’Economie Numérique, la Loi Informatique et Liberté du 06 Août 2004 ainsi que du Règlement Général sur la Protection des Données (RGPD : n° 2016-679). \")]),_c('h3',[_vm._v(\"7.1 Responsables de la collecte des données personnelles\")]),_c('p',[_vm._v(\" Pour les Données Personnelles collectées dans le cadre de la création du compte personnel de l’Utilisateur et de sa navigation sur le Site, le responsable du traitement des Données Personnelles est : Clubelek (Association loi 1901). \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\"est représenté par Thomas Vadebout, son représentant légal \")]),_c('p',[_vm._v(\" En tant que responsable du traitement des données qu’il collecte, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’engage à respecter le cadre des dispositions légales en vigueur. Il lui appartient notamment au Client d’établir les finalités de ses traitements de données, de fournir à ses prospects et clients, à partir de la collecte de leurs consentements, une information complète sur le traitement de leurs données personnelles et de maintenir un registre des traitements conforme à la réalité. Chaque fois que \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" traite des Données Personnelles, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" prend toutes les mesures raisonnables pour s’assurer de l’exactitude et de la pertinence des Données Personnelles au regard des finalités pour lesquelles \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" les traite. \")]),_c('h3',[_vm._v(\"7.2 Finalité des données collectées\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est susceptible de traiter tout ou partie des données : \")]),_c('ul',[_c('li',[_vm._v(\" pour permettre la navigation sur le Site et la gestion et la traçabilité des prestations et services commandés par l’utilisateur : données de connexion et d’utilisation du Site, facturation, historique des commandes, etc. \")]),_c('li',[_vm._v(\" pour prévenir et lutter contre la fraude informatique (spamming, hacking…) : matériel informatique utilisé pour la navigation, l’adresse IP, le mot de passe (hashé) \")]),_c('li',[_vm._v(\" pour améliorer la navigation sur le Site : données de connexion et d’utilisation \")]),_c('li',[_vm._v(\" pour mener des enquêtes de satisfaction facultatives sur \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" : adresse email \")]),_c('li',[_vm._v(\" pour mener des campagnes de communication (sms, mail) : numéro de téléphone, adresse email \")])]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne commercialise pas vos données personnelles qui sont donc uniquement utilisées par nécessité ou à des fins statistiques et d’analyses. \")]),_c('h3',[_vm._v(\"7.3 Droit d’accès, de rectification et d’opposition\")]),_c('p',[_vm._v(\" Conformément à la réglementation européenne en vigueur, les Utilisateurs de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" disposent des droits suivants : \")]),_c('ul',[_c('li',[_vm._v(\" droit d'accès (article 15 RGPD) et de rectification (article 16 RGPD), de mise à jour, de complétude des données des Utilisateurs droit de verrouillage ou d’effacement des données des Utilisateurs à caractère personnel (article 17 du RGPD), lorsqu’elles sont inexactes, incomplètes, équivoques, périmées, ou dont la collecte, l'utilisation, la communication ou la conservation est interdite \")]),_c('li',[_vm._v(\" droit de retirer à tout moment un consentement (article 13-2c RGPD) \")]),_c('li',[_vm._v(\" droit à la limitation du traitement des données des Utilisateurs (article 18 RGPD) \")]),_c('li',[_vm._v(\" droit d’opposition au traitement des données des Utilisateurs (article 21 RGPD) \")]),_c('li',[_vm._v(\" droit à la portabilité des données que les Utilisateurs auront fournies, lorsque ces données font l’objet de traitements automatisés fondés sur leur consentement ou sur un contrat (article 20 RGPD) \")]),_c('li',[_vm._v(\" droit de définir le sort des données des Utilisateurs après leur mort et de choisir à qui \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" devra communiquer (ou non) ses données à un tiers qu’ils aura préalablement désigné \")])]),_c('p',[_vm._v(\" Dès que \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" a connaissance du décès d’un Utilisateur et à défaut d’instructions de sa part, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’engage à détruire ses données, sauf si leur conservation s’avère nécessaire à des fins probatoires ou pour répondre à une obligation légale. \")]),_c('p',[_vm._v(\" Si l’Utilisateur souhaite savoir comment \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" utilise ses Données Personnelles, demander à les rectifier ou s’oppose à leur traitement, l’Utilisateur peut contacter \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" par écrit à l’adresse suivante : \")]),_vm._v(\" Clubelek (Association loi 1901) – DPO, Antoine Rochebois \"),_c('br'),_vm._v(\" INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne. \"),_c('p',[_vm._v(\" Dans ce cas, l’Utilisateur doit indiquer les Données Personnelles qu’il souhaiterait que \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" corrige, mette à jour ou supprime, en s’identifiant précisément avec une copie d’une pièce d’identité (carte d’identité ou passeport). \")]),_c('p',[_vm._v(\" Les demandes de suppression de Données Personnelles seront soumises aux obligations qui sont imposées à \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" par la loi, notamment en matière de conservation ou d’archivage des documents. Enfin, les Utilisateurs de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" peuvent déposer une réclamation auprès des autorités de contrôle, et notamment de la CNIL (https://www.cnil.fr/fr/plaintes). \")]),_c('h3',[_vm._v(\"7.4 Non-communication des données personnelles\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’interdit de traiter, héberger ou transférer les Informations collectées sur ses Clients vers un pays situé en dehors de l’Union européenne ou reconnu comme « non adéquat » par la Commission européenne sans en informer préalablement le client. Pour autant, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" reste libre du choix de ses sous-traitants techniques et commerciaux à la condition qu’il présentent les garanties suffisantes au regard des exigences du Règlement Général sur la Protection des Données (RGPD : n° 2016-679). \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" s’engage à prendre toutes les précautions nécessaires afin de préserver la sécurité des Informations et notamment qu’elles ne soient pas communiquées à des personnes non autorisées. Cependant, si un incident impactant l’intégrité ou la confidentialité des Informations du Client est portée à la connaissance de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", celle-ci devra dans les meilleurs délais informer le Client et lui communiquer les mesures de corrections prises. Par ailleurs \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ne collecte aucune « données sensibles ». \")]),_c('p',[_vm._v(\" Les Données Personnelles de l’Utilisateur peuvent être traitées par des filiales de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" et des sous-traitants (prestataires de services), exclusivement afin de réaliser les finalités de la présente politique. \")]),_c('p',[_vm._v(\" Dans la limite de leurs attributions respectives et pour les finalités rappelées ci-dessus, les principales personnes susceptibles d’avoir accès aux données des Utilisateurs de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" sont principalement les agents de notre service client. \")]),_c('div',{attrs:{\"ng-bind-html\":\"rgpdHTML\"}}),_c('h2',[_vm._v(\"8. Notification d’incident\")]),_c('p',[_vm._v(\" Quels que soient les efforts fournis, aucune méthode de transmission sur Internet et aucune méthode de stockage électronique n'est complètement sûre. Nous ne pouvons en conséquence pas garantir une sécurité absolue. Si nous prenions connaissance d'une brèche de la sécurité, nous avertirions les utilisateurs concernés afin qu'ils puissent prendre les mesures appropriées. Nos procédures de notification d’incident tiennent compte de nos obligations légales, qu'elles se situent au niveau national ou européen. Nous nous engageons à informer pleinement nos clients de toutes les questions relevant de la sécurité de leur compte et à leur fournir toutes les informations nécessaires pour les aider à respecter leurs propres obligations réglementaires en matière de reporting. \")]),_c('p',[_vm._v(\" Aucune information personnelle de l'utilisateur du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" n'est publiée à l'insu de l'utilisateur, échangée, transférée, cédée ou vendue sur un support quelconque à des tiers. Seule l'hypothèse du rachat de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" et de ses droits permettrait la transmission des dites informations à l'éventuel acquéreur qui serait à son tour tenu de la même obligation de conservation et de modification des données vis à vis de l'utilisateur du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". \")]),_c('h3',[_vm._v(\"Sécurité\")]),_c('p',[_vm._v(\" Pour assurer la sécurité et la confidentialité des Données Personnelles et des Données Personnelles de Santé, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" utilise des réseaux protégés par des dispositifs standards tels que par pare-feu, la pseudonymisation, l’encryption et mot de passe. \")]),_c('p',[_vm._v(\" Lors du traitement des Données Personnelles, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\"prend toutes les mesures raisonnables visant à les protéger contre toute perte, utilisation détournée, accès non autorisé, divulgation, altération ou destruction. \")]),_c('h2',[_vm._v(\"9. Liens hypertextes « cookies » et balises (“tags”) internet\")]),_c('p',[_vm._v(\" Le site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" contient un certain nombre de liens hypertextes vers d’autres sites, mis en place avec l’autorisation de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". Cependant, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" n’a pas la possibilité de vérifier le contenu des sites ainsi visités, et n’assumera en conséquence aucune responsabilité de ce fait. \")]),_vm._v(\" Sauf si vous décidez de désactiver les cookies, vous acceptez que le site puisse les utiliser. Vous pouvez à tout moment désactiver ces cookies et ce gratuitement à partir des possibilités de désactivation qui vous sont offertes et rappelées ci-après, sachant que cela peut réduire ou empêcher l’accessibilité à tout ou partie des Services proposés par le site. \"),_c('p'),_c('h3',[_vm._v(\"9.1. « COOKIES »\")]),_c('p',[_vm._v(\" Un « cookie » est un petit fichier d’information envoyé sur le navigateur de l’Utilisateur et enregistré au sein du terminal de l’Utilisateur (ex : ordinateur, smartphone), (ci-après « Cookies »). Ce fichier comprend des informations telles que le nom de domaine de l’Utilisateur, le fournisseur d’accès Internet de l’Utilisateur, le système d’exploitation de l’Utilisateur, ainsi que la date et l’heure d’accès. Les Cookies ne risquent en aucun cas d’endommager le terminal de l’Utilisateur. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est susceptible de traiter les informations de l’Utilisateur concernant sa visite du Site, telles que les pages consultées, les recherches effectuées. Ces informations permettent à \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" d’améliorer le contenu du Site, de la navigation de l’Utilisateur. \")]),_c('p',[_vm._v(\" Les Cookies facilitant la navigation et/ou la fourniture des services proposés par le Site, l’Utilisateur peut configurer son navigateur pour qu’il lui permette de décider s’il souhaite ou non les accepter de manière à ce que des Cookies soient enregistrés dans le terminal ou, au contraire, qu’ils soient rejetés, soit systématiquement, soit selon leur émetteur. L’Utilisateur peut également configurer son logiciel de navigation de manière à ce que l’acceptation ou le refus des Cookies lui soient proposés ponctuellement, avant qu’un Cookie soit susceptible d’être enregistré dans son terminal. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" informe l’Utilisateur que, dans ce cas, il se peut que les fonctionnalités de son logiciel de navigation ne soient pas toutes disponibles. \")]),_c('p',[_vm._v(\" Si l’Utilisateur refuse l’enregistrement de Cookies dans son terminal ou son navigateur, ou si l’Utilisateur supprime ceux qui y sont enregistrés, l’Utilisateur est informé que sa navigation et son expérience sur le Site peuvent être limitées. Cela pourrait également être le cas lorsque \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ou l’un de ses prestataires ne peut pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par le terminal, les paramètres de langue et d’affichage ou le pays depuis lequel le terminal semble connecté à Internet. \")]),_c('p',[_vm._v(\" Le cas échéant, \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" décline toute responsabilité pour les conséquences liées au fonctionnement dégradé du Site et des services éventuellement proposés par \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", résultant (i) du refus de Cookies par l’Utilisateur (ii) de l’impossibilité pour \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" d’enregistrer ou de consulter les Cookies nécessaires à leur fonctionnement du fait du choix de l’Utilisateur. Pour la gestion des Cookies et des choix de l’Utilisateur, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d’aide du navigateur, qui permettra de savoir de quelle manière l’Utilisateur peut modifier ses souhaits en matière de Cookies. \")]),_c('p',[_vm._v(\" À tout moment, l’Utilisateur peut faire le choix d’exprimer et de modifier ses souhaits en matière de Cookies. \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" pourra en outre faire appel aux services de prestataires externes pour l’aider à recueillir et traiter les informations décrites dans cette section. \")]),_c('p',[_vm._v(\" Enfin, en cliquant sur les icônes dédiées aux réseaux sociaux Twitter, Facebook, Linkedin et Google Plus figurant sur le Site de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" ou dans son application mobile et si l’Utilisateur a accepté le dépôt de cookies en poursuivant sa navigation sur le Site Internet ou l’application mobile de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", Twitter, Facebook, Linkedin et Google Plus peuvent également déposer des cookies sur vos terminaux (ordinateur, tablette, téléphone portable). \")]),_c('p',[_vm._v(\" Ces types de cookies ne sont déposés sur vos terminaux qu’à condition que vous y consentiez, en continuant votre navigation sur le Site Internet ou l’application mobile de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\". À tout moment, l’Utilisateur peut néanmoins revenir sur son consentement à ce que \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" dépose ce type de cookies. \")]),_c('h3',[_vm._v(\"Article 9.2. BALISES (“TAGS”) INTERNET\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" peut employer occasionnellement des balises Internet (également appelées « tags », ou balises d’action, GIF à un pixel, GIF transparents, GIF invisibles et GIF un à un) et les déployer par l’intermédiaire d’un partenaire spécialiste d’analyses Web susceptible de se trouver (et donc de stocker les informations correspondantes, y compris l’adresse IP de l’Utilisateur) dans un pays étranger. \")]),_c('p',[_vm._v(\" Ces balises sont placées à la fois dans les publicités en ligne permettant aux internautes d’accéder au Site, et sur les différentes pages de celui-ci. \")]),_c('p',[_vm._v(\" Cette technologie permet à \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" d’évaluer les réponses des visiteurs face au Site et l’efficacité de ses actions (par exemple, le nombre de fois où une page est ouverte et les informations consultées), ainsi que l’utilisation de ce Site par l’Utilisateur. \")]),_c('p',[_vm._v(\" Le prestataire externe pourra éventuellement recueillir des informations sur les visiteurs du Site et d’autres sites Internet grâce à ces balises, constituer des rapports sur l’activité du Site à l’attention de \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\", et fournir d’autres services relatifs à l’utilisation de celui-ci et d’Internet. \")]),_c('p'),_c('h2',[_vm._v(\"10. Droit applicable et attribution de juridiction.\")]),_c('p',[_vm._v(\" Tout litige en relation avec l’utilisation du site \"),_c('a',{attrs:{\"href\":\"https://escape-game-dd.clubelek.fr\"}},[_vm._v(\"https://escape-game-dd.clubelek.fr\")]),_vm._v(\" est soumis au droit français. En dehors des cas où la loi ne le permet pas, il est fait attribution exclusive de juridiction aux tribunaux compétents de Lyon \")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <h2>Définitions</h2>\r\n    <p>\r\n      <b>Client :</b> tout professionnel ou personne physique capable au sens\r\n      des articles 1123 et suivants du Code civil, ou personne morale, qui\r\n      visite le Site objet des présentes conditions générales.<br />\r\n      <b>Prestations et Services :</b>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      met à disposition des Clients :\r\n    </p>\r\n\r\n    <p>\r\n      <b>Contenu :</b> Ensemble des éléments constituants l’information présente\r\n      sur le Site, notamment textes – images – vidéos.\r\n    </p>\r\n\r\n    <p>\r\n      <b>Informations clients :</b> Ci après dénommé « Information (s) » qui\r\n      correspondent à l’ensemble des données personnelles susceptibles d’être\r\n      détenues par\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      pour la gestion de votre compte, de la gestion de la relation client et à\r\n      des fins d’analyses et de statistiques.\r\n    </p>\r\n\r\n    <p>\r\n      <b>Utilisateur :</b> Internaute se connectant, utilisant le site susnommé.\r\n    </p>\r\n    <p>\r\n      <b>Informations personnelles :</b> « Les informations qui permettent, sous\r\n      quelque forme que ce soit, directement ou non, l'identification des\r\n      personnes physiques auxquelles elles s'appliquent » (article 4 de la loi\r\n      n° 78-17 du 6 janvier 1978).\r\n    </p>\r\n    <p>\r\n      Les termes « données à caractère personnel », « personne concernée », «\r\n      sous traitant » et « données sensibles » ont le sens défini par le\r\n      Règlement Général sur la Protection des Données (RGPD : n° 2016-679)\r\n    </p>\r\n\r\n    <h2>1. Présentation du site internet.</h2>\r\n    <p>\r\n      En vertu de l'article 6 de la loi n° 2004-575 du 21 juin 2004 pour la\r\n      confiance dans l'économie numérique, il est précisé aux utilisateurs du\r\n      site internet\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      l'identité des différents intervenants dans le cadre de sa réalisation et\r\n      de son suivi:\r\n    </p>\r\n    <p>\r\n      <strong>Propriétaire</strong> : Association loi 1901 Clubelek (Association\r\n      loi 1901) – INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne<br />\r\n\r\n      <strong>Responsable publication</strong> : Clubelek –\r\n      clubelek@insa-lyon.fr<br />\r\n      Le responsable publication est une personne physique ou une personne\r\n      morale.<br />\r\n      <strong>Webmaster</strong> : Antoine Rochebois –\r\n      antoine.rochebois@insa-lyon.fr<br />\r\n      <strong>Hébergeur</strong> : ovh – 2 rue Kellermann 59100 Roubaix 1007<br />\r\n      <strong>Délégué à la protection des données</strong> : Antoine Rochebois –\r\n      antoine.rochebois@insa-lyon.fr<br />\r\n    </p>\r\n\r\n    <div ng-bind-html=\"linkHTML\">\r\n      <p>\r\n        Ce modèle de mentions légales est proposé par le\r\n        <a\r\n          href=\"https://fr.orson.io/1371/generateur-mentions-legales\"\r\n          title=\"générateur gratuit offert par Orson.io\"\r\n          >générateur gratuit offert par Orson.io</a\r\n        >\r\n      </p>\r\n    </div>\r\n\r\n    <h2>\r\n      2. Conditions générales d’utilisation du site et des services proposés.\r\n    </h2>\r\n\r\n    <p>\r\n      Le Site constitue une œuvre de l’esprit protégée par les dispositions du\r\n      Code de la Propriété Intellectuelle et des Réglementations Internationales\r\n      applicables. Le Client ne peut en aucune manière réutiliser, céder ou\r\n      exploiter pour son propre compte tout ou partie des éléments ou travaux du\r\n      Site.\r\n    </p>\r\n\r\n    <p>\r\n      L’utilisation du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      implique l’acceptation pleine et entière des conditions générales\r\n      d’utilisation ci-après décrites. Ces conditions d’utilisation sont\r\n      susceptibles d’être modifiées ou complétées à tout moment, les\r\n      utilisateurs du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      sont donc invités à les consulter de manière régulière.\r\n    </p>\r\n\r\n    <p>\r\n      Ce site internet est normalement accessible à tout moment aux\r\n      utilisateurs. Une interruption pour raison de maintenance technique peut\r\n      être toutefois décidée par\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, qui s’efforcera alors de communiquer préalablement aux utilisateurs les\r\n      dates et heures de l’intervention. Le site web\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est mis à jour régulièrement par\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      responsable. De la même façon, les mentions légales peuvent être modifiées\r\n      à tout moment : elles s’imposent néanmoins à l’utilisateur qui est invité\r\n      à s’y référer le plus souvent possible afin d’en prendre connaissance.\r\n    </p>\r\n\r\n    <h2>3. Description des services fournis.</h2>\r\n\r\n    <p>\r\n      Le site internet\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      a pour objet de fournir une information concernant l’ensemble des\r\n      activités de la société.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’efforce de fournir sur le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      des informations aussi précises que possible. Toutefois, il ne pourra être\r\n      tenu responsable des oublis, des inexactitudes et des carences dans la\r\n      mise à jour, qu’elles soient de son fait ou du fait des tiers partenaires\r\n      qui lui fournissent ces informations.\r\n    </p>\r\n\r\n    <p>\r\n      Toutes les informations indiquées sur le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      sont données à titre indicatif, et sont susceptibles d’évoluer. Par\r\n      ailleurs, les renseignements figurant sur le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne sont pas exhaustifs. Ils sont donnés sous réserve de modifications\r\n      ayant été apportées depuis leur mise en ligne.\r\n    </p>\r\n\r\n    <h2>4. Limitations contractuelles sur les données techniques.</h2>\r\n\r\n    <p>\r\n      Le site utilise la technologie JavaScript. Le site Internet ne pourra être\r\n      tenu responsable de dommages matériels liés à l’utilisation du site. De\r\n      plus, l’utilisateur du site s’engage à accéder au site en utilisant un\r\n      matériel récent, ne contenant pas de virus et avec un navigateur de\r\n      dernière génération mis-à-jour Le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est hébergé chez un prestataire sur le territoire de l’Union Européenne\r\n      conformément aux dispositions du Règlement Général sur la Protection des\r\n      Données (RGPD : n° 2016-679)\r\n    </p>\r\n\r\n    <p>\r\n      L’objectif est d’apporter une prestation qui assure le meilleur taux\r\n      d’accessibilité. L’hébergeur assure la continuité de son service 24 Heures\r\n      sur 24, tous les jours de l’année. Il se réserve néanmoins la possibilité\r\n      d’interrompre le service d’hébergement pour les durées les plus courtes\r\n      possibles notamment à des fins de maintenance, d’amélioration de ses\r\n      infrastructures, de défaillance de ses infrastructures ou si les\r\n      Prestations et Services génèrent un trafic réputé anormal.\r\n    </p>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      et l’hébergeur ne pourront être tenus responsables en cas de\r\n      dysfonctionnement du réseau Internet, des lignes téléphoniques ou du\r\n      matériel informatique et de téléphonie lié notamment à l’encombrement du\r\n      réseau empêchant l’accès au serveur.\r\n    </p>\r\n\r\n    <h2>5. Propriété intellectuelle et contrefaçons.</h2>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est propriétaire des droits de propriété intellectuelle et détient les\r\n      droits d’usage sur tous les éléments accessibles sur le site internet,\r\n      notamment les textes, images, graphismes, logos, vidéos, icônes et sons.\r\n      Toute reproduction, représentation, modification, publication, adaptation\r\n      de tout ou partie des éléments du site, quel que soit le moyen ou le\r\n      procédé utilisé, est interdite, sauf autorisation écrite préalable de :\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >.\r\n    </p>\r\n\r\n    <p>\r\n      Toute exploitation non autorisée du site ou de l’un quelconque des\r\n      éléments qu’il contient sera considérée comme constitutive d’une\r\n      contrefaçon et poursuivie conformément aux dispositions des articles\r\n      L.335-2 et suivants du Code de Propriété Intellectuelle.\r\n    </p>\r\n\r\n    <h2>6. Limitations de responsabilité.</h2>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      agit en tant qu’éditeur du site.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est responsable de la qualité et de la véracité du Contenu qu’il publie.\r\n    </p>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne pourra être tenu responsable des dommages directs et indirects causés\r\n      au matériel de l’utilisateur, lors de l’accès au site internet\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, et résultant soit de l’utilisation d’un matériel ne répondant pas aux\r\n      spécifications indiquées au point 4, soit de l’apparition d’un bug ou\r\n      d’une incompatibilité.\r\n    </p>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne pourra également être tenu responsable des dommages indirects (tels par\r\n      exemple qu’une perte de marché ou perte d’une chance) consécutifs à\r\n      l’utilisation du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >. Des espaces interactifs (possibilité de poser des questions dans\r\n      l’espace contact) sont à la disposition des utilisateurs.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      se réserve le droit de supprimer, sans mise en demeure préalable, tout\r\n      contenu déposé dans cet espace qui contreviendrait à la législation\r\n      applicable en France, en particulier aux dispositions relatives à la\r\n      protection des données. Le cas échéant,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      se réserve également la possibilité de mettre en cause la responsabilité\r\n      civile et/ou pénale de l’utilisateur, notamment en cas de message à\r\n      caractère raciste, injurieux, diffamant, ou pornographique, quel que soit\r\n      le support utilisé (texte, photographie …).\r\n    </p>\r\n\r\n    <h2>7. Gestion des données personnelles.</h2>\r\n\r\n    <p>\r\n      Le Client est informé des réglementations concernant la communication\r\n      marketing, la loi du 21 Juin 2014 pour la confiance dans l’Economie\r\n      Numérique, la Loi Informatique et Liberté du 06 Août 2004 ainsi que du\r\n      Règlement Général sur la Protection des Données (RGPD : n° 2016-679).\r\n    </p>\r\n\r\n    <h3>7.1 Responsables de la collecte des données personnelles</h3>\r\n\r\n    <p>\r\n      Pour les Données Personnelles collectées dans le cadre de la création du\r\n      compte personnel de l’Utilisateur et de sa navigation sur le Site, le\r\n      responsable du traitement des Données Personnelles est : Clubelek\r\n      (Association loi 1901).\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >est représenté par Thomas Vadebout, son représentant légal\r\n    </p>\r\n\r\n    <p>\r\n      En tant que responsable du traitement des données qu’il collecte,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’engage à respecter le cadre des dispositions légales en vigueur. Il lui\r\n      appartient notamment au Client d’établir les finalités de ses traitements\r\n      de données, de fournir à ses prospects et clients, à partir de la collecte\r\n      de leurs consentements, une information complète sur le traitement de\r\n      leurs données personnelles et de maintenir un registre des traitements\r\n      conforme à la réalité. Chaque fois que\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      traite des Données Personnelles,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      prend toutes les mesures raisonnables pour s’assurer de l’exactitude et de\r\n      la pertinence des Données Personnelles au regard des finalités pour\r\n      lesquelles\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      les traite.\r\n    </p>\r\n\r\n    <h3>7.2 Finalité des données collectées</h3>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est susceptible de traiter tout ou partie des données :\r\n    </p>\r\n\r\n    <ul>\r\n      <li>\r\n        pour permettre la navigation sur le Site et la gestion et la traçabilité\r\n        des prestations et services commandés par l’utilisateur : données de\r\n        connexion et d’utilisation du Site, facturation, historique des\r\n        commandes, etc.\r\n      </li>\r\n\r\n      <li>\r\n        pour prévenir et lutter contre la fraude informatique (spamming,\r\n        hacking…) : matériel informatique utilisé pour la navigation, l’adresse\r\n        IP, le mot de passe (hashé)\r\n      </li>\r\n\r\n      <li>\r\n        pour améliorer la navigation sur le Site : données de connexion et\r\n        d’utilisation\r\n      </li>\r\n\r\n      <li>\r\n        pour mener des enquêtes de satisfaction facultatives sur\r\n        <a href=\"https://escape-game-dd.clubelek.fr\"\r\n          >https://escape-game-dd.clubelek.fr</a\r\n        >\r\n        : adresse email\r\n      </li>\r\n      <li>\r\n        pour mener des campagnes de communication (sms, mail) : numéro de\r\n        téléphone, adresse email\r\n      </li>\r\n    </ul>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne commercialise pas vos données personnelles qui sont donc uniquement\r\n      utilisées par nécessité ou à des fins statistiques et d’analyses.\r\n    </p>\r\n\r\n    <h3>7.3 Droit d’accès, de rectification et d’opposition</h3>\r\n\r\n    <p>\r\n      Conformément à la réglementation européenne en vigueur, les Utilisateurs\r\n      de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      disposent des droits suivants :\r\n    </p>\r\n    <ul>\r\n      <li>\r\n        droit d'accès (article 15 RGPD) et de rectification (article 16 RGPD),\r\n        de mise à jour, de complétude des données des Utilisateurs droit de\r\n        verrouillage ou d’effacement des données des Utilisateurs à caractère\r\n        personnel (article 17 du RGPD), lorsqu’elles sont inexactes,\r\n        incomplètes, équivoques, périmées, ou dont la collecte, l'utilisation,\r\n        la communication ou la conservation est interdite\r\n      </li>\r\n\r\n      <li>\r\n        droit de retirer à tout moment un consentement (article 13-2c RGPD)\r\n      </li>\r\n\r\n      <li>\r\n        droit à la limitation du traitement des données des Utilisateurs\r\n        (article 18 RGPD)\r\n      </li>\r\n\r\n      <li>\r\n        droit d’opposition au traitement des données des Utilisateurs (article\r\n        21 RGPD)\r\n      </li>\r\n\r\n      <li>\r\n        droit à la portabilité des données que les Utilisateurs auront fournies,\r\n        lorsque ces données font l’objet de traitements automatisés fondés sur\r\n        leur consentement ou sur un contrat (article 20 RGPD)\r\n      </li>\r\n\r\n      <li>\r\n        droit de définir le sort des données des Utilisateurs après leur mort et\r\n        de choisir à qui\r\n        <a href=\"https://escape-game-dd.clubelek.fr\"\r\n          >https://escape-game-dd.clubelek.fr</a\r\n        >\r\n        devra communiquer (ou non) ses données à un tiers qu’ils aura\r\n        préalablement désigné\r\n      </li>\r\n    </ul>\r\n\r\n    <p>\r\n      Dès que\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      a connaissance du décès d’un Utilisateur et à défaut d’instructions de sa\r\n      part,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’engage à détruire ses données, sauf si leur conservation s’avère\r\n      nécessaire à des fins probatoires ou pour répondre à une obligation\r\n      légale.\r\n    </p>\r\n\r\n    <p>\r\n      Si l’Utilisateur souhaite savoir comment\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      utilise ses Données Personnelles, demander à les rectifier ou s’oppose à\r\n      leur traitement, l’Utilisateur peut contacter\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      par écrit à l’adresse suivante :\r\n    </p>\r\n\r\n    Clubelek (Association loi 1901) – DPO, Antoine Rochebois <br />\r\n    INSA Lyon - 20 Avenue Albert Einstein 69100 Villeurbanne.\r\n\r\n    <p>\r\n      Dans ce cas, l’Utilisateur doit indiquer les Données Personnelles qu’il\r\n      souhaiterait que\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      corrige, mette à jour ou supprime, en s’identifiant précisément avec une\r\n      copie d’une pièce d’identité (carte d’identité ou passeport).\r\n    </p>\r\n\r\n    <p>\r\n      Les demandes de suppression de Données Personnelles seront soumises aux\r\n      obligations qui sont imposées à\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      par la loi, notamment en matière de conservation ou d’archivage des\r\n      documents. Enfin, les Utilisateurs de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      peuvent déposer une réclamation auprès des autorités de contrôle, et\r\n      notamment de la CNIL (https://www.cnil.fr/fr/plaintes).\r\n    </p>\r\n\r\n    <h3>7.4 Non-communication des données personnelles</h3>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’interdit de traiter, héberger ou transférer les Informations collectées\r\n      sur ses Clients vers un pays situé en dehors de l’Union européenne ou\r\n      reconnu comme « non adéquat » par la Commission européenne sans en\r\n      informer préalablement le client. Pour autant,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      reste libre du choix de ses sous-traitants techniques et commerciaux à la\r\n      condition qu’il présentent les garanties suffisantes au regard des\r\n      exigences du Règlement Général sur la Protection des Données (RGPD : n°\r\n      2016-679).\r\n    </p>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      s’engage à prendre toutes les précautions nécessaires afin de préserver la\r\n      sécurité des Informations et notamment qu’elles ne soient pas communiquées\r\n      à des personnes non autorisées. Cependant, si un incident impactant\r\n      l’intégrité ou la confidentialité des Informations du Client est portée à\r\n      la connaissance de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, celle-ci devra dans les meilleurs délais informer le Client et lui\r\n      communiquer les mesures de corrections prises. Par ailleurs\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ne collecte aucune « données sensibles ».\r\n    </p>\r\n\r\n    <p>\r\n      Les Données Personnelles de l’Utilisateur peuvent être traitées par des\r\n      filiales de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      et des sous-traitants (prestataires de services), exclusivement afin de\r\n      réaliser les finalités de la présente politique.\r\n    </p>\r\n    <p>\r\n      Dans la limite de leurs attributions respectives et pour les finalités\r\n      rappelées ci-dessus, les principales personnes susceptibles d’avoir accès\r\n      aux données des Utilisateurs de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      sont principalement les agents de notre service client.\r\n    </p>\r\n\r\n    <div ng-bind-html=\"rgpdHTML\"></div>\r\n\r\n    <h2>8. Notification d’incident</h2>\r\n    <p>\r\n      Quels que soient les efforts fournis, aucune méthode de transmission sur\r\n      Internet et aucune méthode de stockage électronique n'est complètement\r\n      sûre. Nous ne pouvons en conséquence pas garantir une sécurité absolue. Si\r\n      nous prenions connaissance d'une brèche de la sécurité, nous avertirions\r\n      les utilisateurs concernés afin qu'ils puissent prendre les mesures\r\n      appropriées. Nos procédures de notification d’incident tiennent compte de\r\n      nos obligations légales, qu'elles se situent au niveau national ou\r\n      européen. Nous nous engageons à informer pleinement nos clients de toutes\r\n      les questions relevant de la sécurité de leur compte et à leur fournir\r\n      toutes les informations nécessaires pour les aider à respecter leurs\r\n      propres obligations réglementaires en matière de reporting.\r\n    </p>\r\n    <p>\r\n      Aucune information personnelle de l'utilisateur du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      n'est publiée à l'insu de l'utilisateur, échangée, transférée, cédée ou\r\n      vendue sur un support quelconque à des tiers. Seule l'hypothèse du rachat\r\n      de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      et de ses droits permettrait la transmission des dites informations à\r\n      l'éventuel acquéreur qui serait à son tour tenu de la même obligation de\r\n      conservation et de modification des données vis à vis de l'utilisateur du\r\n      site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >.\r\n    </p>\r\n\r\n    <h3>Sécurité</h3>\r\n\r\n    <p>\r\n      Pour assurer la sécurité et la confidentialité des Données Personnelles et\r\n      des Données Personnelles de Santé,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      utilise des réseaux protégés par des dispositifs standards tels que par\r\n      pare-feu, la pseudonymisation, l’encryption et mot de passe.\r\n    </p>\r\n\r\n    <p>\r\n      Lors du traitement des Données Personnelles,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >prend toutes les mesures raisonnables visant à les protéger contre toute\r\n      perte, utilisation détournée, accès non autorisé, divulgation, altération\r\n      ou destruction.\r\n    </p>\r\n\r\n    <h2>9. Liens hypertextes « cookies » et balises (“tags”) internet</h2>\r\n    <p>\r\n      Le site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      contient un certain nombre de liens hypertextes vers d’autres sites, mis\r\n      en place avec l’autorisation de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >. Cependant,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      n’a pas la possibilité de vérifier le contenu des sites ainsi visités, et\r\n      n’assumera en conséquence aucune responsabilité de ce fait.\r\n    </p>\r\n    Sauf si vous décidez de désactiver les cookies, vous acceptez que le site\r\n    puisse les utiliser. Vous pouvez à tout moment désactiver ces cookies et ce\r\n    gratuitement à partir des possibilités de désactivation qui vous sont\r\n    offertes et rappelées ci-après, sachant que cela peut réduire ou empêcher\r\n    l’accessibilité à tout ou partie des Services proposés par le site.\r\n    <p></p>\r\n\r\n    <h3>9.1. « COOKIES »</h3>\r\n    <p>\r\n      Un « cookie » est un petit fichier d’information envoyé sur le navigateur\r\n      de l’Utilisateur et enregistré au sein du terminal de l’Utilisateur (ex :\r\n      ordinateur, smartphone), (ci-après « Cookies »). Ce fichier comprend des\r\n      informations telles que le nom de domaine de l’Utilisateur, le fournisseur\r\n      d’accès Internet de l’Utilisateur, le système d’exploitation de\r\n      l’Utilisateur, ainsi que la date et l’heure d’accès. Les Cookies ne\r\n      risquent en aucun cas d’endommager le terminal de l’Utilisateur.\r\n    </p>\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est susceptible de traiter les informations de l’Utilisateur concernant sa\r\n      visite du Site, telles que les pages consultées, les recherches\r\n      effectuées. Ces informations permettent à\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      d’améliorer le contenu du Site, de la navigation de l’Utilisateur.\r\n    </p>\r\n    <p>\r\n      Les Cookies facilitant la navigation et/ou la fourniture des services\r\n      proposés par le Site, l’Utilisateur peut configurer son navigateur pour\r\n      qu’il lui permette de décider s’il souhaite ou non les accepter de manière\r\n      à ce que des Cookies soient enregistrés dans le terminal ou, au contraire,\r\n      qu’ils soient rejetés, soit systématiquement, soit selon leur émetteur.\r\n      L’Utilisateur peut également configurer son logiciel de navigation de\r\n      manière à ce que l’acceptation ou le refus des Cookies lui soient proposés\r\n      ponctuellement, avant qu’un Cookie soit susceptible d’être enregistré dans\r\n      son terminal.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      informe l’Utilisateur que, dans ce cas, il se peut que les fonctionnalités\r\n      de son logiciel de navigation ne soient pas toutes disponibles.\r\n    </p>\r\n    <p>\r\n      Si l’Utilisateur refuse l’enregistrement de Cookies dans son terminal ou\r\n      son navigateur, ou si l’Utilisateur supprime ceux qui y sont enregistrés,\r\n      l’Utilisateur est informé que sa navigation et son expérience sur le Site\r\n      peuvent être limitées. Cela pourrait également être le cas lorsque\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ou l’un de ses prestataires ne peut pas reconnaître, à des fins de\r\n      compatibilité technique, le type de navigateur utilisé par le terminal,\r\n      les paramètres de langue et d’affichage ou le pays depuis lequel le\r\n      terminal semble connecté à Internet.\r\n    </p>\r\n    <p>\r\n      Le cas échéant,\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      décline toute responsabilité pour les conséquences liées au fonctionnement\r\n      dégradé du Site et des services éventuellement proposés par\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, résultant (i) du refus de Cookies par l’Utilisateur (ii) de\r\n      l’impossibilité pour\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      d’enregistrer ou de consulter les Cookies nécessaires à leur\r\n      fonctionnement du fait du choix de l’Utilisateur. Pour la gestion des\r\n      Cookies et des choix de l’Utilisateur, la configuration de chaque\r\n      navigateur est différente. Elle est décrite dans le menu d’aide du\r\n      navigateur, qui permettra de savoir de quelle manière l’Utilisateur peut\r\n      modifier ses souhaits en matière de Cookies.\r\n    </p>\r\n    <p>\r\n      À tout moment, l’Utilisateur peut faire le choix d’exprimer et de modifier\r\n      ses souhaits en matière de Cookies.\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      pourra en outre faire appel aux services de prestataires externes pour\r\n      l’aider à recueillir et traiter les informations décrites dans cette\r\n      section.\r\n    </p>\r\n    <p>\r\n      Enfin, en cliquant sur les icônes dédiées aux réseaux sociaux Twitter,\r\n      Facebook, Linkedin et Google Plus figurant sur le Site de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      ou dans son application mobile et si l’Utilisateur a accepté le dépôt de\r\n      cookies en poursuivant sa navigation sur le Site Internet ou l’application\r\n      mobile de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, Twitter, Facebook, Linkedin et Google Plus peuvent également déposer\r\n      des cookies sur vos terminaux (ordinateur, tablette, téléphone portable).\r\n    </p>\r\n    <p>\r\n      Ces types de cookies ne sont déposés sur vos terminaux qu’à condition que\r\n      vous y consentiez, en continuant votre navigation sur le Site Internet ou\r\n      l’application mobile de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >. À tout moment, l’Utilisateur peut néanmoins revenir sur son\r\n      consentement à ce que\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      dépose ce type de cookies.\r\n    </p>\r\n\r\n    <h3>Article 9.2. BALISES (“TAGS”) INTERNET</h3>\r\n\r\n    <p>\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      peut employer occasionnellement des balises Internet (également appelées «\r\n      tags », ou balises d’action, GIF à un pixel, GIF transparents, GIF\r\n      invisibles et GIF un à un) et les déployer par l’intermédiaire d’un\r\n      partenaire spécialiste d’analyses Web susceptible de se trouver (et donc\r\n      de stocker les informations correspondantes, y compris l’adresse IP de\r\n      l’Utilisateur) dans un pays étranger.\r\n    </p>\r\n\r\n    <p>\r\n      Ces balises sont placées à la fois dans les publicités en ligne permettant\r\n      aux internautes d’accéder au Site, et sur les différentes pages de\r\n      celui-ci.\r\n    </p>\r\n    <p>\r\n      Cette technologie permet à\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      d’évaluer les réponses des visiteurs face au Site et l’efficacité de ses\r\n      actions (par exemple, le nombre de fois où une page est ouverte et les\r\n      informations consultées), ainsi que l’utilisation de ce Site par\r\n      l’Utilisateur.\r\n    </p>\r\n    <p>\r\n      Le prestataire externe pourra éventuellement recueillir des informations\r\n      sur les visiteurs du Site et d’autres sites Internet grâce à ces balises,\r\n      constituer des rapports sur l’activité du Site à l’attention de\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >, et fournir d’autres services relatifs à l’utilisation de celui-ci et\r\n      d’Internet.\r\n    </p>\r\n    <p></p>\r\n    <h2>10. Droit applicable et attribution de juridiction.</h2>\r\n    <p>\r\n      Tout litige en relation avec l’utilisation du site\r\n      <a href=\"https://escape-game-dd.clubelek.fr\"\r\n        >https://escape-game-dd.clubelek.fr</a\r\n      >\r\n      est soumis au droit français. En dehors des cas où la loi ne le permet\r\n      pas, il est fait attribution exclusive de juridiction aux tribunaux\r\n      compétents de Lyon\r\n    </p>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"MentionsLegales\"\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionsLegales.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionsLegales.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MentionsLegales.vue?vue&type=template&id=a990db8a&scoped=true&\"\nimport script from \"./MentionsLegales.vue?vue&type=script&lang=js&\"\nexport * from \"./MentionsLegales.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"a990db8a\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"text\",\"placeholder\":\"Identifiant\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._m(0)])]),_c('br'),_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"password\",\"placeholder\":\"Mot de passe\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._m(1)])]),_c('br'),_vm._m(2)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-user\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-lock\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('button',{staticClass:\"button is-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Se connecter\")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <form @submit.prevent=\"login\">\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            class=\"input is-primary\"\r\n            type=\"text\"\r\n            v-model=\"username\"\r\n            placeholder=\"Identifiant\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-user\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            type=\"password\"\r\n            class=\"input is-primary\"\r\n            v-model=\"password\"\r\n            placeholder=\"Mot de passe\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-lock\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div>\r\n        <button class=\"button is-primary\" type=\"submit\">Se connecter</button>\r\n      </div>\r\n    </form>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"Login\",\r\n  data() {\r\n    return {\r\n      username: \"\",\r\n      password: \"\"\r\n    };\r\n  },\r\n  methods: {\r\n    login() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + \"/login\";\r\n      this.axios\r\n        .post(\r\n          uri,\r\n          { username: this.username, password: this.password },\r\n          { withCredentials: true }\r\n        )\r\n        .then(response => {\r\n          console.log(response);\r\n          this.$store.commit(\"login\", response.data);\r\n          this.$router.push(\"/school\");\r\n        });\r\n    }\r\n  }\r\n};\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=265126be&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.register($event)}}},[_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"text\",\"placeholder\":\"Identifiant\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._m(0)])]),_c('br'),_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.schoolName),expression:\"schoolName\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"text\",\"placeholder\":\"Nom de l'établissement\"},domProps:{\"value\":(_vm.schoolName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.schoolName=$event.target.value}}}),_vm._m(1)])]),_c('br'),_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"input is-primary\",attrs:{\"type\":\"password\",\"placeholder\":\"Mot de passe\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._m(2)])]),_c('br'),_vm._m(3)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-user\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-school\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-small is-left\"},[_c('i',{staticClass:\"fas fa-lock\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('button',{staticClass:\"button is-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"S'inscire\")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <form @submit.prevent=\"register\">\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            class=\"input is-primary\"\r\n            type=\"text\"\r\n            v-model=\"username\"\r\n            placeholder=\"Identifiant\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-user\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            class=\"input is-primary\"\r\n            type=\"text\"\r\n            v-model=\"schoolName\"\r\n            placeholder=\"Nom de l'établissement\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-school\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div class=\"field\">\r\n        <p class=\"control has-icons-left\">\r\n          <input\r\n            type=\"password\"\r\n            class=\"input is-primary\"\r\n            v-model=\"password\"\r\n            placeholder=\"Mot de passe\"\r\n          />\r\n          <span class=\"icon is-small is-left\">\r\n            <i class=\"fas fa-lock\"></i>\r\n          </span>\r\n        </p>\r\n      </div>\r\n      <br />\r\n      <div>\r\n        <button class=\"button is-primary\" type=\"submit\">S'inscire</button>\r\n      </div>\r\n    </form>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: \"Login\",\r\n  data() {\r\n    return {\r\n      username: \"\",\r\n      schoolName: \"\",\r\n      password: \"\"\r\n    };\r\n  },\r\n  methods: {\r\n    register() {\r\n      var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n      let uri = domainName + \"/register\";\r\n      this.axios\r\n        .post(\r\n          uri,\r\n          {\r\n            username: this.username,\r\n            schoolName: this.schoolName,\r\n            password: this.password\r\n          },\r\n          { withCredentials: true }\r\n        )\r\n        .then(response => {\r\n          console.log(response);\r\n          this.$router.push(\"/login\");\r\n        });\r\n    }\r\n  }\r\n};\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Register.vue?vue&type=template&id=41b4256c&\"\nimport script from \"./Register.vue?vue&type=script&lang=js&\"\nexport * from \"./Register.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\"},[_c('div',{staticClass:\"message is-warning\"},[_vm._m(0),_c('div',{staticClass:\"message-body\"},[_c('p',[_vm._v(\"Entrez un objet JSON valide dans le champs ci-dessous pour l'écrire sur le tag NFC présenté au lecteur. Attention à ne pas dépasser la longueur mémoire maximale de votre tag !\")]),_c('div',{ref:\"editor\",staticClass:\"language-js\"}),_c('div',[_c('p',[_vm._v(\"Longueur : \"+_vm._s(_vm.jsonText.length))]),_c('p',{class:_vm.isJsonTextValid ? 'has-text-success' : 'has-text-danger'},[_c('strong',[_vm._v(\"JSON généré : \")]),_vm._v(_vm._s(_vm.jsonText))])]),_c('button',{staticClass:\"button is-warning\",attrs:{\"disabled\":!_vm.isJsonTextValid}},[_vm._m(1)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message-header\"},[_c('p',[_vm._v(\"Encodeur de TAG/cartes NFC (outil de développement)\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-upload\"}),_vm._v(\" Ecrire sur la carte/le tag\")])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"section\">\r\n    <div class=\"message is-warning\">\r\n      <div class=\"message-header\">\r\n        <p>Encodeur de TAG/cartes NFC (outil de développement)</p>\r\n      </div>\r\n      <div class=\"message-body\">\r\n        <p>Entrez un objet JSON valide dans le champs ci-dessous pour l'écrire sur le tag NFC présenté au lecteur. Attention à ne pas dépasser la longueur mémoire maximale de votre tag !</p>\r\n        <div ref=\"editor\" class=\"language-js\"></div>\r\n        <div>\r\n          <p>Longueur : {{jsonText.length}}</p>\r\n          <p :class=\"isJsonTextValid ? 'has-text-success' : 'has-text-danger'\"><strong>JSON généré : </strong>{{jsonText}}</p>\r\n        </div>\r\n        <button class = \"button is-warning\" :disabled=\"!isJsonTextValid\"><span><i class=\"fas fa-upload\"></i> Ecrire sur la carte/le tag</span></button>\r\n      </div>\r\n    </div>\r\n    \r\n    \r\n\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport {CodeJar} from 'codejar';\r\nimport {withLineNumbers} from 'codejar/linenumbers';\r\nimport Prism from 'prismjs';\r\nimport 'prismjs/themes/prism.css'\r\nexport default {\r\n  name: \"Encoder\",\r\n  components: {},\r\n  data() {\r\n    return {\r\n      jsonText : \"\"\r\n    }\r\n  },\r\n\r\n  computed : {\r\n    isJsonTextValid : function() {\r\n        try {\r\n            JSON.parse(this.jsonText);\r\n            return true;\r\n        } catch (e) {\r\n            return false;\r\n        }\r\n    }   \r\n  },\r\n\r\n  mounted() {\r\n     const sampleCode = `{\\n \\t \"type\" : \"<objet ? carte ?>\", \\n \\t \"puzzle\" : \"<nom d'énigme>\", \\n \\t custom params...\\n}`;\r\n     this.jsonText = sampleCode;\r\n     const node =  this.$refs.editor;\r\n     const jar = CodeJar(node, withLineNumbers(Prism.highlightElement));\r\n     jar.onUpdate(code => {\r\n       try {\r\n          var jsonObject = JSON.parse(code);\r\n          this.jsonText = JSON.stringify(jsonObject, null, 0)\r\n       } catch (e) {\r\n         this.jsonText = code;\r\n       }\r\n       \r\n       \r\n     })\r\n     jar.updateCode(sampleCode);\r\n     \r\n  }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Encoder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Encoder.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Encoder.vue?vue&type=template&id=7c9e39cd&scoped=true&\"\nimport script from \"./Encoder.vue?vue&type=script&lang=js&\"\nexport * from \"./Encoder.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7c9e39cd\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[(_vm.globalScore >= 0)?_c('div',{staticClass:\"has-text-centered\"},[_c('p',{staticClass:\"is-size-4 m-0\"},[_vm._v(\"Score total :\")]),_c('p',{staticClass:\"is-size-1 m-0\",staticStyle:{\"color\":\"green\"}},[_vm._v(\"🔥 \"+_vm._s(_vm.globalScore)+\" 🔥\")]),_c('p',{staticClass:\"is-size-3 mb-6\"},[_vm._v(\"🥳 Félicitations ! 🥳\")])]):_vm._e(),(this.team.name.length > 0)?_c('article',{staticClass:\"message is-success\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" 🏁 Résultats de l'équipe \\\"\"+_vm._s(_vm.team.name)+\"\\\" (\"+_vm._s(_vm.memberCount)+\" membres) 🏁 \")]),_c('div',{staticClass:\"message-body\"},[_c('div',[_vm._m(0),_c('ul',_vm._l((_vm.team.members),function(member){return _c('li',{key:member},[_vm._v(_vm._s(member))])}),0)]),_c('div',[(_vm.team.donePuzzles.length > 0)?_c('p',{staticClass:\"is-size-4\"},[_c('strong',[_vm._v(\"Puzzles effectués :\")])]):_vm._e(),_vm._l((_vm.team.donePuzzles),function(puzzle){return _c('div',{key:puzzle.name},[(puzzle.score)?_c('div',{staticClass:\"level\"},[_c('div',{staticClass:\"level-item level-left\"},[_c('p',[_c('strong',[_vm._v(_vm._s(puzzle.name))]),_vm._v(\" (\"+_vm._s(puzzle.room)+\") : \")])]),_c('div',{staticClass:\"level-item level-right\"},[_c('progress',{staticClass:\"progress is-small\",attrs:{\"max\":puzzle.maxScore},domProps:{\"value\":puzzle.score}})]),_c('div',{staticClass:\"level-item level-right\"},[_c('p',[_vm._v(_vm._s(puzzle.score)+\"/\"+_vm._s(puzzle.maxScore))])])]):_c('div',{staticClass:\"level \"},[_c('div',{staticClass:\"level-item level-left\"},[_c('p',[_c('strong',[_vm._v(_vm._s(puzzle.name))]),_vm._v(\" (\"+_vm._s(puzzle.room)+\") : \")])]),_c('div',{staticClass:\"level-item level-right\"},[(puzzle.validated)?_c('span',{staticClass:\"icon has-text-success\"},[_c('i',{staticClass:\"fas fa-check-circle\"})]):_c('span',{staticClass:\"icon has-text-danger\"},[_c('i',{staticClass:\"fas fa-times-circle\"})])])])])})],2)])]):_vm._e(),_c('article',{staticClass:\"container has-text-centered\"},[_c('p',{staticClass:\"is-size-4\"},[_vm._v(\"🏁 Merci de scanner une carte d'équipe pour afficher et enregistrer des résultats 🏁\")]),_c('button',{staticClass:\"button is-primary is-large is-fullwidth\",on:{\"click\":function($event){return _vm.manageCardReading()}}},[_c('i',{staticClass:\"fas fa-download\"}),_vm._v(\" Scanner la carte de l'équipe !\")])]),_c('div',{staticClass:\"modal\",class:{ 'is-active': _vm.showPairingModal }},[_c('div',{staticClass:\"modal-background\"}),_vm._m(1),_c('button',{staticClass:\"modal-close is-large\",on:{\"click\":function($event){_vm.showPairingModal = false}}})])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"is-size-4\"},[_c('strong',[_vm._v(\"Membres de l'équipe :\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"message\"},[_c('div',{staticClass:\"message-header\"},[_vm._v(\" Lecture d'une carte NFC d'équipe \")]),_c('div',{staticClass:\"message-body\"},[_vm._v(\" Veuillez scanner une carte sur le lecteur pour charger ses résultats équipe. \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"content\">\r\n    <div v-if=\"globalScore >= 0\" class=\"has-text-centered\">\r\n      <p class = \"is-size-4 m-0\">Score total :</p>\r\n      <p class = \"is-size-1 m-0\" style=\"color:green;\">🔥  {{globalScore}}  🔥</p>\r\n      <p class = \"is-size-3 mb-6\">🥳  Félicitations ! 🥳</p>\r\n    </div>\r\n\r\n    <article v-if=\"this.team.name.length > 0\" class=\"message is-success\">\r\n      <div class=\"message-header\">\r\n        🏁 Résultats de l'équipe \"{{ team.name }}\" ({{ memberCount }} membres) 🏁\r\n      </div>\r\n      <div class=\"message-body\">\r\n        <div>\r\n            <p class=\"is-size-4\"><strong>Membres de l'équipe :</strong></p>\r\n            <ul>\r\n              <li v-for=\"member in team.members\" :key=\"member\">{{ member }}</li>\r\n            </ul>\r\n        </div>\r\n        <div>\r\n          <p v-if=\"team.donePuzzles.length > 0\" class=\"is-size-4\">\r\n            <strong>Puzzles effectués :</strong>\r\n          </p>\r\n          <div v-for=\"puzzle in team.donePuzzles\" :key=\"puzzle.name\">\r\n            <div class=\"level\" v-if=\"puzzle.score\">\r\n              <div class=\"level-item level-left\">\r\n                <p>\r\n                  <strong>{{ puzzle.name }}</strong> ({{ puzzle.room }}) :\r\n                </p>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <progress\r\n                  class=\"progress is-small\"\r\n                  :value=\"puzzle.score\"\r\n                  :max=\"puzzle.maxScore\"\r\n                ></progress>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <p>{{ puzzle.score }}/{{ puzzle.maxScore }}</p>\r\n              </div>\r\n            </div>\r\n            <div v-else class=\"level \">\r\n              <div class=\"level-item level-left\">\r\n                <p>\r\n                  <strong>{{ puzzle.name }}</strong> ({{ puzzle.room }}) :\r\n                </p>\r\n              </div>\r\n              <div class=\"level-item level-right\">\r\n                <span v-if=\"puzzle.validated\" class=\"icon has-text-success\">\r\n                  <i class=\"fas fa-check-circle\"></i>\r\n                </span>\r\n                <span v-else class=\"icon has-text-danger\">\r\n                  <i class=\"fas fa-times-circle\"></i>\r\n                </span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </article>\r\n    <article class=\"container has-text-centered\">\r\n      <p class=\"is-size-4\">🏁  Merci de scanner une carte d'équipe pour afficher et enregistrer des résultats  🏁</p>\r\n      <button class=\"button is-primary is-large is-fullwidth\" @click=\"manageCardReading()\"><i class=\"fas fa-download\"></i> Scanner la carte de l'équipe !</button>\r\n    </article>\r\n\r\n    <div class=\"modal\" :class=\"{ 'is-active': showPairingModal }\">\r\n        <div class=\"modal-background\"></div>\r\n        <div class=\"modal-content\">\r\n          <div class=\"message\">\r\n            <div class=\"message-header\">\r\n              Lecture d'une carte NFC d'équipe\r\n            </div>\r\n            <div class=\"message-body\">\r\n              Veuillez scanner une carte sur le lecteur pour charger ses résultats\r\n              équipe.\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <button\r\n          class=\"modal-close is-large\"\r\n          @click=\"showPairingModal = false\"\r\n        ></button>\r\n      </div>\r\n\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport puzzleJson from '../puzzles.json'\r\nexport default {\r\n  name: \"ResultDisplay\",\r\n\r\n  data() {\r\n    return {\r\n      showPairingModal: false,\r\n      puzzles: puzzleJson,\r\n      team : { name: \"\", members: [], donePuzzles : [] },\r\n      globalScore: -1\r\n    };\r\n  },\r\n\r\n  computed: {\r\n    memberCount: function() {\r\n      return this.team.members.length;\r\n    }\r\n  },\r\n\r\n  methods: {\r\n    manageCardReading() {\r\n      this.showPairingModal = true;\r\n      this.$parent.usbNfcReader.readCard().then(cardContent=> {\r\n        this.$parent.usbNfcReader.readTagUid().then(tagUid => {\r\n          this.team = { name: \"\", members: [], donePuzzles : [] }\r\n          let resultsStr = cardContent.split(';')\r\n          resultsStr.shift()\r\n          resultsStr.pop()\r\n          if (resultsStr.length == 0) {\r\n            console.log(\"Carte vierge de toute épreuve !\")\r\n            return;\r\n          }\r\n          resultsStr.forEach(resultStr => {\r\n            let resShort = resultStr.split('_')[0]\r\n            let score = resultStr.split('_')[1]\r\n            let puzzle = this.puzzles[resShort]\r\n            var donePuzzle = {name: puzzle.name, room:puzzle.room, coef:puzzle.coef}\r\n            if (puzzle.type == \"boolean\") {\r\n              if (score >= 1) donePuzzle.validated = true;\r\n              else donePuzzle.validated = false;\r\n            } else if (puzzle.type == \"number\") {\r\n              donePuzzle.maxScore = puzzle.maxScore;\r\n              donePuzzle.score = score\r\n            }\r\n            this.team.donePuzzles.push(donePuzzle)\r\n          });\r\n          console.log(this.team.donePuzzles)\r\n          var domainName = '//'+location.hostname+(location.port ? ':'+location.port: '');\r\n          let uri = domainName + \"/school/updateTeamPuzzles/\" + tagUid;\r\n          let uriGet = domainName + \"/school/getTeamByCardID/\" + tagUid;\r\n          this.axios.post(uri, this.team.donePuzzles, { withCredentials: true }).then(() => {\r\n            console.log(\"Score ajouté à la BD !\");\r\n            this.axios.get(uriGet, { withCredentials: true }).then((response) => {\r\n              this.team = response.data[0]\r\n              this.globalScore = 0\r\n              this.team.donePuzzles.forEach(puzzle => {\r\n                if (puzzle.score)\r\n                  this.globalScore += parseInt(puzzle.coef)*parseInt(puzzle.score)\r\n                else if (puzzle.validated)\r\n                this.globalScore += parseInt(puzzle.coef)\r\n                \r\n              });\r\n              this.showPairingModal = false\r\n            });\r\n          });\r\n        });\r\n      });\r\n    }\r\n  }\r\n};\r\n</script>\r\n\r\n<style scoped></style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResultsDisplay.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResultsDisplay.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResultsDisplay.vue?vue&type=template&id=9924b722&scoped=true&\"\nimport script from \"./ResultsDisplay.vue?vue&type=script&lang=js&\"\nexport * from \"./ResultsDisplay.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"9924b722\",\n  null\n  \n)\n\nexport default component.exports","import Vue from \"vue\";\r\nimport Vuex from \"vuex\";\r\nimport createPersistedState from \"vuex-persistedstate\";\r\nimport VueRouter from \"vue-router\";\r\nimport App from \"./App.vue\";\r\nimport VueAxios from \"vue-axios\";\r\nimport axios from \"axios\";\r\n\r\n\r\nimport HomeComponent from \"./components/HomeComponent.vue\";\r\nimport SchoolManager from \"./components/SchoolManager.vue\";\r\nimport MentionsLegales from \"./components/MentionsLegales.vue\";\r\nimport Login from \"./components/Login.vue\";\r\nimport Register from \"./components/Register.vue\";\r\nimport Encoder from \"./components/Encoder.vue\";\r\nimport ResultsDisplay from \"./components/ResultsDisplay.vue\";\r\nrequire(\"@/assets/main.scss\");\r\nimport \"@fortawesome/fontawesome-free/css/all.css\";\r\nimport \"@fortawesome/fontawesome-free/js/all.js\";\r\n\r\nVue.use(VueRouter);\r\nVue.use(Vuex);\r\nVue.use(VueAxios, axios);\r\n\r\nVue.config.productionTip = false;\r\n\r\n\r\nconst routes = [\r\n  {\r\n    name: \"home\",\r\n    path: \"/\",\r\n    component: HomeComponent\r\n  },\r\n  {\r\n    name: \"resultsDisplay\",\r\n    path: \"/results\",\r\n    component: ResultsDisplay\r\n  },\r\n  {\r\n    name: \"encoder\",\r\n    path: \"/encoder\",\r\n    component: Encoder\r\n  },\r\n  {\r\n    name: \"schoolManager\",\r\n    path: \"/school\",\r\n    component: SchoolManager\r\n  },\r\n  {\r\n    name: \"mentionsLegales\",\r\n    path: \"/legal\",\r\n    component: MentionsLegales\r\n  },\r\n  {\r\n    name: \"register\",\r\n    path: \"/register\",\r\n    component: Register\r\n  },\r\n  {\r\n    name: \"login\",\r\n    path: \"/login\",\r\n    component: Login\r\n  }\r\n];\r\n\r\nconst store = new Vuex.Store({\r\n  state: {\r\n    isLoggedIn: false,\r\n    schoolName: \"school-name\"\r\n  },\r\n  mutations: {\r\n    login(state, user) {\r\n      state.isLoggedIn = true;\r\n      state.schoolName = user.schoolName;\r\n    },\r\n    logout(state) {\r\n      state.isLoggedIn = false;\r\n      state.schoolName = \"school-name\";\r\n    }\r\n  },\r\n  plugins: [createPersistedState()]\r\n});\r\n\r\nconst router = new VueRouter({ base: \"\", mode: \"history\", routes: routes });\r\n\r\nnew Vue(Vue.util.extend({ router, store }, App)).$mount(\"#app\");\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=3342100e&scoped=true&lang=css&\""],"sourceRoot":""}
\ No newline at end of file
-- 
GitLab