Mirror Job-Info-Test PB token validation flow

This commit is contained in:
2026-03-29 03:29:19 +00:00
parent a045a1fbd8
commit d70a8b64c6
2 changed files with 86 additions and 4 deletions
+31 -2
View File
@@ -303,11 +303,35 @@
return pb.authStore.token;
}
async function validateCurrentToken() {
await ensurePocketBaseClient();
const token = getCurrentToken();
const resp = await fetch('/api/auth/validate-pb-token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ pbToken: token }),
});
const data = await resp.json().catch(() => ({}));
if (!resp.ok || data?.valid !== true) {
const details = data?.details
? (typeof data.details === 'string' ? data.details : JSON.stringify(data.details))
: '';
const context = data?.tokenContext ? ` tokenContext=${JSON.stringify(data.tokenContext)}` : '';
throw new Error(details
? `${data?.error || 'PocketBase token invalid'}: ${details}${context}`
: `${data?.error || 'PocketBase token invalid'}${context}`);
}
return data;
}
async function loadUsers() {
await ensurePocketBaseClient();
const token = getCurrentToken();
const resp = await fetch('/api/tasks/users', {
headers: { 'x-pb-token': token },
headers: {
'x-pb-token': token,
'Authorization': `Bearer ${token}`,
},
});
const data = await resp.json().catch(() => ({}));
if (!resp.ok || !data?.success) {
@@ -389,7 +413,10 @@
? `/api/tasks/list?${query.toString()}`
: '/api/tasks/list';
const resp = await fetch(url, {
headers: { 'x-pb-token': token },
headers: {
'x-pb-token': token,
'Authorization': `Bearer ${token}`,
},
});
const data = await resp.json().catch(() => ({}));
if (!resp.ok || !data?.success) {
@@ -433,6 +460,8 @@
await updatePbStatus();
if (client.authStore?.isValid) {
const tokenValidation = await validateCurrentToken();
writeOutput({ message: 'PocketBase token validated', user: tokenValidation?.user || null, tokenContext: tokenValidation?.tokenContext || undefined });
await loadUsers();
await loadTasks();
}