X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FUpsertUser.vue;h=ecd51fa916e80bfd7e68f3145e64e2f8a2b10358;hb=dac395887d96e2d642b209c6db6aaacc3ffacb34;hp=6461657412754d1655540ac8b09fe4f8112cde6e;hpb=dcd68c4108412f45b8ce119ae80ce8f6e296800b;p=vchess.git diff --git a/client/src/components/UpsertUser.vue b/client/src/components/UpsertUser.vue index 64616574..ecd51fa9 100644 --- a/client/src/components/UpsertUser.vue +++ b/client/src/components/UpsertUser.vue @@ -26,7 +26,7 @@ div i.material-icons send button(v-if="stage!='Update'" @click="toggleStage()") span {{ stage=="Login" ? "Register" : "Login" }} - button(v-else @click="doLogout()") + button#logoutBtn(v-else @click="doLogout()") span Logout #dialog(:style="{display: displayInfo}") {{ infoMsg }} @@ -46,20 +46,20 @@ export default { 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 = ""; - } - }, - }, + 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) @@ -155,18 +155,24 @@ 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"]; - } - ); + let logoutBtn = document.getElementById("logoutBtn"); + logoutBtn.disabled = true; + // NOTE: this local cleaning would logically happen when we're sure + // that token is erased. But in the case a user clear the cookies, + // it would lead to situations where he cannot ("locally") log out. + // At worst, if token deletion fails the user can erase cookie manually. + this.user.id = 0; + this.user.name = ""; + this.user.email = ""; + this.user.notify = false; + localStorage.removeItem("myid"); + localStorage.removeItem("myname"); + ajax("/logout", "GET", () => { + logoutBtn.disabled = false; //for symmetry, but not very useful... + document.getElementById("modalUser").checked = false; + // this.$router.push("/") will fail if logout from Hall, so: + document.location.reload(true); + }); }, }, };