From e0df78deeeb0a27a1e2d47d5f63a762beb3cceb4 Mon Sep 17 00:00:00 2001 From: Tim <135014430+nagisa77@users.noreply.github.com> Date: Sun, 17 Aug 2025 12:11:13 +0800 Subject: [PATCH] feat: pass invite token through signup flow --- .../com/openisle/dto/DiscordLoginRequest.java | 1 + .../com/openisle/dto/GithubLoginRequest.java | 1 + .../com/openisle/dto/GoogleLoginRequest.java | 1 + .../com/openisle/dto/MakeReasonRequest.java | 1 + .../com/openisle/dto/RegisterRequest.java | 1 + .../com/openisle/dto/TwitterLoginRequest.java | 1 + .../java/com/openisle/dto/VerifyRequest.java | 1 + frontend_nuxt/pages/discord-callback.vue | 7 ++++--- frontend_nuxt/pages/github-callback.vue | 7 ++++--- frontend_nuxt/pages/google-callback.vue | 5 ++++- frontend_nuxt/pages/login.vue | 5 ++++- frontend_nuxt/pages/signup-reason.vue | 8 ++++++-- frontend_nuxt/pages/signup.vue | 19 ++++++++++++++----- frontend_nuxt/pages/twitter-callback.vue | 7 ++++--- frontend_nuxt/utils/discord.js | 4 ++-- frontend_nuxt/utils/github.js | 4 ++-- frontend_nuxt/utils/google.js | 15 ++++++++++----- frontend_nuxt/utils/twitter.js | 4 ++-- 18 files changed, 63 insertions(+), 29 deletions(-) diff --git a/backend/src/main/java/com/openisle/dto/DiscordLoginRequest.java b/backend/src/main/java/com/openisle/dto/DiscordLoginRequest.java index db424288c..90e41163c 100644 --- a/backend/src/main/java/com/openisle/dto/DiscordLoginRequest.java +++ b/backend/src/main/java/com/openisle/dto/DiscordLoginRequest.java @@ -7,4 +7,5 @@ import lombok.Data; public class DiscordLoginRequest { private String code; private String redirectUri; + private String inviteToken; } diff --git a/backend/src/main/java/com/openisle/dto/GithubLoginRequest.java b/backend/src/main/java/com/openisle/dto/GithubLoginRequest.java index ad2b55148..dc9edf8c5 100644 --- a/backend/src/main/java/com/openisle/dto/GithubLoginRequest.java +++ b/backend/src/main/java/com/openisle/dto/GithubLoginRequest.java @@ -7,4 +7,5 @@ import lombok.Data; public class GithubLoginRequest { private String code; private String redirectUri; + private String inviteToken; } diff --git a/backend/src/main/java/com/openisle/dto/GoogleLoginRequest.java b/backend/src/main/java/com/openisle/dto/GoogleLoginRequest.java index b2ea269fe..3159e10dc 100644 --- a/backend/src/main/java/com/openisle/dto/GoogleLoginRequest.java +++ b/backend/src/main/java/com/openisle/dto/GoogleLoginRequest.java @@ -6,4 +6,5 @@ import lombok.Data; @Data public class GoogleLoginRequest { private String idToken; + private String inviteToken; } diff --git a/backend/src/main/java/com/openisle/dto/MakeReasonRequest.java b/backend/src/main/java/com/openisle/dto/MakeReasonRequest.java index 8c7c4e699..562f988e9 100644 --- a/backend/src/main/java/com/openisle/dto/MakeReasonRequest.java +++ b/backend/src/main/java/com/openisle/dto/MakeReasonRequest.java @@ -7,4 +7,5 @@ import lombok.Data; public class MakeReasonRequest { private String token; private String reason; + private String inviteToken; } diff --git a/backend/src/main/java/com/openisle/dto/RegisterRequest.java b/backend/src/main/java/com/openisle/dto/RegisterRequest.java index 4ac63c795..66a6e24b2 100644 --- a/backend/src/main/java/com/openisle/dto/RegisterRequest.java +++ b/backend/src/main/java/com/openisle/dto/RegisterRequest.java @@ -9,4 +9,5 @@ public class RegisterRequest { private String email; private String password; private String captcha; + private String inviteToken; } diff --git a/backend/src/main/java/com/openisle/dto/TwitterLoginRequest.java b/backend/src/main/java/com/openisle/dto/TwitterLoginRequest.java index e7e460907..0bd82a956 100644 --- a/backend/src/main/java/com/openisle/dto/TwitterLoginRequest.java +++ b/backend/src/main/java/com/openisle/dto/TwitterLoginRequest.java @@ -8,4 +8,5 @@ public class TwitterLoginRequest { private String code; private String redirectUri; private String codeVerifier; + private String inviteToken; } diff --git a/backend/src/main/java/com/openisle/dto/VerifyRequest.java b/backend/src/main/java/com/openisle/dto/VerifyRequest.java index 08deec734..2f15204c2 100644 --- a/backend/src/main/java/com/openisle/dto/VerifyRequest.java +++ b/backend/src/main/java/com/openisle/dto/VerifyRequest.java @@ -7,4 +7,5 @@ import lombok.Data; public class VerifyRequest { private String username; private String code; + private String inviteToken; } diff --git a/frontend_nuxt/pages/discord-callback.vue b/frontend_nuxt/pages/discord-callback.vue index 22fb2e91d..d996bb192 100644 --- a/frontend_nuxt/pages/discord-callback.vue +++ b/frontend_nuxt/pages/discord-callback.vue @@ -9,11 +9,12 @@ import { discordExchange } from '~/utils/discord' onMounted(async () => { const url = new URL(window.location.href) const code = url.searchParams.get('code') - const state = url.searchParams.get('state') - const result = await discordExchange(code, state, '') + const inviteToken = url.searchParams.get('state') + const result = await discordExchange(code, inviteToken, '') if (result.needReason) { - navigateTo(`/signup-reason?token=${result.token}`, { replace: true }) + const q = inviteToken ? `&invite_token=${inviteToken}` : '' + navigateTo(`/signup-reason?token=${result.token}${q}`, { replace: true }) } else { navigateTo('/', { replace: true }) } diff --git a/frontend_nuxt/pages/github-callback.vue b/frontend_nuxt/pages/github-callback.vue index ebce82546..871ba3831 100644 --- a/frontend_nuxt/pages/github-callback.vue +++ b/frontend_nuxt/pages/github-callback.vue @@ -9,11 +9,12 @@ import { githubExchange } from '~/utils/github' onMounted(async () => { const url = new URL(window.location.href) const code = url.searchParams.get('code') - const state = url.searchParams.get('state') - const result = await githubExchange(code, state, '') + const inviteToken = url.searchParams.get('state') + const result = await githubExchange(code, inviteToken, '') if (result.needReason) { - navigateTo(`/signup-reason?token=${result.token}`, { replace: true }) + const q = inviteToken ? `&invite_token=${inviteToken}` : '' + navigateTo(`/signup-reason?token=${result.token}${q}`, { replace: true }) } else { navigateTo('/', { replace: true }) } diff --git a/frontend_nuxt/pages/google-callback.vue b/frontend_nuxt/pages/google-callback.vue index 303b9404c..84614b351 100644 --- a/frontend_nuxt/pages/google-callback.vue +++ b/frontend_nuxt/pages/google-callback.vue @@ -9,14 +9,17 @@ import { googleAuthWithToken } from '~/utils/google' onMounted(async () => { const hash = new URLSearchParams(window.location.hash.substring(1)) const idToken = hash.get('id_token') + const inviteToken = hash.get('state') if (idToken) { await googleAuthWithToken( idToken, + inviteToken, () => { navigateTo('/', { replace: true }) }, (token) => { - navigateTo(`/signup-reason?token=${token}`, { replace: true }) + const q = inviteToken ? `&invite_token=${inviteToken}` : '' + navigateTo(`/signup-reason?token=${token}${q}`, { replace: true }) }, ) } else { diff --git a/frontend_nuxt/pages/login.vue b/frontend_nuxt/pages/login.vue index 518a0b1bf..fd9f628e3 100644 --- a/frontend_nuxt/pages/login.vue +++ b/frontend_nuxt/pages/login.vue @@ -35,7 +35,7 @@
-
+ @@ -115,6 +115,9 @@ const loginWithDiscord = () => { const loginWithTwitter = () => { twitterAuthorize() } +const loginWithGoogle = () => { + googleAuthorize() +}