feat(auth): 添加 SECTL Auth OAuth 登录功能

- 新增 OAuth 登录组件和回调页面
- 集成 Tauri 深度链接插件处理 OAuth 回调
- 添加账户设置页面显示登录信息
- 更新 CI 配置添加 OAuth 环境变量
- 扩展 API 接口支持 OAuth 相关操作
- 添加国际化支持
This commit is contained in:
Yukino_fox
2026-03-29 19:30:27 +08:00
parent 3f3bfbf284
commit 7a59572f11
33 changed files with 8477 additions and 200 deletions
+26
View File
@@ -12,6 +12,7 @@ use crate::services::settings::{SettingsKey, SettingsValue};
use crate::{commands::*, state::AppState};
use parking_lot::RwLock;
use std::sync::Arc;
use tauri::Emitter;
#[cfg(desktop)]
use tauri::{
image::Image,
@@ -26,6 +27,7 @@ use tokio::time::{timeout, Duration};
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_deep_link::init())
.setup(|app| {
let state = AppState::new(app.handle().clone());
app.manage(Arc::new(RwLock::new(state)));
@@ -73,6 +75,10 @@ pub fn run() {
auth_generate_recovery,
auth_reset_by_recovery,
auth_clear_all,
oauth_get_authorization_url,
oauth_exchange_code,
oauth_get_user_info,
oauth_refresh_token,
theme_list,
theme_current,
theme_set,
@@ -136,6 +142,26 @@ pub fn setup_app(app: &mut App) -> Result<(), Box<dyn std::error::Error>> {
setup_window_events(app)?;
setup_deep_link(app)?;
Ok(())
}
fn setup_deep_link(app: &mut App) -> Result<(), Box<dyn std::error::Error>> {
let handle = app.handle().clone();
#[cfg(desktop)]
{
use tauri_plugin_deep_link::DeepLinkExt;
app.deep_link().on_open_url(move |event| {
let url = event.urls().first().map(|u| u.to_string()).unwrap_or_default();
if !url.is_empty() {
let _ = handle.emit("deep-link://new-url", url);
}
});
}
Ok(())
}