Send to your Kindle RIGHT:[[:t/権限]] *** 権限 [#o2b57b89] ページ/属性で実現。 継承も利用する。下位が豪華。 順不同パスも利用する。 ---- #contents *** 錠と鍵がある [#a0970c49] 錠と鍵がある。 錠はページ全てに。 鍵は利用者ページ(またはロールページ)に。 (利用者は錠も持つことになる) 錠はページ毎のものなので、ページに書けることまでは制限できない。また、「何を書けるか」も制限できない。 そのため、利用者の権限領域を変更できれば、そこにどんな権限でも与えられるということになる。 権限変更さえできれば管理者と同等ということ。 細かく制限を加えたいなら「しないで欲しい」というお願いで。運用の問題にするしかない。 権限は錠と鍵なので、この2つを新しく作れば、特定ページ(とその下位)だけを管理する新しい管理者を作れる。 *** 拒否(許可の否定) [#d9ee7d2b] 拒否は実装してもいい。 許可とは別のフィールドに。でなければ許可・拒否を両方継承できなくなるので。 許可と拒否では拒否のほうが強い。これによって継承しつつ下位ページから権限を奪える。 *** 下位の管理者に与える権限 [#w8ab8cba] 与えたものが持っている権限だけを他の利用者に与えられる…というのは不可。実装が難しい。 *** 錠はユースケースにもかける [#o380dc8e] 錠はページ以外にユースケースにもかけられる。 錠の名前はユースケースクラス内のコードで定義。どこに書くかもユースケースクラス内で定義。 Dumpならユースケースを表すページの権限領域で。Edit/Updateなら対象ページの権限領域(とユースケースページの権限領域も併用可能)。 実際の権限名はユースケースクラス名。「編集」ではなく編集を表すユースケースクラスのクラス名。 *** 権限領域は隠す [#meee0d41] 権限領域は隠しページにしておく。…に限らず属性領域全てをそうするべき。属性/継承を使って「属性」という語を含むページを隠しページにすればいい。 権限領域とは存在するページ/名前に、特定の語(例えば「/.ac」)を付けた名前を持っているページ。ページ型は「属性」(をMIMEコード風にしたもの)でなければならない。 *** 順不同パスのせいで属性名が重複する問題 [#ua9f3d95] 継承処理中、同階層で属性名が重複したとき、権限の場合はフラグ(boolean値)なので、and合成するかor合成するかになるけど、どちらでもなく無効化にすべき。権限については属性名重複時の合成方法は定義しなくていい。無効化するのは属性名が同階層で重複、かつ矛盾していた場合だけ。問題があるときに分かりやすくする。同階層で重複しても両方が同じ値ならいい。また、さらに下位で上書きされる場合も問題なし。 鍵が無効になると許可されなくなる。 錠が無効になると鍵が無くても許可される。自分で自分を締め出すような事故は無くなるけど、不用意に錠が外れてしまう。 値を設定せず、属性名があるかどうかだけで真理値を設定できるようにして、or合成にするのが分かりやすく操作しやすいかも知れない。継承ツリーのどこかで定義されていれば有効。 *** 権限を書くところ [#w46c9c97] 権限はページ型「属性」のページに書く。ページ名は対象ページの名前に例えば「/.ac」とページID(内部名とは別の、版を含まないID)を付けたもの。1つのページに属性領域は複数あって、いずれもページ名に /.ac を含む。/.ac が複数含まれるページ名は使わない。あっても影響しない。 /.ac というページには… - 対象ページの編集(錠)と - /.ac 自身の編集(錠)が設定されている。 *** かかっている錠はすべて外す [#za7bcdad] 1つのユースケースに関わる錠は全て外さなければ操作不可。 † [[:i/錠は全部はずすこと]] *** 同名ページの権限領域は別々 [#xa902a59] 同名ページでもページ毎に異なる権限領域がある。 RIGHT:[[:t/権限]] *** 権限 [#o2b57b89] ページ/属性で実現。 継承も利用する。下位が豪華。 順不同パスも利用する。 ---- #contents *** 錠と鍵がある [#a0970c49] 錠と鍵がある。 錠はページ全てに。 鍵は利用者ページ(またはロールページ)に。 (利用者は錠も持つことになる) 錠はページ毎のものなので、ページに書けることまでは制限できない。また、「何を書けるか」も制限できない。 そのため、利用者の権限領域を変更できれば、そこにどんな権限でも与えられるということになる。 権限変更さえできれば管理者と同等ということ。 細かく制限を加えたいなら「しないで欲しい」というお願いで。運用の問題にするしかない。 権限は錠と鍵なので、この2つを新しく作れば、特定ページ(とその下位)だけを管理する新しい管理者を作れる。 *** 拒否(許可の否定) [#d9ee7d2b] 拒否は実装してもいい。 許可とは別のフィールドに。でなければ許可・拒否を両方継承できなくなるので。 許可と拒否では拒否のほうが強い。これによって継承しつつ下位ページから権限を奪える。 *** 下位の管理者に与える権限 [#w8ab8cba] 与えたものが持っている権限だけを他の利用者に与えられる…というのは不可。実装が難しい。 *** 錠はユースケースにもかける [#o380dc8e] 錠はページ以外にユースケースにもかけられる。 錠の名前はユースケースクラス内のコードで定義。どこに書くかもユースケースクラス内で定義。 Dumpならユースケースを表すページの権限領域で。Edit/Updateなら対象ページの権限領域(とユースケースページの権限領域も併用可能)。 実際の権限名はユースケースクラス名。「編集」ではなく編集を表すユースケースクラスのクラス名。 *** 権限領域は隠す [#meee0d41] 権限領域は隠しページにしておく。…に限らず属性領域全てをそうするべき。属性/継承を使って「属性」という語を含むページを隠しページにすればいい。 権限領域とは存在するページ/名前に、特定の語(例えば「/.ac」)を付けた名前を持っているページ。ページ型は「属性」(をMIMEコード風にしたもの)でなければならない。 *** 順不同パスのせいで属性名が重複する問題 [#ua9f3d95] 継承処理中、同階層で属性名が重複したとき、権限の場合はフラグ(boolean値)なので、and合成するかor合成するかになるけど、どちらでもなく無効化にすべき。権限については属性名重複時の合成方法は定義しなくていい。無効化するのは属性名が同階層で重複、かつ矛盾していた場合だけ。問題があるときに分かりやすくする。同階層で重複しても両方が同じ値ならいい。また、さらに下位で上書きされる場合も問題なし。 鍵が無効になると許可されなくなる。 錠が無効になると鍵が無くても許可される。自分で自分を締め出すような事故は無くなるけど、不用意に錠が外れてしまう。 値を設定せず、属性名があるかどうかだけで真理値を設定できるようにして、or合成にするのが分かりやすく操作しやすいかも知れない。継承ツリーのどこかで定義されていれば有効。 *** 権限を書くところ [#w46c9c97] 権限はページ型「属性」のページに書く。ページ名は対象ページの名前に例えば「/.ac」とページID(内部名とは別の、版を含まないID)を付けたもの。1つのページに属性領域は複数あって、いずれもページ名に /.ac を含む。/.ac が複数含まれるページ名は使わない。あっても影響しない。 /.ac というページには… - 対象ページの編集(錠)と - /.ac 自身の編集(錠)が設定されている。 *** かかっている錠はすべて外す [#za7bcdad] 1つのユースケースに関わる錠は全て外さなければ操作不可。 † [[:i/錠は全部はずすこと]] *** 同名ページの権限領域は別々 [#xa902a59] 同名ページでもページ毎に異なる権限領域がある。