「できること」を表す権限と、「させない」を表す拒否(ブロックとか)と。それと「拒否できる」拒否権と。
何かをするには権限が必要。権限のほかに「ブロックしていないこと」なども関わる。できない/できるけどやらない/できるしやるの3パターン。これらがどの処理にもつきまとう。
「できるけどやらない」は「自分でできなくする」でもいい。そうすれば、できる/できないの判定だけで済む。
権限は主に利用者に与える機能/サービスを減らすもの。「権限」が無いことがデフォルトで、権限があると提供する機能/サービスが増える。拒否は主に利用者が自分に与えられる機能/サービスを減らすこと。「拒否」も無いことがデフォルトだけど、拒否するごとに提供される機能/サービスが減る。
権限も拒否も機能/サービスを減らすもの。
拒否権 †
拒否する権限。例えば「ページの更新情報をブロックすること」にも権限が必要。
拒否できるものごとに拒否権が必要では?
「与えられている権限を自ら捨てる」というのが拒否の実装になるのかも。「権限を捨てる権限」が拒否権。
→ 「できる」と「できるけどやらない」は区別するので、拒否権は却下。通知をするプラグインが用意する設定方法で通知を拒否するように変更。
権限は必ず拒否可能に †
与える側と受け入れる側を考慮。
権限は継承元にあるものだけ利用可能にするか、権限領域を変更できる権限でのみ変更可能にする必要がある。
拒否…つまり禁止事項を継承するようにすれば、自身の権限領域を書き換え可能になるし、継承元にある権限だけを使うことになるし、いろいろと解決できる。
拒否は受け側(継承する側)でするもの。
どこに記録するか †
権限の場合、鍵は利用者に。対象がどのページであっても同じ鍵。錠のほうは対象ページに。対象ページごとに持っている錠が異なる。
†:Done/ページの拒否
仕組みではなく方針/考え方とする †
→ 拒否は仕組みではなく機能を考えるための方針としても使える。権限をヒントにして拒否機能を考える。更新日時の更新拒否→「ちょっとした更新」など。
実装するにしても、権限を使うときに拒否されているか考慮。それまでは許可も拒否も同一視。属性のひとつか、プラグインの設定項目として扱うだけ。
アカウントを凍結するのに使える †
すべての権限を拒否すれば、継承によって権限が与えられていても行使不可能にできる。
権限と設定を区別する †
権限で拒否するとなると、それだけで管理者権限が要る。通知の拒否などは権限というより個人的な設定のはず。両方必要か。
拒否よりも「権限を与えない」だけでいい。
利用者をロール別にしておいて、権限を減らされる利用者を別のロールにするといった普通の方法でいい。
自分から見える機能を減らしたい、UIを簡略化したいなら、自分のダッシュボードやサイトヘッダーを自身で書き換えればいい。自分用テンプレートの編集ができればいい。
実装は錠と鍵 †
→ :i/継承にも錠と鍵を[?]
自動リンクを拒否 †
自動リンクされないページを作るときに利用する。
利用者もページなので、利用者ページへの自動リンクも、他のページへの自動リンクも拒否可能。