feat(auth): 添加异步密码哈希和验证函数
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
refactor(relay): 复用HTTP客户端和请求体序列化结果 feat(kernel): 添加获取单个审批记录的方法 fix(store): 改进SaaS连接错误分类和降级处理 docs: 更新审计文档和系统架构文档 refactor(prompt): 优化SQL查询参数化绑定 refactor(migration): 使用静态SQL和COALESCE更新配置项 feat(commands): 添加审批执行状态追踪和事件通知 chore: 更新启动脚本以支持Admin后台 fix(auth-guard): 优化授权状态管理和错误处理 refactor(db): 使用异步密码哈希函数 refactor(totp): 使用异步密码验证函数 style: 清理无用文件和注释 docs: 更新功能全景和审计文档 refactor(service): 优化HTTP客户端重用和请求处理 fix(connection): 改进SaaS不可用时的降级处理 refactor(handlers): 使用异步密码验证函数 chore: 更新依赖和工具链配置
This commit is contained in:
@@ -97,7 +97,9 @@ export type SaaSStore = SaaSStateSlice & SaaSActionsSlice;
|
||||
|
||||
// === Constants ===
|
||||
|
||||
const DEFAULT_SAAS_URL = 'https://saas.zclaw.com';
|
||||
const DEFAULT_SAAS_URL = import.meta.env.DEV
|
||||
? 'http://127.0.0.1:8080'
|
||||
: 'https://saas.zclaw.com';
|
||||
|
||||
// === Helpers ===
|
||||
|
||||
@@ -218,14 +220,21 @@ export const useSaaSStore = create<SaaSStore>((set, get) => {
|
||||
? err.message
|
||||
: String(err);
|
||||
|
||||
const isNetworkError = message.includes('Failed to fetch')
|
||||
const isTimeout = message.includes('signal timed out')
|
||||
|| message.includes('Timeout')
|
||||
|| message.includes('timed out')
|
||||
|| message.includes('AbortError');
|
||||
|
||||
const isConnectionRefused = message.includes('Failed to fetch')
|
||||
|| message.includes('NetworkError')
|
||||
|| message.includes('ECONNREFUSED')
|
||||
|| message.includes('timeout');
|
||||
|| message.includes('connection refused');
|
||||
|
||||
const userMessage = isNetworkError
|
||||
? `无法连接到 SaaS 服务器: ${requestUrl}`
|
||||
: message;
|
||||
const userMessage = isTimeout
|
||||
? `连接 SaaS 服务器超时,请确认后端服务正在运行: ${requestUrl}`
|
||||
: isConnectionRefused
|
||||
? `无法连接到 SaaS 服务器,请确认后端服务已启动: ${requestUrl}`
|
||||
: message;
|
||||
|
||||
set({ isLoading: false, error: userMessage });
|
||||
throw new Error(userMessage);
|
||||
@@ -491,7 +500,6 @@ export const useSaaSStore = create<SaaSStore>((set, get) => {
|
||||
const existing = localStorage.getItem(storageKey);
|
||||
|
||||
// Diff check: skip if local was modified since last pull
|
||||
const lastPullKey = `zclaw-config-pull-ts.${config.category}.${config.key}`;
|
||||
const dirtyKey = `zclaw-config-dirty.${config.category}.${config.key}`;
|
||||
const lastPulledValue = localStorage.getItem(`zclaw-config-pulled.${config.category}.${config.key}`);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user