Skip to content

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(init priority 0)が、レジストリの各 Capability を既定ロールへ(ロール, Capability)の組ごとに 1 度だけ 付与し、付与済みの組(ロール:Capability)を option app_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_actionsave(hidden)
acapm_caps[<ロール>][]B-1 でチェックされた Capability 名
acapm_roles[]描画した編集可ロール(hidden)
acapm_noncenonce(検証アクション: 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

更新不可とみなすもの ​

  • page slug capability-management-admin を安易に変更しない
  • option app_capability_seeded_keys のキー名を変更しない・値の形式(ロール:Capability)を変更しない(変更すると全 Capability が既定ロールへ再付与され、画面で外した設定が戻る)