🌐 言語: 🇻🇳 Tiếng Việt · 🇬🇧 English · 🇯🇵 日本語(現在)
GP247 の管理画面の権限管理(権限・ロール・ユーザー)
はじめに
このドキュメントでは、GP247 管理画面の権限管理(RBAC)の仕組みを説明し、管理者が 誰に何をさせるかを自分で設定する方法を案内します。読み終えると、3つの構成要素 (権限・ロール・ユーザー)、システムがどの画面への入場を許可するかの判断方法、そして スタッフ向けの権限の方針を自分で組み立てる方法(例: 注文処理だけを行うスタッフ、閲覧だけできる マネージャーなど)がわかります。プログラミングの知識は不要です。
1. 3つの構成要素
GP247 の権限管理は、次の3つを組み合わせたものです。
| 構成要素 | 内容 | 身近な例 |
|---|---|---|
| 権限(Permission) | 「鍵の束」— 管理画面の1つまたはいくつかの画面を開けます | 「注文管理」は注文に関するページを開けます |
| ロール(Role) | すばやく割り当てるために、あらかじめまとめた権限のグループ | 「販売スタッフ」= 注文 + 顧客 |
| ユーザー(User) | 管理画面のログインアカウント | ランさん、ナムさん… |
組み合わせ方:
- 1人のユーザーは複数のロールを持つことができ、さらに/または、いくつかの権限を直接割り当てることもできます。
- その人の実際の権限 = (すべてのロールからの権限)+(直接割り当てた権限) の合計です。
そのため、チーム全体で共有するロールをいくつか作っておき、新しいロールを作らずに、 特定の1人にだけ特別な権限を「個別に追加」することもできます。
2. 「権限」の中身は?
各権限は次のもので構成されます。
- 名前(Name): 読みやすくするためのものです。例:「注文管理」。
- スラッグ(Slug): 短い識別コードです(例:
order.full)。スラッグは単なるラベルです。 権限を決めるものではありません。覚えやすい名前を付ければ十分です。 - アドレス+メソッドの一覧(http_uri): これが権限を決める部分です。 この権限で開けるページ(URL)と、許可する操作の種類を列挙します。
操作の種類:
- GET = ページを閲覧するだけ。
- ANY = そのページですべての操作ができる(閲覧+追加+編集+削除)。
権限に含まれるアドレスの1行の例: ANY::gp247_admin/order/*
gp247_admin/order/*= すべての注文ページ(*は「その配下のすべてのページ」を意味します)。ANY= 閲覧と操作の両方を許可します。
👉 重要なヒント: 権限を作成するとき、アドレスの選択欄はあらかじめ機能ごとのグループ
(注文、商品、顧客など)にまとめられています。各グループには、ANY::<グループ>/* という「すべて」の行が
用意されています。グループの「すべて」の行を選ぶ = その機能のすべての権限を与えることになります。
ほとんどの用途では、これが最も早く正しい方法です。
3. 2つの特別なロール(必ず覚えてください)
GP247 には、特別に強い2つのロールが最初から用意されています。
| ロール | 意味 |
|---|---|
| Administrator | 全権限 — すべての画面に入り、すべての操作ができ、あらゆるチェックを通過します。オーナーや最上位の管理者向けです。 |
| View.all(すべて閲覧のみ) | すべてのページを閲覧できますが、変更はできません(追加・編集・削除の操作はすべてブロックされます)。経理担当、監査担当、状況を見守りたい上司に適しています。 |
⚠️ ある人に Administrator または View.all を割り当てると、システムはその人の 他のロール・権限を上書きして外します。この2つのロールがすでにすべてを包含しているためです。 ユーザー画面でも、ロールの選択欄のすぐ下にこの注意が表示されます。
4. システムはどのように入場を判断するか?
覚えておくのは1つの共通ルールだけです。
メニューが見える = 閲覧できる。操作できるかどうかは種類(GET/ANY)次第。
具体的には:
- 左側のメニューには、その人が閲覧権限(GET)を持つ項目だけが表示されます。権限がなければ、 その項目は表示されません。
- ページに入る: そのページのアドレスに対する**閲覧権限(GET または ANY)**が必要です。
- 操作(追加・編集・削除): そのページのアドレスに対する ANY(または POST)権限が必要です。
- Administrator: すべてに入り、すべての操作ができます。View.all: すべてを閲覧できますが、編集はできません。
言い換えると、メニュー、画面への入場、操作は、すべてその人の権限に含まれる同じアドレスの一覧 (http_uri)に基づいています。スラッグは影響しません。単なるラベルです。
💡 そのため、ある機能に「すべて」の行
ANY::<グループ>/*を選ぶと、ユーザーはその機能の メニューが見え、閲覧でき、操作もできるようになります。すべてまとめて有効になります。
5. 実践:権限を作成する
管理ページは、ユーザー・権限の管理エリアにあります。メニューに見当たらない場合は、 ブラウザーに直接アドレスを入力してください(
your-domainをあなたのドメインに置き換えます):https://your-domain/gp247_admin/permission。
- **「権限」**ページ(
.../gp247_admin/permission)を開きます。 - 新規作成の枠に、わかりやすい名前を入力します。例:
注文管理。 - 短いスラッグを入力します。例:
order.full(小文字、数字、ドット、ハイフン、 アンダースコアだけを使います)。 - アドレスの選択欄で order(注文)グループを探し、「すべて」の行
ANY::gp247_admin/order/*にチェックを入れます。他の機能(例えば顧客)も与えたい場合は、 そのグループの「すべて」の行(ANY::gp247_admin/customer/*)にもチェックを入れます。 - **「保存」**をクリックします。成功すると、新しい権限が右側の一覧に表示されます。
ある機能を閲覧だけできる権限を作りたい場合は、手順4で
ANY::…の行の代わりに、 そのグループのGET::…の行を選びます(閲覧のみで、編集はできません)。
6. 実践:ロールを作成して権限を割り当てる
- **「ロール」**ページ(
.../gp247_admin/role)を開きます。 - ロールの名前を入力します。例:
販売スタッフ。 - スラッグを入力します。例:
sales_staff。 - **「権限」**欄で、このロールにまとめたい権限を探して選びます(例: 「注文管理」「顧客管理」)。
- **「保存」**をクリックします。
これ以降は、ある人に
販売スタッフロールを割り当てるだけで、その中のすべての権限が すぐに与えられます。権限を1つずつ選び直す必要はありません。
7. 実践:ユーザーを作成して権限を与える
- **「ユーザー」**ページ(
.../gp247_admin/user)を開きます。 - 「氏名」、「ユーザー名」、「メールアドレス」、**「パスワード」を入力します。(アバター画像を 選ぶこともできます。アカウントを使えるようにするため、「有効」**のチェックは入れたままにします。)
- **「ロール」**欄で、作成したロールを1つ以上選びます(例:
販売スタッフ)。 - (任意)「権限」欄で、この人だけに個別の権限を追加で割り当てます。 共通のロールにない機能が必要な場合に使います。
- **「送信」/「保存」**をクリックします。新しいユーザーが右側の一覧に表示されます。
作成したユーザーがログインすると、自分の権限に対応するメニューだけが表示されます。
8. 戦略のレシピ(すばやく選ぶ)
よく使う「レシピ」をいくつか紹介します。必要に応じて組み合わせてください。
- オーナー/最上位の管理者 → Administrator ロールを割り当てます。それだけで、追加の設定は不要です。
- 状況を見守るだけの上司/経理担当 → View.all ロールを割り当てます。すべてを閲覧できますが、何も編集できません。
- 注文処理だけを行うスタッフ → 権限
ANY::gp247_admin/order/*を作成し(必要に応じてANY::gp247_admin/customer/*も追加)、「注文スタッフ」ロールにまとめて割り当てます。 - コンテンツ・商品の担当スタッフ →
ANY::gp247_admin/product/*、ANY::gp247_admin/category/*、ANY::gp247_admin/brand/*を含む権限を作成し、「商品編集者」ロールにまとめます。 - レポートの閲覧だけを許可する人 →
reportグループのGET::の行だけを含む権限を作成します。 - 1つの機能だけを追加で必要とする人 → 共通のロールはそのままにし、ユーザー画面で その人だけに直接の権限を追加します(7章の手順4)。
選び方の原則: グループには共通のロールを作ることを優先し、直接の権限は個人ごとの 例外にだけ使います。そうすると、後で管理しやすくなります。
9. 条件と制約(操作の前に確認)
ユーザーにロールを割り当てるとき
- Administrator または View.all を選ぶと、その人の他のロール・権限は削除されます。 この2つのロールはすべてを包含しているため、他の権限を残しても意味がないからです。
- View.all は決して操作できません。 追加・編集・削除のボタンはすべてサーバー側で ブロックされます。書き込み権限を追加で割り当てようとしても同じです。
ユーザーを作成・編集するとき
- ユーザー名: 必須で、3〜100文字です。英字、数字、
@、ドット、アンダースコアだけを使えます。 また、他の人と重複してはいけません。 - メールアドレス: 必須で、正しいメール形式であり、重複してはいけません。
- パスワード: 新規作成時は必須です。編集時に空欄にすると、元のパスワードを維持します。 パスワードの強度は、ショップの**「パスワードポリシー」**に従います(最小/最大の長さ、 大文字・小文字・数字・記号の使用を求める場合もあります)。
- ユーザー画面では、保護された管理者アカウントの編集・削除はできず、自分自身も削除できません。 自分を締め出してしまうのを防ぐためです。自分の情報を変更するには、 **「設定」(個人設定)**ページを使ってください。
権限を作成するとき
- スラッグ: 必須で、3〜50文字です。英字、数字、ドット、ハイフン、アンダースコアだけを使えます。 また、他の権限と重複してはいけません。
- アドレス(http_uri): 候補の一覧(グループ別にまとめ済み)から選ぶことをおすすめします。
ANY::…/*の行 = 1つのグループのすべての権限、GET::…の行 = 閲覧のみです。
権限のないユーザーがログインしたとき
- ロールも権限も持たない人もログインはできますが、メニューはほとんど空になり、 機能のページを開くと**「アクセスが拒否されました」**と表示されます。これは設計どおりです (与えていないものには入れません)。適切なロール・権限を少なくとも1つ与えてください。
10. よくある質問(Q&A)
Q1: スタッフに権限を割り当てたのに、クリックすると「アクセスが拒否されました」と表示されます。なぜですか?
→ その権限に正しい機能グループのアドレス(http_uri)が入っているか確認してください(例えば注文なら
ANY::gp247_admin/order/* が必要です)。名前やスラッグを付けただけでアドレスを選んでいない場合、
その権限は空で、何も開けません。
Q2: スタッフは閲覧できるのに、「保存」や「削除」を押すとブロックされます。なぜですか?
→ 権限が**閲覧のみ(GET)**になっています。操作を許可するには、そのグループの ANY::…/* の行に
権限を変更してください(ANY = 閲覧と追加・編集・削除の両方を許可)。
Q3: スラッグは重要ですか?間違えるとどうなりますか?
→ スラッグは覚えやすくするための単なるラベルで、権限を決めるものではありません。権限は **アドレスの一覧(http_uri)**で決まります。わかりやすいスラッグを付ければ十分です。
Q4:「ロールで割り当てる」のと「ユーザーに権限を直接割り当てる」のは何が違いますか?
→ 効果は同じです。ロールは権限をまとめて複数の人で再利用するために使い、直接の権限は 特定の1人の例外に使います。最終的な権限 = 両方の合計です。
Q5: View.all と、すべてのグループに GET 権限を割り当てるのは何が違いますか?
→ View.all は近道です。すべてのページを閲覧でき、すべての操作をサーバー側でブロックします。 グループごとに GET 権限を作成する必要はありません。「見守るだけ」の役割には、より早く安全です。
Q6: 誤ってある人に Administrator を割り当てました。その人は全権限を持っていますか?
→ はい。Administrator はあらゆるチェックを通過します。その人から Administrator ロールを外し、 適切なロール・権限を割り当て直してください。
Q7: ユーザー画面で削除・編集できないアカウントがあるのはなぜですか?
→ それは保護された管理者アカウント(およびログイン中のあなた自身のアカウント)です。 誤って自分を締め出してしまわないようにロックされています。自分の情報は **「設定」(個人設定)**ページで変更してください。
Q8: 追加でインストールしたプラグインも、この権限管理の仕組みに組み込まれますか?
→ はい。プラグインは同じアドレス(http_uri)の仕組みで自分の権限を宣言するため、 プラグインの画面にも、GP247 の他の機能と同じように権限を割り当てられます。
Q9: すべてを閲覧できて、注文だけを編集できる人を作りたいのですが?
→ View.all は使わないでください(View.all はすべての操作をブロックします)。代わりに、閲覧が必要な
グループの GET 権限と、注文専用の ANY::gp247_admin/order/* 権限を作成・割り当ててください。
Q10: 権限を変更した後、ユーザーはログアウト・再ログインする必要がありますか?
→ ページを再読み込みしてください。通常、変更は次のアクセスからすぐに反映されます。 メニューが更新されない場合は、念のためページの再読み込み(または再ログイン)を案内してください。
📅 最終更新: 2026-10-22 · ✍️ 作成者 (Author): GP247