組織ごとの「ユーザー管理」ON/OFFトグルを追加

done

セッション開始:2026/06/02 11:10

planning developing done

目的 / なぜ必要か

現状、組織単位の機能ON/OFF(機能フラグ)は「3D間取り」のみで、システム管理画面の組織詳細ページから切り替えられる。 これと同様に、「ユーザー管理」機能も組織単位でON/OFFできるようにする。 OFFにした組織では、組織管理画面のヘッダーから「ユーザー」ナビを消し、 /users 配下へ直接アクセスしても利用不可画面を表示する。

スコープ

やること

  • 機能フラグ isUserManagementAvailable(既定 true)を追加
  • system-manager の組織詳細に「ユーザー管理」トグル(確認ダイアログ付き)を追加
  • organization-manager ヘッダーの「ユーザー」ナビを、OFF時に非表示
  • /users/layout.tsx でガードし、OFF時は利用不可画面を表示
  • organization-manager に利用不可画面コンポーネントを新設

やらないこと

  • ユーザー管理のサーバーアクション側でのフラグ検証(ページガードのみ)
  • 既存組織へのデータ移行(バックフィル)— 既定ONのため不要
  • ユーザーデータ自体の削除・無効化(OFFは管理画面操作の遮断のみ)
  • 3D間取りトグルの既存挙動の変更
  • 新しいフラグUI基盤の汎用化(今回は3D間取りと同型で踏襲)

決定事項(仕様)

フラグキー isUserManagementAvailable(肯定形。3D間取りの isSolidFloorPlanAvailable と命名の向きを揃える)
既定値 true(ON)。この項目のみ z.boolean().default(true).optional()。既存組織は未設定でもONとして扱われる(オプトアウト型
設定UI system-manager 組織詳細 /organizations/[organizationId] にトグルボタン。3D間取りと同じくクリック→確認ダイアログ→更新のUX
OFF時:ナビ organization-manager ヘッダーの「ユーザー」ナビを非表示
OFF時:ページ /users 配下(一覧・追加・詳細・編集)すべてを /users/layout.tsx で一括ガードし、利用不可画面を表示
ガード範囲 ページ表示のガードのみ。サーバーアクションでのフラグ検証は行わない
利用不可画面 user 側 FeatureUnavailable に倣い organization-manager に新設。文言は対象が分かる表現(例「ユーザー管理機能は利用できません」)
フラグ取得元 auth()session.user.organization.featureFlags(既存の取得経路を流用)

UIイメージ(修正後)

① システム管理画面:組織詳細にトグルを追加

組織詳細

3D間取り

この組織で3D間取り機能を利用可能にする

ユーザー管理 本セッションで追加

この組織でユーザー管理機能を利用可能にする(既定:ON)

② 組織管理画面:OFF時はナビ非表示+利用不可画面

組織管理
ホームステージング 問合せ ユーザー お知らせ
ユーザー管理機能は
ご利用いただけません。
ご利用に関するお問い合わせは
サポート担当までご連絡ください。
ホームに戻る

※ ON(既定)の組織では従来通り「ユーザー」ナビが表示され、/users も通常表示される。 利用不可画面の最終的なアイコン・文言は、organization-manager の既存トーンに合わせて調整する。

実装計画(影響範囲)

変更 packages/database/lib/organization/feature-flags.ts

featureFlagsSchemaisUserManagementAvailable: z.boolean().default(true).optional() を追加。

新規 apps/system-manager/app/organizations/[organizationId]/_components/organization-feature-flag-is-user-management-available-switch-button/index.tsx

3D間取り用トグル(...-is-solid-floor-plan-available-switch-button)に倣ったトグルボタン。確認ダイアログ付き。

変更 apps/system-manager/app/organizations/[organizationId]/page.tsx

追加したトグルボタンを配置し、featureFlags.isUserManagementAvailable を渡す。

変更 apps/system-manager/actions/organization/update-organization.ts

isUserManagementAvailable が渡された場合に featureFlags へ反映する分岐を追加。

変更 apps/organization-manager/app/_components/header-navigation/index.tsx

isUserManagementAvailable が false のとき「ユーザー」NavigationButton を表示しない。

変更 apps/organization-manager/app/users/layout.tsx

auth() で組織の featureFlags を取得し、OFF なら利用不可画面を返す(/users 配下を一括ガード)。

新規 apps/organization-manager/components/error/feature-unavailable/index.tsx

user 側 FeatureUnavailable に倣った利用不可画面コンポーネント(パスは既存構成に合わせて調整)。

留意点 / 未確定