# PackLog Base Account Security Version: 2026-06-02 ポイント、共有データ、DB貢献を扱うため、PackLog Baseではアカウント保護を強めに設計します。 ## 基本方針 - 認証はSupabase Authに集約する - Googleログインを基本の登録手段にする - Googleアカウント側の2段階認証を推奨する - 認証や通知の送信元には `noreply@packlogbase.com` を使う想定とし、返信が必要な連絡は `support@packlogbase.com` に集約する - ユーザー本人のデータ操作はRLSで制限する - DB本体への提案反映は管理者承認制にする - ポイントは台帳に追記し、二重付与を防ぐ - 退会申請後は公開とポイント加算を止める - 30日後の削除はサービスロールまたは管理者だけが実行する ## アクセス方針 当初の「気軽に触れる道具感」は残しつつ、保存、共有、ポイント、DB提案、位置情報など責任やセキュリティが絡む機能はログイン必須にします。 | 機能 | ログイン | | --- | --- | | トップページ閲覧 | 不要 | | 共有リンク閲覧 | 不要 | | 利用規約・プライバシーポリシー閲覧 | 不要 | | 山DB・キャンプ場DB・Gears DBの検索 | 必須寄り。公開閲覧にする場合も保存操作は必須 | | Pack作成 | 必須 | | My Gear保存 | 必須 | | Field Log保存 | 必須 | | 旅の軌跡保存 | 必須 | | 共有公開 | 必須 | | DB修正提案 | 必須 | | ポイント表示・付与 | 必須 | | 退会申請 | 必須 | 未ログイン時は、機能を完全に隠すよりも「ログインすると保存・共有・ポイントが使える」ことを示し、サービスの入口を軽く保ちます。 ## 初回登録フロー 1. Googleでログイン 2. 利用規約、プライバシーポリシー、ポイント規約に同意 3. ニックネームと活動拠点を設定 4. 通常機能を利用開始 公開、退会申請、DB提案などの重要操作では、PLB側でも確認ダイアログや同意文言を表示します。 ## アカウント状態 `profiles.account_status` は次を使います。 | status | 意味 | | --- | --- | | `active` | 通常利用中 | | `restricted` | 運営判断で一部制限 | | `deletion_requested` | 退会申請済み、30日猶予中 | | `anonymized` | 個人データ匿名化済み | ## 同意記録 利用規約、プライバシーポリシー、ポイント規約への同意は `account_consents` に記録します。 最初の実装では、同意時刻、文書種別、文書バージョン、ユーザーIDを保存します。IPアドレスやユーザーエージェントは、必要性が高い場合のみ最小限で扱います。 ## 制限時の扱い `restricted` または `deletion_requested` のユーザーは、次の操作を制限する想定です。 - 新規公開 - DB修正提案 - ポイント加算 - 共有リンクの新規作成 既存の公開データは、退会申請時に非公開化します。 ## 公式メールアドレス 運用上の連絡先は次のように使い分けます。 | address | 用途 | | --- | --- | | `hello@packlogbase.com` | 一般的な案内、外部連絡、将来の広報窓口 | | `support@packlogbase.com` | ユーザー問い合わせ、退会、削除、プライバシー、投稿・ポイント相談 | | `dev@packlogbase.com` | 開発、障害調査、外部サービス設定、技術連絡 | | `noreply@packlogbase.com` | 認証メール、通知メールなど返信を受けない送信元 | ユーザー向けの問い合わせ窓口は、原則として `support@packlogbase.com` に統一します。