wizzard: (Default)
wizzard ([personal profile] wizzard) wrote2009-10-19 03:05 pm

мысли вслух про permissions

ну в общем так:

обьект вида {value: (“data”, [(“childrenName”:{object})]), permissions: [(”identity”,”kind”,”A/D”)], owner: “identity”}

permission kinds: read value, write value, read permissions, write permissions, read owner, write owner

identities: (username), (user->groupname), (owner), (all)

процесс проверки пермишнов:
спускаемся от корня, накапливая dictionary (identity->permission->allow/deny), при этом allow/deny не имеют особого приоритета друг над другом, кто ниже - тот и выиграл. наличие deny равнозначно отсутствию allow, если хоть в одной группе, к которым принадлежит юзер, есть allow, то разрешение выдается.

при изменении value - owner не меняется, при создании owner наследуется от корня. меняется owner явным образом.

да, можно удалять подобьект обьекта, которым ты владеешь, даже если ты не владеешь никакими правами на него. Но нельзя читать, изменять или изменять права :)

user->groupname символизирует то, что группы всегда создаются пользователями

UPD: наверное стоит поменять пермишны на "allow/deny/inherit" и разрешать если есть хоть один allow и нету ни одного deny, это более традиционно

[identity profile] 109.livejournal.com 2009-10-19 10:49 pm (UTC)(link)
> allow/deny не имеют особого приоритета друг над другом

deny традиционно имеет приоритет. то есть, если explicitly есть both deny and allow, allow is ignored.