アカウントとセキュリティ
対象読者:自分のアカウントを管理する開発者と、ローカル評価環境を保守する運用担当者。
最小例
/register → /verify-email → /login → /settings/account
登録とメール確認
操作画面の登録から、メール、表示名、12〜200文字のパスワードを入力します。アカウントは pending_verification で始まり、組織やプロジェクトにはアクセスできません。メールの8桁の数字と登録時のパスワードを入力すると active になり、その後ログインします。コードはフォームとリクエスト本文だけで送信し、URLには入れません。ブラウザーはパスワードやコードを永続保存しません。
コードの有効期限は15分間、誤入力は5回までです。30秒後に再取得でき、用途ごとに1時間あたり10回まで発行します。新しいコードは以前のものを無効にします。重複登録で未確認アカウントやパスワードを上書きしません。元のパスワードが分からない場合は再設定を行い、新しいメール確認コードを取得してください。
登録とコード要求は、受付の事実だけを返します。アカウントの存在や受信箱への配信を保証しません。メール接続障害は利用不可として表示し、未確認の登録情報は保持します。復旧後に再取得できます。受信拒否と送信対象外のアドレスは同じ一般的な応答になります。確認コードと再設定コードを交換したり、使用済みコードを再利用したりできません。
パスワードとセッション
「パスワードをお忘れですか?」から再設定コードを取得し、再設定画面にコードと新しいパスワードを入力します。成功すると同じトランザクションでパスワードを変更し、すべての旧セッションを失効させます。自動ログインや未確認アカウントの有効化は行いません。メールが未確認なら、新しい確認コードを取得してください。
「設定 → アカウントとセキュリティ」で、パスワード変更と全セッションのログアウトができます。変更には現在のパスワードが必要で、この画面を含む全セッションからログアウトします。通常のログアウトは現在のセッションだけを失効させます。失敗時は未確認と表示して再試行でき、サーバーで使用可能なセッションを終了済みとは表示しません。
すべてのAdminリクエストで、アカウントと実際のセッション状態を確認します。失効・期限切れ・無効化・退会済みのセッションは拒否します。復旧しても旧セッションは復活しません。すでに発行した添付ファイルの短期URLは元の期限まで有効で、ダウンロード済みのコピーはログアウトで回収できません。
アカウントの削除
同じ設定画面から、現在のパスワードと明示的なチェックで完全削除を確認します。組織の最後の有効な所有者の場合は、先にメンバー画面で別の有効かつ確認済みのメンバーを所有者にしてください。G4にはこの条件を回避するための組織閉鎖機能はありません。
削除によりメール、名前、パスワード、全メンバー権限、現在の担当割り当てを消去します。セッションとコード、本人が作成したか本人宛ての未承諾招待を無効にし、招待履歴の本人の受信先メールを消去します。共有プロジェクト、キー、フィードバック、添付、コメント、必要な監査履歴は残ります。匿名UUIDの記録で参照を保ち、画面には「退会したユーザー」と表示します。共有データやバックアップをすべて物理削除する操作ではありません。退会済みアカウントは復旧できません。
ローカルメールと運用保守
MailpitがSMTPポート 1025 でメールを捕捉し、http://localhost:8025 で確認できます。外部転送や実際の本番メールは使用しません。接続と送信には時間制限があります。本番ドメインと配信は、後の運用受け入れで確認します。
データベースの運用権限を持つ担当者だけが保守コマンドを使います。ACCOUNT_MAINTENANCE_DATABASE_URL を環境変数で安全に設定し、Admin APIリポジトリで実行します。
: "${ACCOUNT_ID:?set the target account UUID}"
go run ./cmd/accountctl --user-id "$ACCOUNT_ID" --action disable
go run ./cmd/accountctl --user-id "$ACCOUNT_ID" --action disable --apply
go run ./cmd/accountctl --user-id "$ACCOUNT_ID" --action restore --apply
最初のコマンドは変更しない事前確認です。再実行は冪等で、指定した1アカウントだけを処理し、ID・状態・件数のみを出力します。無効化は全セッションを失効させます。復旧後は確認済みならactive、未確認ならpendingに戻り、新規ログインが必要です。テナント管理者は他人のグローバルアカウントを無効化できず、system_admin もメンバー権限なしに組織やプロジェクトを読み取れません。
Bootstrapは空のアカウントDBだけに未確認の運用アカウントを作成します。匿名の削除記録を含め既存アカウントがあれば、再起動しても再作成しません。ローカルシードは明示的に確認済みの合成fixtureです。旧Alphaのアカウントや業務データは移行せず、空の最新構造の環境を使用します。G3固定パッケージは過去の証拠として保持し、現在のサーバーには最新SDKを使用します。
削除後に同じメールで登録すると、新しい UUID が作られ、再度のメール認証が必要です。以前のセッション、所属、招待は引き継ぎません。運用コマンドの sole_owner_organizations は他の有効な所有者がいない組織数です。運用担当者は唯一の所有者も一時的に無効化できます。所属は保持され、復元後に再ログインできます。アカウント削除や所有者の降格には、有効な所有者を残す必要があります。
よくある間違い
- コード、パスワード、JWT、招待トークンをURLやログに入れないでください。
- 受付を配信完了、パスワード再設定を自動ログインと解釈しないでください。
- メンバー削除、全体の無効化、個人の退会を混同し、共有プロジェクトを削除しないでください。
- 退会アカウントを復旧したり、旧Alphaの認証情報やデータを再利用したりしないでください。