i.material-icons send
button(v-if="stage!='Update'" @click="toggleStage()")
span {{ stage=="Login" ? "Register" : "Login" }}
- button(v-else onClick="location.replace('/logout')")
+ button(v-else @click="doLogout()")
span Logout
#dialog(:style="{display: displayInfo}") {{ infoMsg }}
</template>
name: 'my-upsert-user',
data: function() {
return {
- user: Object.assign({}, store.state.user),
+ user: store.state.user,
nameOrEmail: "", //for login
- stage: (store.state.user.id > 0 ? "Update" : "Login"), //TODO?
+ logStage: "Login", //or Register
infoMsg: "",
enterTime: Number.MAX_SAFE_INTEGER, //for a basic anti-bot strategy
};
displayInfo: function() {
return (this.infoMsg.length > 0 ? "block" : "none");
},
+ stage: function() {
+ return this.user.id > 0 ? "Update" : this.logStage;
+ },
},
methods: {
trySetEnterTime: function(event) {
},
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)
}
);
},
+ 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"];
+ }
+ );
+ },
},
};
</script>