import { http, logApi } from './http.js'; export const auth = { // #region GET /api/auth/me — me async me() { try { const data = await http('/api/auth/me'); return { user: data.user ?? null, googleClientId: data.googleClientId ?? null, }; } catch (err) { if (err.status === 401 || err.status === 403) { return { user: null, googleClientId: err.data?.googleClientId ?? null, forbidden: err.status === 403, message: err.message, }; } throw err; } }, // #endregion // #region POST /api/auth/login — loginWithGoogle async loginWithGoogle(idToken) { logApi('loginWithGoogle', { idTokenLength: idToken?.length ?? 0, idTokenPrefix: idToken ? `${idToken.slice(0, 12)}…` : null, }); const data = await http('/api/auth/login', { method: 'POST', body: { idToken }, }); // Confirm whether the session cookie actually works (not just login JSON). const session = await auth.me(); logApi('session-after-login', { loginUser: data.user?.email ?? data.user?.sub ?? data.user ?? null, meUser: session.user?.email ?? session.user?.sub ?? session.user ?? null, meForbidden: session.forbidden ?? false, meMessage: session.message ?? null, sessionOk: Boolean(session.user), }); return { user: data.user, session }; }, // #endregion // #region POST /api/auth/logout — logout async logout() { try { await http('/api/auth/logout', { method: 'POST' }); } catch (err) { if (err.status !== 401) throw err; } }, // #endregion };