完成consumer端同步
This commit is contained in:
@@ -792,7 +792,12 @@ export class AkSupa {
|
||||
async hydrateSessionFromStorage() : Promise<boolean> {
|
||||
try {
|
||||
const token = AkReq.getToken();
|
||||
if (token == null || token == '') return false;
|
||||
if (token == null || token == '') {
|
||||
console.log('[HydrateSession] no persisted token found');
|
||||
return false;
|
||||
}
|
||||
const tokenPreview = token.length > 12 ? (token.substring(0, 6) + '...' + token.substring(token.length - 6)) : token;
|
||||
console.log('[HydrateSession] found persisted token:', tokenPreview);
|
||||
const res = await AkReq.request({
|
||||
url: this.baseUrl + '/auth/v1/user',
|
||||
method: 'GET',
|
||||
@@ -804,6 +809,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);
|
||||
return false;
|
||||
}
|
||||
let user: UTSJSONObject | null = null;
|
||||
@@ -812,7 +818,10 @@ export class AkSupa {
|
||||
} catch (e) {
|
||||
user = null;
|
||||
}
|
||||
if (user == null) return false;
|
||||
if (user == null) {
|
||||
console.warn('[HydrateSession] /auth/v1/user returned empty user payload');
|
||||
return false;
|
||||
}
|
||||
this.user = user;
|
||||
// 仅补齐最小 session 结构,供 getSession / UI 判断登录态使用
|
||||
if (this.session == null) {
|
||||
@@ -826,8 +835,10 @@ export class AkSupa {
|
||||
raw: user
|
||||
} as AkSupaSignInResult;
|
||||
}
|
||||
console.log('[HydrateSession] restored session for user:', user.getString('id') ?? 'unknown');
|
||||
return true;
|
||||
} catch (e) {
|
||||
console.error('[HydrateSession] unexpected error:', e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -850,6 +861,9 @@ export class AkSupa {
|
||||
async signOut() {
|
||||
this.session = null
|
||||
this.user = null
|
||||
try {
|
||||
AkReq.clearToken()
|
||||
} catch (e) {}
|
||||
}
|
||||
async signIn(email : string, password : string) : Promise<AkSupaSignInResult> {
|
||||
// 提前检查 apikey 配置是否为占位符,避免发送无效请求导致 401
|
||||
@@ -902,6 +916,13 @@ export class AkSupa {
|
||||
const expires_at = data.getNumber('expires_at') ?? 0;
|
||||
const user = data.getJSON('user');
|
||||
AkReq.setToken(access_token, refresh_token, expires_at);
|
||||
const storedAccessToken = AkReq.getToken() ?? '';
|
||||
const storedRefreshToken = AkReq.getRefreshToken() ?? '';
|
||||
const accessPreview = storedAccessToken.length > 12 ? (storedAccessToken.substring(0, 6) + '...' + storedAccessToken.substring(storedAccessToken.length - 6)) : storedAccessToken;
|
||||
const refreshPreview = storedRefreshToken.length > 12 ? (storedRefreshToken.substring(0, 6) + '...' + storedRefreshToken.substring(storedRefreshToken.length - 6)) : storedRefreshToken;
|
||||
console.log('[SignInPersist] access token stored:', accessPreview != '' ? accessPreview : '(empty)');
|
||||
console.log('[SignInPersist] refresh token stored:', refreshPreview != '' ? refreshPreview : '(empty)');
|
||||
console.log('[SignInPersist] expires_at stored:', AkReq.getExpiresAt() ?? 0);
|
||||
const session : AkSupaSignInResult = {
|
||||
access_token: access_token,
|
||||
refresh_token: refresh_token,
|
||||
|
||||
Reference in New Issue
Block a user