From fbb4e4502e8797d5135f1234a686e23caebc47e5 Mon Sep 17 00:00:00 2001 From: Robert Date: Fri, 16 Apr 2021 11:08:28 +0200 Subject: [PATCH] Fix signup cycle (signup, confirm, login) --- src/api.ts | 11 ++++++----- src/components/LoginForm.vue | 6 ++++++ src/views/MainPage.vue | 20 ++++++++------------ 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/api.ts b/src/api.ts index 81845cd..f391d6f 100644 --- a/src/api.ts +++ b/src/api.ts @@ -30,11 +30,12 @@ async function request( init.headers.set("Accept", "application/json"); init.headers.set("Content-Type", "application/json"); const response = await fetch(`/api/${endpoint}/`, init); - const dataOrErrors = await response.json(); - if (response.status === successStatus) { - return dataOrErrors; - } else { - throw new APIError(response.statusText, dataOrErrors); + if (response.status !== 204) { + if (response.status === successStatus) { + return await response.json(); + } else { + throw new APIError(response.statusText, await response.json()); + } } } diff --git a/src/components/LoginForm.vue b/src/components/LoginForm.vue index a47d8f1..5a43caa 100644 --- a/src/components/LoginForm.vue +++ b/src/components/LoginForm.vue @@ -52,6 +52,12 @@ export default class LoginForm extends Vue { await this.user.login(); } else { await this.user.signup(); + this.$router.push({ name: "login" }); + this.$buefy.toast.open({ + message: + "Eine E-Mail zur Bestätigung deiner E-Mail-Adresse wurde versendet.", + type: "is-success", + }); } // TODO: error handling, show confirmation page } diff --git a/src/views/MainPage.vue b/src/views/MainPage.vue index f8b3329..fff0df5 100644 --- a/src/views/MainPage.vue +++ b/src/views/MainPage.vue @@ -8,15 +8,7 @@
- - Deine E-Mail-Adresse wurde erfolgreich bestätigt. Du kannst dich nun - anmelden. - - +
@@ -30,13 +22,17 @@ import UserTable from "@/components/UserTable.vue"; @Component({ components: { UserTable, LoginForm } }) export default class Home extends Vue { - private isConfirmation = false; private user = new User(); public async created(): Promise { - if (this.$route.name === "confirm") this.isConfirmation = true; - if (this.isConfirmation) { + if (this.$route.name === "confirm") { await User.confirm(this.$route.params.uid, this.$route.params.token); + this.$router.push({ name: "login" }); + this.$buefy.toast.open({ + message: + "Deine E-Mail-Adresse wurde bestätigt. Du kannst dich nun anmelden.", + type: "is-success", + }); } } }