• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:[[:t/権限]] [[:t/継承]] [[:t/ロール]] [[☆]]

ロールを作れるロールでは、ロール(権限セット)に名前を付けて新しいロールにできる。権限/継承のルールによって、自分が使える権限のサブセットを新しいロールに与えることができる。

----

#contents

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

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

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

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

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

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

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

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



***上下関係 [#s8adc151]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

→ [[:i/下位の管理者の作り方]]


*** %%分割すればいいだけ?%% [#m875299f]
 /スペース名1/利用者/権限 の 変更
 /スペース名1/利用者グループ1/権限 の 変更

%%…などの権限名を作っておいて、上位の管理者はどちらも鍵として持っていて、下位の管理者は1つしか持たない。といった設定をすればロールを作れるロールは不要?%%
→…にはならない。利用者の権限を書き換えられるなら、そこには上位の権限をいくらでも書けることになるので、機能しない。


*** 権限/継承は制限するためのルール [#u6e27912]
権限/継承は制限のルール。下位ロールのできないことを増やす仕組み。
書いても有効にならないようにする仕組み。

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



*** 「ロールを作れるロール」は却下 [#cec3a0ae]
ロールを作るロールには「誰が書いたのか」が必要。それが最新版の更新者なら、「他人が更新してはいけないページ」を作ってしまうことになる。Wikiに合わない。
書くときに制限するか、参照時に権限ごとに「誰が与えた権限か」を調べられなければならない。書くときの制限はWikiに合わないので、何かするなら参照時。でもその方法が無い。