Appearance
ADM-035 権限管理画面
概要
- アプリが定義した Capability(日別記事・有料記事の専用 Capability、
import_min_repo_html、import_ana_slo_html、manage_new_machine_info、read_paid_article、read_ops_status、read_x_announce、record_x_announcement、read_birthday_data、link_birthday_kishu、add_birthday_data、update_birthday_data)を、ロールごとに付与・剥奪する管理画面。 - 行は
AppCapabilityRegistry::capabilities()、列はAppCapabilityRegistry::matrix_roles()から生成する。Capability を追加するときはレジストリに 1 エントリ足すだけで、画面の行と初回付与が追随する。 - WP コアの Capability(
edit_posts/read/upload_files等)とプラグインの Capability(Duplicate Post のcopy_posts等)は対象外。 - 保存内容は
WP_Role::add_cap/remove_capでロール定義に書き込むため、そのロールを持つ全ユーザーに即時反映される。
ロール列の扱い
| ロール | 列の扱い | 理由 |
|---|---|---|
administrator | 固定 | 締め出し防止。常に全 Capability を持つ。POST を改ざんしてもサーバー側で全付与する |
editor | 編集可 | — |
author | 編集可 | — |
min_repo_importer | 編集可 | 既定は import_min_repo_html / import_ana_slo_html |
daily_article_editor_bot | 編集可 | 既定は日別記事・有料記事の edit / edit_others / edit_published / publish と trash_daily_article_drafts / manage_what_day_master |
paid_article_editor_bot | 編集可 | 既定は有料記事の edit / edit_others / edit_published のみ(有料記事編集bot。publish・削除なし。wp-admin は開けない) |
new_machine_editor | 編集可 | 既定は manage_new_machine_info のみ(新台情報担当。WP コア Capability は read だけ) |
member | 表示のみ | read_paid_article を外すと会員の有料記事閲覧が壊れるため |
ops_status_reader | 編集可 | 既定は read_ops_status のみ(運用確認bot。wp-admin は開けない) |
x_announcer | 編集可 | 既定は read_x_announce / record_x_announcement のみ(X告知担当 bot。wp-admin は開けない) |
birthday_linker | 編集可 | 既定は「誕生日」グループの 4 つのみ(誕生日紐付け担当 bot。wp-admin は開けない) |
recommend_picker | 編集可 | 既定は read_recommend_data / write_recommend_draft のみ(おすすめ台担当 bot。wp-admin は開けない) |
subscriber / contributor は列に出さない。
初回付与とデプロイ時の挙動
AppCapabilityInstaller(initpriority 0)が、レジストリの各 Capability を既定ロールへ(ロール, Capability)の組ごとに 1 度だけ 付与し、付与済みの組(ロール:Capability)を optionapp_capability_seeded_keysに記録する。- 記録済みの組は再付与しない。本画面で外した Capability は、デプロイや再実行で復活しない。
- 既定ロールが存在しない組は記録せず、ロールが作られた時点で付与する。既存 Capability の既定ロールを後から増やした場合も、増やした組だけ付与する。
- 本機能を初めてデプロイした環境では option が空のため、既定付与をすべて 1 度だけ適用する(既に持っている Capability は変わらない。それ以前に手動で外していた既定 Capability は戻る)。
- administrator にはレジストリの全 Capability を毎回補完する。
- 統合前のインストーラーが使っていた option
daily_article_role_install_version/member_role_install_versionは参照しない(残っていても無害なため削除処理は置かない)。min_repo_importer_role_install_versionは旧 Capability 剥奪の実行済み判定として引き続き使う。 - カスタムロール(
member/min_repo_importer/daily_article_editor_bot/paid_article_editor_bot/new_machine_editor/ops_status_reader/x_announcer/birthday_linker/recommend_picker)が欠落していれば(DB リストア等)、WP コア Capability と既定のアプリ Capability で再作成する。
ワイヤーフレーム
| Capability | 管理者 | 編集者 | 投稿者 | min-repo 取込担当 | 日別記事編集bot | 新台情報担当 | 会員 |
|---|---|---|---|---|---|---|---|
| 日別記事 | |||||||
編集(自分の記事) edit_daily_articles | ☑(固定) | ☑ | ☑ | ☐ | ☑ | ☐ | ☐(表示のみ) |
他人の記事を削除 delete_others_daily_articles | ☑(固定) | ☑ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
未公開記事をゴミ箱へ trash_daily_article_drafts | ☑(固定) | ☐ | ☐ | ☐ | ☑ | ☐ | ☐(表示のみ) |
〇〇の日マスタへ登録(REST) manage_what_day_master | ☑(固定) | ☐ | ☐ | ☐ | ☑ | ☐ | ☐(表示のみ) |
| 有料記事 | |||||||
| … | |||||||
| 外部データ取込 | |||||||
min-repo HTML 取込 import_min_repo_html | ☑(固定) | ☐ | ☐ | ☑ | ☐ | ☐ | ☐(表示のみ) |
ana-slo HTML 取込 import_ana_slo_html | ☑(固定) | ☐ | ☐ | ☑ | ☐ | ☐ | ☐(表示のみ) |
| 新台情報 | |||||||
新台情報の取得・紐付け manage_new_machine_info | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☑ | ☐(表示のみ) |
| 会員 | |||||||
有料記事の閲覧 read_paid_article | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☑(表示のみ) |
| 運用確認 | |||||||
運用状態の確認 read_ops_status | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
| X告知 | |||||||
告知用メタ情報の取得 read_x_announce | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
告知履歴の記録 record_x_announcement | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
| 誕生日 | |||||||
誕生日データの検索 read_birthday_data | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
誕生日機種の紐付け link_birthday_kishu | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
誕生日データの追加 add_birthday_data | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
誕生日データの更新・削除 update_birthday_data | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
| おすすめ台 | |||||||
おすすめ台用データの取得 read_recommend_data | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
おすすめ案の下書き保存 write_recommend_draft | ☑(固定) | ☐ | ☐ | ☐ | ☐ | ☐ | ☐(表示のみ) |
[保存]
有料記事編集bot(paid_article_editor_bot)・運用確認bot(ops_status_reader)・X告知担当(x_announcer)・誕生日紐付け担当(birthday_linker)・おすすめ台担当(recommend_picker)の列は上の図では省略している。有料記事編集bot の既定は「有料記事」グループの「編集(自分の記事)」「他人の記事を編集」「公開済みを編集」の 3 行だけ ☑(公開済み記事は固定セクション meta だけ更新できる。有料記事 会話執筆 + WP 下書き投稿)。運用確認bot の既定は「運用状態の確認 read_ops_status」だけ ☑、X告知担当の既定は「X告知」グループの 2 行だけ ☑、誕生日紐付け担当の既定は「誕生日」グループの 4 行だけ ☑、おすすめ台担当の既定は「おすすめ台」グループの 2 行だけ ☑ で、他の行は ☐。誕生日の Capability は birthday/v1 REST(API-008)だけで使い、誕生日の管理画面(ADM-013 等)の権限には使わない。おすすめ台の Capability は recommend/v1 REST だけで使う。おすすめ案の承認・却下は bot に渡さず、管理者(manage_options)だけが行う。
画面仕様
ブロック一覧
| ブロックID | ブロック名 | 表示内容 | 初期値 | ユーザー操作 | アクション |
|---|---|---|---|---|---|
B-0 | 導入・注意 | 画面の目的、管理者固定・会員表示のみ・対象外の権限・即時反映の注意 | — | — | - |
B-1 | マトリクス | グループ見出し付きの Capability 行 × ロール列のチェックボックス | 各ロールの現在の付与状態 | 編集可の列のチェック ON/OFF | - |
B-2 | 保存 | 保存ボタン | — | 確認ダイアログ後に送信 | A-1 |
表示ルール
- 行はグループ(日別記事 / 有料記事 / 外部データ取込 / 新台情報 / 会員 / 運用確認 / X告知)ごとに見出しを付け、日本語ラベル・Capability 名・説明を表示する。
- 固定列(管理者)と表示のみの列(会員)のチェックボックスは
disabled。 - 未登録のロール(
get_role()が null)はセルに「未登録」と表示し、チェックボックスを出さない。
エラー
| 条件 | ユーザー向け挙動 | メッセージ |
|---|---|---|
manage_options なし | 表示: wp_die / POST: 何もしない | 権限メッセージ |
| nonce 不正 | リダイレクト+失敗通知 | 認証失敗 |
| 不明な操作 | リダイレクト+失敗通知 | 不明な操作 |
処理連携仕様
アクション一覧
A-1
B-2 の保存ボタン押下で、マトリクスのチェック状態を送信する。編集可のロールのうち、画面に描画して acapm_roles[] で送ったロールだけ、レジストリの Capability について差分を add_cap / remove_cap する(RoleCapabilityMatrix::apply())。送ったロールで 1 つもチェックが無い場合は、そのロールのアプリ Capability をすべて外す。描画時に未登録だったロールは送らないため変更しない。administrator には送信内容に関係なく全 Capability を付け直し、member とレジストリ外の Capability は変更しない。
リクエスト
| requestParam | 本画面の値(どの部品から何を送るか) |
|---|---|
acapm_action | save(hidden) |
acapm_caps[<ロール>][] | B-1 でチェックされた Capability 名 |
acapm_roles[] | 描画した編集可ロール(hidden) |
acapm_nonce | nonce(検証アクション: capability_management_admin) |
レスポンス
| 項目 | 内容 |
|---|---|
| 成功時 | 本画面へリダイレクト。acapm_success=1、acapm_msg に変更件数 |
| 失敗時 | 本画面へリダイレクト。acapm_success=0、acapm_msg に失敗理由 |
| 画面更新時の処理 | 管理画面通知を表示し、マトリクスを保存後の付与状態で再描画する |
外部インターフェース
画面 URL
| 項目 | 値 |
|---|---|
| URL | /wp-admin/admin.php?page=capability-management-admin |
| 種別 | 管理画面 |
| メニュー名 | 権限管理 |
| 親メニュー | サイト運営ダッシュボード(site-ops-dashboard) |
| 権限 | manage_options |
更新不可とみなすもの
pageslugcapability-management-adminを安易に変更しない- option
app_capability_seeded_keysのキー名を変更しない・値の形式(ロール:Capability)を変更しない(変更すると全 Capability が既定ロールへ再付与され、画面で外した設定が戻る)