CakePHP - Как я могу ограничить (C) операции RUD над данными владельцем этих данных? - PullRequest
1 голос
/ 17 ноября 2009

У меня есть модель, в которой все как-то связано с одним пользователем (например, Пользователь-> Клиент-> Профиль). Теперь пользователю должно быть разрешено (C) RUD только для его данных (только владелец профиля должен иметь успешный доступ к / profile / edit / [hisId]), поэтому почти в каждой операции с базой данных возникает условие типа "'User.id' = > $ this-> Session-> read ('Auth.User.id') "должен быть включен. Для этого необходимо, чтобы функции модели (такие как find) всегда соединяли «свой путь» с пользовательской таблицей (или сохраняли владельца данных в нескольких таблицах, что, по-видимому, не является хорошим способом сделать это).

Как это сделать правильно для различных моделей и действий (особенно без сравнения идентификаторов пользователей в каждом действии)? Может быть, в функциях обратного вызова модели, но сейчас я не вижу общего решения.

Похоже, это не надуманный сценарий, поэтому я могу упустить очень очевидное решение.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 17 ноября 2009

Я бы создал суперкласс, от которого наследуются все соответствующие модели; и используйте методы обратного вызова модели, такие как beforeFind, для проверки разрешений

http://book.cakephp.org/view/76/Callback-Methods

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...