解决登录显示、首页显示bug

This commit is contained in:
2026-05-19 11:06:46 +08:00
parent 2f7e097e6c
commit 00a859c551
181 changed files with 55329 additions and 998 deletions

View File

@@ -2,8 +2,21 @@
import { AkReqResponse, AkReqUploadOptions, AkReq } from '@/uni_modules/ak-req/index.uts'
import type { AkReqOptions } from '@/uni_modules/ak-req/index.uts'
import { toUniError } from '@/utils/utils.uts'
import { getCurrentPageUrlWithQuery } from '@/utils/authRedirect.uts'
import { IS_TEST_MODE } from '@/ak/config.uts'
function isMerchantRouteForAuth(path: string): boolean {
return path.startsWith('/pages/mall/merchant/')
}
function getExpiredAuthRedirectUrl(): string {
const currentUrl = getCurrentPageUrlWithQuery()
if (isMerchantRouteForAuth(currentUrl)) {
return `/pages/user/login?mode=merchant&redirect=${encodeURIComponent(currentUrl)}`
}
return '/pages/user/login'
}
export type AkSupaSignInResult = {
access_token : string;
refresh_token : string;
@@ -713,12 +726,6 @@ export class AkSupa {
this.baseUrl = baseUrl;
this.apikey = apikey;
this.storage = new AkSupaStorageApi(this);
// [CHANGE][2026-01-30] hydrate user/session from persisted token (see docs: components/supadb/docs/CHANGELOG.md)
try {
this.hydrateSessionFromStorage();
} catch (e) {
// ignore
}
}
/**
@@ -790,14 +797,15 @@ export class AkSupa {
// [CHANGE][2026-01-30] hydrate user from /auth/v1/user when token exists in storage
async hydrateSessionFromStorage() : Promise<boolean> {
const startedAt = Date.now();
try {
const token = AkReq.getToken();
if (token == null || token == '') {
console.log('[HydrateSession] no persisted token found');
console.log('[HydrateSession] no persisted token found, elapsed=' + (Date.now() - startedAt));
return false;
}
const tokenPreview = token.length > 12 ? (token.substring(0, 6) + '...' + token.substring(token.length - 6)) : token;
console.log('[HydrateSession] found persisted token:', tokenPreview);
console.log('[HydrateSession] found persisted token:', tokenPreview, 'elapsed=' + (Date.now() - startedAt));
const res = await AkReq.request({
url: this.baseUrl + '/auth/v1/user',
method: 'GET',
@@ -809,7 +817,7 @@ export class AkSupa {
}, false);
const status = res.status ?? 0;
if (!(status >= 200 && status < 400)) {
console.warn('[HydrateSession] /auth/v1/user failed with status:', status);
console.warn('[HydrateSession] /auth/v1/user failed with status:', status, 'elapsed=' + (Date.now() - startedAt));
return false;
}
let user: UTSJSONObject | null = null;
@@ -819,7 +827,7 @@ export class AkSupa {
user = null;
}
if (user == null) {
console.warn('[HydrateSession] /auth/v1/user returned empty user payload');
console.warn('[HydrateSession] /auth/v1/user returned empty user payload, elapsed=' + (Date.now() - startedAt));
return false;
}
this.user = user;
@@ -835,10 +843,10 @@ export class AkSupa {
raw: user
} as AkSupaSignInResult;
}
console.log('[HydrateSession] restored session for user:', user.getString('id') ?? 'unknown');
console.log('[HydrateSession] restored session for user:', user.getString('id') ?? 'unknown', 'elapsed=' + (Date.now() - startedAt));
return true;
} catch (e) {
console.error('[HydrateSession] unexpected error:', e);
console.error('[HydrateSession] unexpected error, elapsed=' + (Date.now() - startedAt) + ':', e);
return false;
}
}
@@ -1308,7 +1316,7 @@ async delete(table : string, filter : string | null) : Promise<AkReqResponse<any
// completely removed global storage clearing
uni.reLaunch({ url: '/pages/user/login' });
uni.reLaunch({ url: getExpiredAuthRedirectUrl() });
throw toUniError('登录已过期,请重新登录', '用户认证失败');
}
}

View File

@@ -1,6 +1,19 @@
// /components/supadb/aksupainstance.uts
import { createClient } from './aksupa.uts'
import { SUPA_URL, SUPA_KEY } from '@/ak/config.uts'
import { CURRENT_CLIENT } from '@/config/current-client.uts'
function maskClientKey(key: string): string {
const keyLen = key.length
if (keyLen <= 20) {
return '(too short)'
}
return key.substring(0, 10) + '...' + key.substring(keyLen - 8)
}
console.log('[consumer-db] 当前端类型:', CURRENT_CLIENT)
console.log('[consumer-db] supabaseUrl 已加载:', SUPA_URL)
console.log('[consumer-db] supabaseKey 已加载:', maskClientKey(SUPA_KEY))
// 创建单一真实的 Supabase 客户端实例 (使用 config.uts 配置)
// Create single source of truth client using config