RIGHT:[[:t/権限]] [[:t/継承]] [[:t/ロール]] [[☆]]
RIGHT:[[:t/権限]] [[:t/継承]] [[:t/ロール]]

[[:i/ロールは管理者とゲストのみ]]によって、権限は不要になった。もういい。

----

権限/継承のルールによって、''自分が使える権限のサブセット''を新しいロールに与えることができる(自分でも使えない権限は与えられない)。管理者不在でもコミュニティを維持できるようになる。
→ これは権限を誰かに与えられる権限であり、最上位の管理者の権限なので、その他の管理者には与えられない。もういい。

----

#contents

***権限の継承 [#o2b251d6]
%%設定項目の型は任意のラベルテキストと、選択肢から1つコピペ(列挙型)。ただし自分(ロールを作れるロール)に与えられている選択肢に含まれてなければ未定義(設定されていない状態)になる。このルールで最上位ロールが他のロールを一度に制御できるように。%%

%%ページ/属性の継承ルールとは違って、継承させていただく側に選択肢がある。継承元ロール名と権限集合のサブセットを定義できればいい。権限名のリスト。書かれている権限が使用可能なもの。書かれていないのは使用不可。書かれているかどうかによらず継承元が持たない権限は使用不可。書かれているのに使用不可になった権限は閲覧ビュー上で強調表示(書いてあるけど使えないという警告)。%%
%%ページ/属性ではないので「書かないと継承される」というページ/属性の継承ルールは適用されない。同じルールを取り入れる必要も無い。%%
%%選択肢なら継承させる側の値はどれ?属性の型定義(つまりそれを使うコード次第)の話なので…列挙値を書く記法が必要。とりあえず汎用記法で。%%

ページ/属性は制約のためのものではないのでこのルールとは別。下位のロールに制約を課すためには使えないし、ロールの上下関係とページの上下関係は違う。
ではどうやるか?
→ 制約(禁止事項)だけをページ/属性値にする。書かれていないことは何でもできる。継承を重ねるほど制約は増える。利用者ページを増やすときはそれに制約を課すため、必ず上位の権限を継承する必要がある。

そうして作ったロールを利用者に与える。
でもロールページを閲覧されたときは「できること」を表示したい。どうやるか?
→ やらない。表示に細工をすると仕組みが分かりにくくなる。権限も属性/継承と同じ仕組みなので、そう見えなければならない。常に「できないこと」を表示・管理してもらう。権限を考えるときはできないことを考えがちなので、こちらのほうが好都合。

→%%ロールはページ。特別なページ/型にするか特別なページ/要素で権限を定義するか。いずれにせよロールの上下関係も、下位に制約を課すルールも特殊なので、何かを特殊にする必要はある。%%

→%%記述先がページであること以外はすべて特殊。特定のページに特定の記述で書く。それを参照するのはユースケースから呼ばれた権限判定処理。すべてのページに存在するページ/属性とは別の処理。権限判定のときだけ参照と権限の継承処理が行なわれる。%%

→ %%[[:/属性継承と権限継承は別]]%%
***%%権限の継承%% [#s8591267]

%%未定義値を「上位からの継承」とするか「無効(設定を使う側次第)」とするかはロールとは別の設定。スペース別設定。%%
%%ページ/属性で設定するなら属性の継承ルールが使える。ページ/属性の設定に「明示してない項目をどう見なすか」という項目を用意して。この項目は書き方の指定なので、ページ内でのみ有効なプラグマのようなもののほうがいいかも知れない。%%



***上下関係 [#s8adc151]

ロールの上位/下位関係は作った側が上位、作られた側が下位。最上位はすべての上位にあたる。
つまりロールを定義してるページの作成者(の作成したとき)のロールが上位ロール。(下位展開に関係する)ページ構成の上下関係とは別。
ページ作成したときのロールはどこにも記録されていないので、ページ/裏に記録しておく必要がある。

%%作成したときでなく、権限参照時のロールでもいい?作成時だと記録を変える方法が別途要る…ページ/属性の変更で。%%

作成者のロールは複数あるかも知れない。作成者では不足。少なくともロール定義のページには「作成時に使われたロール」が必要。
%%そういった情報を持つにはページ/要素では不足。%%
%%上位ロールの同名権限を参照して、選択肢を用意するにはページ/要素が向いている。%%
%%権限設定には特殊なページ/型と、特殊なページ/要素が必要?%%
%%→特殊な処理がいる。記録のためのページは特殊でなくていい。%%
***[[:/ロールの上下関係]] [#c438a6da]
(上位含めて)特定のロールでしか書けないページを作る。特定ページだけの編集権限を定義して。
コード不要。運用でできる。

RIGHT:[[:t/管理]] [[:t/権限]]
***ロールを作るとはページを作ること [#ueea19b0]

「ロールを作る」とはそういうページを作る権限のこと。特定のディレクトリにあるページの作成・編集権限。この権限も下位ロールに継承可能。

自分の下位に利用者を作るということは、自分の利用者ページに下位ページを作るということ。その権限が利用者作成の権限であり、下位利用者の権限を変更するのも当該属性領域を変更する権限。

権限の継承は、ページ/属性の継承。継承があれば自分と下位の利用者は同じ。''自身の下位にいる利用者の権限を変えられるのは、自分の権限を変えられる利用者。''事実上、そういうのは管理者だけ。
***ロールを表すページの内容 [#h5b1ca66]

ページの内容に使用可能な権限(鍵)について記述。属性領域にはそのページが要求する権限(錠)などを書くので使えない。
権限(鍵)はロールを表すページの内容に書く。ここでもこのページの編集権限が必要。この編集権限がロールを作る権限ということ。

属性領域を分けられればそこにでも書ける。でもロールを定義できる権限(錠)を分けられない。権限を分けるために第二の属性領域を用意するのがいい?

権限(錠)はあらゆるページの属性領域に書く。→ [[権限]]
属性領域はどのページも共通の書式にしたほうが分かりやすい。
*** 同時に評価されるのはひとつだけ [#w698cfc0]
ロールを複数持っている利用者がいても、一度に評価されるのはロールひとつ分。それをロール数だけ順次評価。ロール別に評価するので、ひとつのロールに必要な権限が収まっていなければ権限判定を通過できない。鍵・錠の両方で。

これは権限設定を分かりやすくするため。組み合わせられなくして簡素化。
*** %%継承しなければならない%% [#ce1e94f4]
%%新ロールの作成者が持つロールのうち、いずれかを継承しなければならない。権限/継承は禁止事項を継承することなので、継承なしに作れてしまうと何も制限できなくなってしまう。%%

%%ロールでなく権限を直接利用者に与える方法は可能?%%

権限/継承に統合して、許可を継承するので、もういい。
***必要性 [#e96395ef]
例えばWikiFarmで、各Wikiの管理者を…

- 上位ロールを超えないようシステムで制限
これがロールを作れるロールの仕組み。
- 上位ロールを超えないよう規約で制限
規約違反は手作業で対処。

規約で制限するならロールを作れるロールは不要。

各Wikiにさらに小さい管理者を作るときも同様。規約で制限する場合はどの管理者もWikiFarm全体の管理者と同じ権限が与えられる。

→ [[:/下位の管理者の作り方]]
*** 分割すればいい [#m875299f]
管理者ページの変更権限と、ゲストの変更権限を分けておいて、上位の管理者はどちらも鍵として持つ一方、下位の管理者は1つしか持たない。といった設定をすれば特別な処理は要らない。
%%→ …にはならない。利用者の権限を書き換えられるなら、そこには上位の権限をいくらでも書けることになるので、機能しない。%%
書ける権限領域には何でも書けるけど、鍵はいずれも「禁止」を表すものなので問題ない。
*** 権限/継承は制限するためのルール [#u6e27912]
権限/継承は制限のルール。下位ロールのできないことを増やして、書いても有効にならないようにする仕組み。

権限設定のできるロールを複数作るなら権限/継承は必要。

%%権限/継承は「許可」を継承するもの。「拒否」を継承するものではない。→ [[:/権限設定に「拒否」は不要]]%%
*** %%下位ロールを作れるロールは却下%% [#cec3a0ae]
下位ロールを作れるロールは「自身の権限の一部を他人に与える」ため。%%それには誰が書いたかではなく「権限が書かれたときに使われたロール」が必要(ひとりが複数のロールを持てるので)。%% %%それが最新版の更新者なら、「他人が更新してはいけないページ」を作ってしまうことになる。%% %%また、''複数の管理者が同じ権限領域を編集することには対応できない''ので、Wikiに合わない。%%
ページ/属性はWikiTextで自由に書けるもの。書くときに「何を書けるか」を制限しなければならない。あるいは参照時に権限ごとに「誰が与えた権限か」を調べられなければならない。

%%→ ロールを作るときはどんな権限でも与えられる。ページ/属性の書き換えはWikiTextで行なうため何を書けるか制限できない。つまりロールを作れるのはスペースを自由にできる管理者だけ。%%
%%ロール名付きの権限を作れば似たことができる。ただしそれができるのは元々の管理者だけ。下位管理者にはできないので、下位管理者が自身の権限を、下位の下位に分け与えるのはできない。%%

%%→ 権限の判定も属性/継承も参照時のこと。権限領域に何を書いても、継承している権限だけを参照時に有効化すればいい。%%
→ 書けるのは「禁止」だけ。継承した権限を減らすことのみ可能。
%%ただ、権限領域を変更できるのは最上位の管理者だけ。WikiTextで何でも書けるので、最上位の管理者の権限を自身の権限にコピペできてしまう。権限/継承の仕組みのため、最上位の管理者は全管理者の中で最下位のページになるので、下位ページに強力な錠をかけることはできても、下位ページにある権限を上位ページにコピペするのは防げない。%%
%%下位管理者が下位の下位を作るには「自身の権限を誰かに分け与える」ができないと。%%