From fa95328f6ddf7e9df583a945d4c9e5186ef9dd21 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 16 Jul 2025 15:13:39 +0800 Subject: [PATCH] feat: auth config --- open-isle-cli/src/App.vue | 2 +- .../src/views/GithubCallbackPageView.vue | 20 ++++++++++++++++--- open-isle-cli/src/views/LoginPageView.vue | 4 +++- .../openisle/controller/AuthController.java | 12 +++++++++-- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/open-isle-cli/src/App.vue b/open-isle-cli/src/App.vue index 074af5061..85e25ecda 100644 --- a/open-isle-cli/src/App.vue +++ b/open-isle-cli/src/App.vue @@ -26,7 +26,7 @@ export default { }, computed: { hideMenu() { - return ['/login', '/signup', '/404', '/signup-reason'].includes(this.$route.path) + return ['/login', '/signup', '/404', '/signup-reason', '/github-callback'].includes(this.$route.path) } } } diff --git a/open-isle-cli/src/views/GithubCallbackPageView.vue b/open-isle-cli/src/views/GithubCallbackPageView.vue index 0a191ffbc..582ed13f2 100644 --- a/open-isle-cli/src/views/GithubCallbackPageView.vue +++ b/open-isle-cli/src/views/GithubCallbackPageView.vue @@ -1,9 +1,15 @@ diff --git a/open-isle-cli/src/views/LoginPageView.vue b/open-isle-cli/src/views/LoginPageView.vue index 39611de0b..364a3bdca 100644 --- a/open-isle-cli/src/views/LoginPageView.vue +++ b/open-isle-cli/src/views/LoginPageView.vue @@ -77,9 +77,11 @@ export default { } else if (data.reason_code === 'NOT_VERIFIED') { toast.info('当前邮箱未验证,已经为您重新发送验证码') this.$router.push({ path: '/signup', query: { verify: 1, u: this.username } }) - } else if (data.reason_code === 'NOT_APPROVED') { + } else if (data.reason_code === 'IS_APPROVING') { toast.info('您的注册正在审批中, 请留意邮件') this.$router.push('/') + } else if (data.reason_code === 'NOT_APPROVED') { + this.$router.push('/signup-reason?token=' + data.token) } else { toast.error(data.error || '登录失败') } diff --git a/src/main/java/com/openisle/controller/AuthController.java b/src/main/java/com/openisle/controller/AuthController.java index fdc97936d..bf8d1bddd 100644 --- a/src/main/java/com/openisle/controller/AuthController.java +++ b/src/main/java/com/openisle/controller/AuthController.java @@ -93,6 +93,12 @@ public class AuthController { "user_name", user.getUsername())); } if (RegisterMode.WHITELIST.equals(registerModeService.getRegisterMode()) && !user.isApproved()) { + if (user.getRegisterReason() != null && !user.getRegisterReason().isEmpty()) { + return ResponseEntity.badRequest().body(Map.of( + "error", "Account awaiting approval", + "reason_code", "IS_APPROVING" + )); + } return ResponseEntity.badRequest().body(Map.of( "error", "Register reason not approved", "reason_code", "NOT_APPROVED", @@ -112,12 +118,14 @@ public class AuthController { if (user.get().getRegisterReason() != null && !user.get().getRegisterReason().isEmpty()) { return ResponseEntity.badRequest().body(Map.of( "error", "Account awaiting approval", - "reason_code", "IS_APPROVING" + "reason_code", "IS_APPROVING", + "token", jwtService.generateReasonToken(user.get().getUsername()) )); } return ResponseEntity.badRequest().body(Map.of( "error", "Account awaiting approval", - "reason_code", "NOT_APPROVED" + "reason_code", "NOT_APPROVED", + "token", jwtService.generateReasonToken(user.get().getUsername()) )); }