From 324e0d614a8194d65354f0127b79b9ce3dc5a49e Mon Sep 17 00:00:00 2001 From: yuyx <237899745@qq.com> Date: Sat, 13 Dec 2025 23:30:51 +0800 Subject: [PATCH] feat(app): migrate auth pages to Vue SPA (stage 2) --- app-frontend/src/api/auth.js | 41 ++ app-frontend/src/api/http.js | 8 + app-frontend/src/pages/LoginPage.vue | 432 +++++++++++++++++- app-frontend/src/pages/RegisterPage.vue | 223 ++++++++- app-frontend/src/pages/ResetPasswordPage.vue | 164 ++++++- app-frontend/src/pages/VerifyResultPage.vue | 157 +++++++ app-frontend/src/router/index.js | 6 +- app-frontend/src/utils/password.js | 7 + app.py | 121 ++++- static/app/.vite/manifest.json | 52 ++- static/app/assets/AccountsPage-CDp_6M3v.js | 1 - static/app/assets/AccountsPage-DFK9bKik.js | 1 + static/app/assets/LoginPage-1KWN57o2.js | 1 + static/app/assets/LoginPage-8DI6Rf67.css | 1 + static/app/assets/LoginPage-B-WqAKk4.css | 1 - static/app/assets/LoginPage-CUFPnwuZ.js | 1 - static/app/assets/RegisterPage-BYIu9Dvh.js | 1 - static/app/assets/RegisterPage-CJqvAJkb.js | 1 + static/app/assets/RegisterPage-CPyuLOs6.css | 1 - static/app/assets/RegisterPage-CVjBOq6i.css | 1 + .../app/assets/ResetPasswordPage-CErwB9tI.css | 1 - .../app/assets/ResetPasswordPage-Ditr0QEq.js | 1 - .../app/assets/ResetPasswordPage-DybfLMAw.css | 1 + .../app/assets/ResetPasswordPage-zVP1Rm4S.js | 1 + static/app/assets/SchedulesPage-B7bCm2b3.js | 1 - static/app/assets/SchedulesPage-D4P6kLJv.js | 1 + static/app/assets/ScreenshotsPage-By1nYVxK.js | 1 + static/app/assets/ScreenshotsPage-DPphuiaz.js | 1 - .../app/assets/VerifyResultPage-Buu0rko2.js | 1 + .../app/assets/VerifyResultPage-CG6ZYNrm.css | 1 + static/app/assets/auth-PlCOj1Xe.js | 6 + .../{index-BDLnyqR1.js => index-fYGyZipT.js} | 14 +- static/app/assets/password-7ryi82gE.js | 1 + static/app/index.html | 2 +- templates/app.html | 6 +- 35 files changed, 1175 insertions(+), 85 deletions(-) create mode 100644 app-frontend/src/api/auth.js create mode 100644 app-frontend/src/api/http.js create mode 100644 app-frontend/src/pages/VerifyResultPage.vue create mode 100644 app-frontend/src/utils/password.js delete mode 100644 static/app/assets/AccountsPage-CDp_6M3v.js create mode 100644 static/app/assets/AccountsPage-DFK9bKik.js create mode 100644 static/app/assets/LoginPage-1KWN57o2.js create mode 100644 static/app/assets/LoginPage-8DI6Rf67.css delete mode 100644 static/app/assets/LoginPage-B-WqAKk4.css delete mode 100644 static/app/assets/LoginPage-CUFPnwuZ.js delete mode 100644 static/app/assets/RegisterPage-BYIu9Dvh.js create mode 100644 static/app/assets/RegisterPage-CJqvAJkb.js delete mode 100644 static/app/assets/RegisterPage-CPyuLOs6.css create mode 100644 static/app/assets/RegisterPage-CVjBOq6i.css delete mode 100644 static/app/assets/ResetPasswordPage-CErwB9tI.css delete mode 100644 static/app/assets/ResetPasswordPage-Ditr0QEq.js create mode 100644 static/app/assets/ResetPasswordPage-DybfLMAw.css create mode 100644 static/app/assets/ResetPasswordPage-zVP1Rm4S.js delete mode 100644 static/app/assets/SchedulesPage-B7bCm2b3.js create mode 100644 static/app/assets/SchedulesPage-D4P6kLJv.js create mode 100644 static/app/assets/ScreenshotsPage-By1nYVxK.js delete mode 100644 static/app/assets/ScreenshotsPage-DPphuiaz.js create mode 100644 static/app/assets/VerifyResultPage-Buu0rko2.js create mode 100644 static/app/assets/VerifyResultPage-CG6ZYNrm.css create mode 100644 static/app/assets/auth-PlCOj1Xe.js rename static/app/assets/{index-BDLnyqR1.js => index-fYGyZipT.js} (80%) create mode 100644 static/app/assets/password-7ryi82gE.js diff --git a/app-frontend/src/api/auth.js b/app-frontend/src/api/auth.js new file mode 100644 index 0000000..cfbbfbb --- /dev/null +++ b/app-frontend/src/api/auth.js @@ -0,0 +1,41 @@ +import { publicApi } from './http' + +export async function fetchEmailVerifyStatus() { + const { data } = await publicApi.get('/email/verify-status') + return data +} + +export async function generateCaptcha() { + const { data } = await publicApi.post('/generate_captcha', {}) + return data +} + +export async function login(payload) { + const { data } = await publicApi.post('/login', payload) + return data +} + +export async function register(payload) { + const { data } = await publicApi.post('/register', payload) + return data +} + +export async function resendVerifyEmail(payload) { + const { data } = await publicApi.post('/resend-verify-email', payload) + return data +} + +export async function forgotPassword(payload) { + const { data } = await publicApi.post('/forgot-password', payload) + return data +} + +export async function requestPasswordReset(payload) { + const { data } = await publicApi.post('/reset_password_request', payload) + return data +} + +export async function confirmPasswordReset(payload) { + const { data } = await publicApi.post('/reset-password-confirm', payload) + return data +} diff --git a/app-frontend/src/api/http.js b/app-frontend/src/api/http.js new file mode 100644 index 0000000..2ecab0a --- /dev/null +++ b/app-frontend/src/api/http.js @@ -0,0 +1,8 @@ +import axios from 'axios' + +export const publicApi = axios.create({ + baseURL: '/api', + timeout: 30_000, + withCredentials: true, +}) + diff --git a/app-frontend/src/pages/LoginPage.vue b/app-frontend/src/pages/LoginPage.vue index 3687fcb..6ba625f 100644 --- a/app-frontend/src/pages/LoginPage.vue +++ b/app-frontend/src/pages/LoginPage.vue @@ -1,11 +1,270 @@ @@ -61,8 +430,49 @@ function goRegister() { font-size: 12px; } -.actions { - margin-top: 16px; +.links { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + margin: 2px 0 10px; + flex-wrap: wrap; +} + +.submit-btn { + width: 100%; +} + +.foot { + margin-top: 14px; + display: flex; + align-items: center; + justify-content: center; + gap: 6px; +} + +.dialog-form { + margin-top: 10px; +} + +.captcha-row { + display: flex; + align-items: center; + gap: 10px; + width: 100%; +} + +.captcha-img { + height: 40px; + border: 1px solid var(--app-border); + border-radius: 8px; + cursor: pointer; + user-select: none; +} + +@media (max-width: 480px) { + .captcha-img { + height: 38px; + } } - diff --git a/app-frontend/src/pages/RegisterPage.vue b/app-frontend/src/pages/RegisterPage.vue index 99b0a01..275ed36 100644 --- a/app-frontend/src/pages/RegisterPage.vue +++ b/app-frontend/src/pages/RegisterPage.vue @@ -1,11 +1,140 @@