From e4e83197d235e54a19c3b448e34f6fe0531c1db5 Mon Sep 17 00:00:00 2001 From: Tim <135014430+nagisa77@users.noreply.github.com> Date: Mon, 14 Jul 2025 22:03:45 +0800 Subject: [PATCH] Implement registration whitelist flow --- open-isle-cli/src/router/index.js | 6 ++ open-isle-cli/src/utils/google.js | 4 +- open-isle-cli/src/views/MessagePageView.vue | 57 +++++++++++++- open-isle-cli/src/views/SettingsPageView.vue | 14 +++- open-isle-cli/src/views/SignupPageView.vue | 33 +++++++- .../src/views/SignupReasonPageView.vue | 76 +++++++++++++++++++ .../controller/AdminConfigController.java | 8 ++ .../controller/AdminUserController.java | 36 +++++++++ .../openisle/controller/AuthController.java | 24 +++++- .../openisle/controller/ConfigController.java | 7 ++ .../controller/NotificationController.java | 2 + .../java/com/openisle/model/Notification.java | 3 + .../com/openisle/model/NotificationType.java | 4 +- .../java/com/openisle/model/RegisterMode.java | 9 +++ src/main/java/com/openisle/model/User.java | 6 ++ .../com/openisle/service/CommentService.java | 14 ++-- .../openisle/service/GoogleAuthService.java | 8 +- .../openisle/service/NotificationService.java | 5 +- .../com/openisle/service/PostService.java | 13 ++-- .../com/openisle/service/ReactionService.java | 4 +- .../openisle/service/RegisterModeService.java | 25 ++++++ .../openisle/service/SubscriptionService.java | 8 +- .../com/openisle/service/UserService.java | 9 ++- src/main/resources/application.properties | 3 + .../controller/AuthControllerTest.java | 8 +- .../ComplexFlowIntegrationTest.java | 5 +- .../PublishModeIntegrationTest.java | 4 +- .../integration/SearchIntegrationTest.java | 5 +- 28 files changed, 353 insertions(+), 47 deletions(-) create mode 100644 open-isle-cli/src/views/SignupReasonPageView.vue create mode 100644 src/main/java/com/openisle/controller/AdminUserController.java create mode 100644 src/main/java/com/openisle/model/RegisterMode.java create mode 100644 src/main/java/com/openisle/service/RegisterModeService.java diff --git a/open-isle-cli/src/router/index.js b/open-isle-cli/src/router/index.js index 8a5a6cc8f..0f4fd1e0a 100644 --- a/open-isle-cli/src/router/index.js +++ b/open-isle-cli/src/router/index.js @@ -5,6 +5,7 @@ import AboutPageView from '../views/AboutPageView.vue' import PostPageView from '../views/PostPageView.vue' import LoginPageView from '../views/LoginPageView.vue' import SignupPageView from '../views/SignupPageView.vue' +import SignupReasonPageView from '../views/SignupReasonPageView.vue' import NewPostPageView from '../views/NewPostPageView.vue' import SettingsPageView from '../views/SettingsPageView.vue' import ProfileView from '../views/ProfileView.vue' @@ -46,6 +47,11 @@ const routes = [ name: 'signup', component: SignupPageView }, + { + path: '/signup-reason', + name: 'signup-reason', + component: SignupReasonPageView + }, { path: '/settings', name: 'settings', diff --git a/open-isle-cli/src/utils/google.js b/open-isle-cli/src/utils/google.js index bde09a552..a529f88ed 100644 --- a/open-isle-cli/src/utils/google.js +++ b/open-isle-cli/src/utils/google.js @@ -1,7 +1,7 @@ import { API_BASE_URL, GOOGLE_CLIENT_ID, toast } from '../main' import { setToken, loadCurrentUser } from './auth' -export function googleSignIn(redirect) { +export function googleSignIn(redirect, reason) { if (!window.google || !GOOGLE_CLIENT_ID) { toast.error('Google 登录不可用') return @@ -13,7 +13,7 @@ export function googleSignIn(redirect) { const res = await fetch(`${API_BASE_URL}/api/auth/google`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ idToken: credential }) + body: JSON.stringify({ idToken: credential, reason }) }) const data = await res.json() if (res.ok && data.token) { diff --git a/open-isle-cli/src/views/MessagePageView.vue b/open-isle-cli/src/views/MessagePageView.vue index f68ae9ca3..17ac717ee 100644 --- a/open-isle-cli/src/views/MessagePageView.vue +++ b/open-isle-cli/src/views/MessagePageView.vue @@ -181,6 +181,15 @@ 已提交审核 +