RIGHT:[[:t/公開範囲]] [[:t/権限]]

埋め込みなどでも権限を継承する必要がある。
ページ要素が非公開ページや、非公開な属性領域を読み込んだとき、出力先も非公開でなければならない。

*** 処理方法 [#rc0f20b0]
読み込んだ情報に非公開情報が混ざったら…
- 出力先によって非公開情報を除く
- 処理中の情報をすべて非公開とする
非公開情報を取り除くと、意味を成さなくなる場合。

*** 出力先を調べる [#l7f1ff9d]
出力先に公開範囲を尋ねられないと。
契約プログラミングのように。非公開な領域にのみ非公開情報を与える。
でも通常のプログラミングでは、戻り値がどう使われるかは気にしないはず。特別な仕組みが要る。

戻り値を受けた側で非公開情報を除くのが一般的。これなら使い道を考慮して、どう除くかを変えられる。

公開範囲を持っているのはページ。情報をページ化するところで考慮・除去すべき。

情報をページ化するところで情報を受ける側というと…ページしかない。ページがページ要素を呼んだ後で、戻り値に含まれる非公開情報を除去、あるいは戻り値ごと破棄。

ということは、ページ要素が返す情報には情報元ページの公開範囲を付けないといけない。ひとつの器に公開範囲と、任意個の情報を入れて、戻り値とする??それをいくつでもまとめて同じ型の器に入れて入れ子にできれば十分?
ということは、ページ要素が返す情報には情報元ページの公開範囲を付けないといけない。ひとつの器に公開範囲と、任意個の情報を入れて、戻り値とする?それをいくつでもまとめて同じ型の器に入れて入れ子にできれば十分?

器の中の情報は不可分。器の中はブラックボックスとして扱わなければならない。この器が処理単位。

器を作るのはページ要素。公開範囲を調べるのもページ要素。
ページ要素が操作している利用者を調べて権限判定をする。それをどう生かすかもページ要素次第。

*** 公開範囲が決まってから読み込まれる [#cdd08156]
出力先によって非公開情報を読み込んでいいかどうかが決まる。非公開情報を読み込んでから判断するのは順序が逆で誤り。権限判定をするなら読み込むとき。
非公開情報は伝播せず、そもそも扱われない。