じぶんFP · Sprint 2 · 認証ゲート

実装は完了。あなたにしかできない残り2つ。

ログインゲート/購入者判定/スコープ分割の実装・テストは全部緑になっています。ただ「本物のGoogleログイン」と「本番反映」だけは、あなたの手と承認が要ります。ここに手順をまとめました。

✓ 実装 全Phase完了 ✓ ユニット 906 / ゲートE2E 18 ✓ 本番相当スモーク 20/20 ✓ セキュリティ指摘 修正済 ◻ 残り2件(あなた)
要は あと2ステップです。まず①自分のPCで実際にログインして「Drive権限を求めてこない」ことを目で見る。次に②問題なければ本番へ出す。それだけ。
STEP ① 実機チェック

自分のPCでログインを試す所要 10〜15分 / あなたの手

目的:基本ログインの同意画面に Googleドライブの権限が出てこないことを、実際のGoogle画面で確認する(=今回の設計の一番の肝)。あわせて購入者ゲートと退会時のデータ持ち出しも触る。

  1. 設定ファイルを用意する

    アプリのフォルダで、テンプレートを複製して .env.local を作ります。

    cd C:\Users\HanaP\workspace\brain\_worktrees\jibun-fp-rich\55_Projects\personal-fp-app\app
    copy .env.local.example .env.local
  2. 中身を4つ埋める

    エディタで .env.local を開き、下の値を入れます。上3つは以前Drive同期を動かした時の値の使い回しでOK。最後の1行だけが今回の新顔です。

    変数入れる値
    AUTH_SECRETセッション暗号鍵(既存の値/無ければ openssl rand -base64 32
    AUTH_GOOGLE_IDGoogle OAuth クライアントID(既存)
    AUTH_GOOGLE_SECRETGoogle OAuth クライアントシークレット(既存)
    ENTITLED_EMAILSあなたのGoogleアカウントのメール(今回追加・1行)
    ここが罠: ENTITLED_EMAILS を空のままにすると、あなた自身も含めて全員が購入案内(paywall)に飛ばされます(安全側に倒す設計)。必ず自分のメールを入れてから起動してください。
  3. Googleコンソール側を確認

    2点だけ。Google Cloud Console の該当OAuthクライアントで:

    • 「テストユーザー」に自分のアカウントが登録されている(同意画面が External + テスト配布のため)
    • 「承認済みリダイレクトURI」に http://localhost:3000/api/auth/callback/google がある(ローカルは3000番で起動します)
  4. 起動する

    npm run dev

    ブラウザで http://localhost:3000/dashboard を開く。

  5. 目で見て確認(チェックリスト)

    • 未ログインで /dashboard を開くと /signin に飛ばされる
    • 「Googleでログイン」を押した同意画面に、Driveの権限が出てこない(=基本ログインは openid+email だけ)★これが一番大事
    • ログイン後 /dashboard に戻ってくる
    • 右上の同期バッジ → クラウド同期トグルON → 「許可して同期を有効にする」を押すと、今度はDrive権限の同意画面が出る(=ここで初めてDriveを要求)
    • /account でメール/利用ステータス/同期権限が表示され、「データをエクスポート」でJSONがダウンロードできる
    スクリーンショットを撮っておくと、あとで記録(SC-004/SC-011の実機証跡)に残せます。特に「Drive権限が出ない同意画面」の1枚が価値大。
STEP ② 本番へ出す

本番デプロイSTEP①がOKなら / あなたの承認が要る操作

本番は Netlify(jibun-fp.netlify.app)。middlewareのゲートは、この本番デプロイで初めて Netlify Edge の実環境に乗ります(ローカルのスモークは別ランタイム)。出す前に環境変数のチェックリストだけ守ってください。

前提: S2のコードは作業ブランチ feat/jibun-fp-s1(worktree)にあり、まだ本流(main)に統合していません。本番に出すなら、先にブランチ統合の判断が要ります(ここはタイミングをあなたが決めるところ)。

本番の環境変数チェックリスト

デプロイコマンド

cd 55_Projects/personal-fp-app/app
netlify deploy --build --prod
Netlify側の環境変数は Netlify のダッシュボード(または netlify env:set)で管理します。DEPLOY_REGISTRY に残る vercel env 系のコマンドは旧ホスティングの名残なので使いません。

出した後の確認

この2件が終われば S2(認証ゲート)はクローズです。実装・テスト・レビュー(セキュリティ指摘の修正含む)はすべて完了済み。

関連:plan ~/.claude/plans/personal-fp-app-s2-auth-gate.md / 完了サマリ 55_Projects/personal-fp-app/CLAUDE.md(S2認証ゲート 完了状況)/ ブランチ feat/jibun-fp-s1(worktree jibun-fp-rich)。