feat: 添加 OAuth 认证支持及相关改进

- 新增 OAuth 模块,支持 LinuxDo/GitHub/Google 等第三方登录
- 用户邮箱改为可选字段,支持无邮箱注册
- 新增模块配置验证状态 (config_validated/config_error)
- 系统设置界面改为分块独立保存
- 用户设置新增 OAuth 绑定管理和首次密码设置
- 登录界面支持 OAuth 按钮展示
- 邮箱验证设置移至邮件设置页面
This commit is contained in:
fawney19
2026-01-19 03:19:17 +08:00
parent e2e14fd09c
commit 3d88dfd98a
61 changed files with 4548 additions and 950 deletions

View File

@@ -19,6 +19,12 @@ const routes: RouteRecordRaw[] = [
component: () => importWithRetry(() => import('@/views/public/LogoColorDemo.vue')),
meta: { requiresAuth: false }
},
{
path: '/auth/callback',
name: 'AuthCallback',
component: () => importWithRetry(() => import('@/views/public/AuthCallback.vue')),
meta: { requiresAuth: false }
},
{
path: '/dashboard',
@@ -133,6 +139,12 @@ const routes: RouteRecordRaw[] = [
component: () => importWithRetry(() => import('@/views/admin/LdapSettings.vue')),
meta: { module: 'ldap' }
},
{
path: 'oauth',
name: 'OAuthSettings',
component: () => importWithRetry(() => import('@/views/admin/OAuthSettings.vue')),
meta: { module: 'oauth' }
},
{
path: 'audit-logs',
name: 'AuditLogs',
@@ -234,9 +246,10 @@ router.beforeEach(async (to, from, next) => {
return
}
}
// 如果模块未激活available && enabled),重定向到管理员首页
if (!moduleStore.isActive(moduleName)) {
log.warn(`Module ${moduleName} is not active, redirecting to admin dashboard`)
// 如果模块不可用(未部署),重定向到管理员首页
// 注意:只检查 available不检查 enabled/active允许管理员配置未启用的模块
if (!moduleStore.isAvailable(moduleName)) {
log.warn(`Module ${moduleName} is not available, redirecting to admin dashboard`)
next('/admin/dashboard')
return
}