関連リンク
概要
ページの操作を行う際には毎回、まずユーザーグループによって操作可能かどうかのバリデーションをかける その後、新ユーザーグループの外部仕様に則って操作を続行する
ユーザーグループのバリデーション
ページの migrate, move, rename, duplicate, delete, create の際にその操作が可能かをチェックする
create
- 単体
- create 先の前後のページから create していいユーザーかをチェック
- 権限の候補には指定可能なユーザーグループのみを列挙する(only me はこの時点で候補に必ず存在する)
move/rename
- 単体
- create 単体と同じ?
- 再帰
- 権限の情報は保ったまま行う
- leaf node を操作する権限があるかどうか
duplicate
- 単体
- create 単体と同じ?
- 再帰
- 権限の情報は保ったまま行う
- leaf node を操作する権限があるかどうか
delete
- 単体
- 既存のチェック
- 再帰
- leaf node を操作する権限があるかどうか
ユーザーグループバリデーション後の各操作
create
- 単体
- Operator が create 先のパスでページを作成する権限があるか
- 正しい UserGroup が指定されているか
move/rename
- 単体
- 元々のページの id 以外の情報を新ページドキュメントにコピーして .create()
- その後、元々のページドキュメントを Empty ページにして .save()
- 再帰
- root の parent を変更
- その後、descendants のパスを変更
- その間 PageTree にくるくるなど表示するべきか?完了したら socket で通知して mutate とか
duplicate
- 単体
- move のコピー版?
- 再帰
- move のコピー版?
delete
- 単体
- leaf node なら削除
- not leaf node なら Empty ページ化する
- 再帰
- 既存
ユーザーグループv5
WIP