9b395f5cc3
Build Chrome Extension / build (push) Waiting to run
Trigger Website Rebuild (Docs Updated) / dispatch (push) Waiting to run
E2E Headed Chrome / e2e-headed (macos-15) (push) Has been cancelled
E2E Headed Chrome / e2e-headed (ubuntu-latest) (push) Has been cancelled
E2E Headed Chrome / e2e-headed (windows-latest) (push) Has been cancelled
CI / build (macos-latest) (push) Has been cancelled
CI / build (ubuntu-latest) (push) Has been cancelled
CI / build (windows-latest) (push) Has been cancelled
CI / unit-test (push) Has been cancelled
CI / bun-test (push) Has been cancelled
CI / adapter-test (push) Has been cancelled
CI / smoke-test (macos-latest) (push) Has been cancelled
CI / smoke-test (ubuntu-latest) (push) Has been cancelled
Security Audit / audit (push) Has been cancelled
20 lines
963 B
JavaScript
20 lines
963 B
JavaScript
import { AuthRequiredError, CommandExecutionError } from '@jackwener/opencli/errors';
|
|
import { buildFetchSnippet } from './in-page.js';
|
|
import { SLOCK_DOMAIN, SLOCK_HOME_URL } from './shared.js';
|
|
|
|
// site-auth's whoami sets navigateBefore:false, so verify owns navigation.
|
|
export async function verifySlockSession(page) {
|
|
await page.goto(SLOCK_HOME_URL);
|
|
const snippet = buildFetchSnippet({ method: 'GET', path: '/auth/me', serverScoped: false });
|
|
const r = await page.evaluate(`(async () => { ${snippet} })()`);
|
|
if (r && r.kind === 'auth') throw new AuthRequiredError(SLOCK_DOMAIN, r.detail);
|
|
// unknown / null envelope = contract drift; same typed class as dispatchEvaluateResult
|
|
if (!r || r.kind !== 'ok') throw new CommandExecutionError(`unexpected /auth/me result: ${JSON.stringify(r)}`);
|
|
const me = r.rows ?? {};
|
|
return {
|
|
id: me.id ?? null,
|
|
name: me.name ?? me.displayName ?? me.username ?? null,
|
|
email: me.email ?? null,
|
|
};
|
|
}
|