X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FUpsertUser.vue;h=c8df869a49fe6ca4390eaed9bfe04440d5bca3a2;hb=9330b976e02148bb89e11819070d5d818e82e522;hp=86f8558d8847d18b1219247fdf621a7131b3837c;hpb=f05815d7da84284bd9d7c1ce5b808acd675f2a3e;p=vchess.git diff --git a/client/src/components/UpsertUser.vue b/client/src/components/UpsertUser.vue index 86f8558d..c8df869a 100644 --- a/client/src/components/UpsertUser.vue +++ b/client/src/components/UpsertUser.vue @@ -1,4 +1,3 @@ -// Logic to login, or create / update a user (and also logout) @@ -40,13 +39,27 @@ export default { name: 'my-upsert-user', data: function() { return { - user: store.state.user, //initialized with global user object + user: store.state.user, nameOrEmail: "", //for login - stage: (!store.state.user.id ? "Login" : "Update"), + logStage: "Login", //or Register infoMsg: "", enterTime: Number.MAX_SAFE_INTEGER, //for a basic anti-bot strategy }; }, + watch: { + nameOrEmail: function(newValue) { + if (newValue.indexOf('@') >= 0) + { + this.user.email = newValue; + this.user.name = ""; + } + else + { + this.user.name = newValue; + this.user.email = ""; + } + }, + }, computed: { submitMessage: function() { switch (this.stage) @@ -62,6 +75,9 @@ export default { displayInfo: function() { return (this.infoMsg.length > 0 ? "block" : "none"); }, + stage: function() { + return this.user.id > 0 ? "Update" : this.logStage; + }, }, methods: { trySetEnterTime: function(event) { @@ -70,7 +86,7 @@ export default { }, toggleStage: function() { // Loop login <--> register (update is for logged-in users) - this.stage = (this.stage == "Login" ? "Register" : "Login"); + this.logStage = (this.logStage == "Login" ? "Register" : "Login"); }, ajaxUrl: function() { switch (this.stage) @@ -124,30 +140,11 @@ export default { ajax(this.ajaxUrl(), this.ajaxMethod(), this.stage == "Login" ? { nameOrEmail: this.nameOrEmail } : this.user, res => { - - console.log("receive login infos"); - console.log(res); - this.infoMsg = this.infoMessage(); if (this.stage != "Update") - { this.nameOrEmail = ""; - this.user["email"] = ""; - this.user["name"] = ""; - - debugger; //TODO: 2 passages ici au lieu d'1 lors du register - - // Store our identifiers in local storage (by little anticipation...) - localStorage["myid"] = res.id; - localStorage["myname"] = res.name; - // Also in global object - this.st.user.id = res.id; - this.st.user.name = res.name; - } setTimeout(() => { this.infoMsg = ""; - if (this.stage == "Register") - this.stage = "Login"; document.getElementById("modalUser").checked = false; }, 2000); }, @@ -157,6 +154,20 @@ export default { } ); }, + doLogout: function() { + ajax( + "/logout", + "GET", + () => { + this.user.id = 0; + this.user.name = ""; + this.user.email = ""; + this.user.notify = false; + delete localStorage["myid"]; + delete localStorage["myname"]; + } + ); + }, }, };