Код Middle Аутентификация и права спрашивают часто обновлено

Проверка прав: роли и владение объектом

Условие

Напишите can(user, action, obj). Пользователь {"id", "org", "role"}, объект {"owner", "org", "status"}. Правила: роль admin может всё в своей организации; любой пользователь не имеет доступа к объектам чужой организации (результат "not_found", чтобы не раскрывать существование); manager может read и update любые объекты своей организации; member может read объекты своей организации и update только свои объекты со статусом draft; delete разрешён только admin. Верните "allow", "deny" или "not_found".

Примеры

can({"id":1,"org":"a","role":"member"}, "read", {"owner":2,"org":"a","status":"sent"}) // "allow"
can({"id":1,"org":"a","role":"admin"}, "delete", {"owner":2,"org":"b","status":"draft"}) // "not_found"
can({"id":1,"org":"a","role":"member"}, "update", {"owner":1,"org":"a","status":"draft"}) // "allow"

Как подойти

Подсказки: 2
  1. Сначала организация, потом роль, потом условия на объект.
  2. Всё, что явно не разрешено, запрещено.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме