Код 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
- Сначала организация, потом роль, потом условия на объект.
- Всё, что явно не разрешено, запрещено.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.