🚀 新規事業

with-auth-query

最終更新 2026年05月04日 / 40_新規事業/SCALE_Build/カタログ/機能集/with-auth-query.md

withAuthQuery(クロスドメイン認証ブリッジ)

用途

別オリジンのプロジェクトへリンクを貼る時、URL クエリ ?auth=<base64> でユーザー情報を引き継ぐ。受け取り側は AuthProvider が初回 useEffect でクエリを読んで sessionStorage に保存 → クエリは history.replaceState で削除。

コード

const SKIP_AUTH_DOMAINS = [/* 独自認証システム */];

export function withAuthQuery(externalUrl: string, user: UserLite | null): string {
  if (!user) return externalUrl;
  if (SKIP_AUTH_DOMAINS.some(d => externalUrl.includes(d))) return externalUrl;
  const payload = { id: user.id, name: user.name, email: user.email, /* PWは含めない */ };
  const json = JSON.stringify(payload);
  const utf8 = new TextEncoder().encode(json);
  let bin = '';
  utf8.forEach(b => { bin += String.fromCharCode(b); });
  const b64 = btoa(bin);
  const sep = externalUrl.includes('?') ? '&' : '?';
  return `${externalUrl}${sep}auth=${encodeURIComponent(b64)}`;
}

注意

  • パスワードは絶対に渡さない(id/name/email/role/allowedSystems のみ)
  • 独自認証ドメインは SKIP_AUTH_DOMAINS で除外(URLをきれいに保つ)