Я использую acl9 поверх authlogic в одном из моих проектов. Мне нравится подход acl9, но я думаю, что пытаюсь сделать что-то, что не так просто (не сказать невозможно).
Из соображений удобства использования я хотел бы иметь встроенную панель администратора. Например, скажем, я получил аукцион ресурсов и аукцион / заявку с вложенными ресурсами. Когда обычный пользователь участвует в аукционах / 1 (1 = id), он должен видеть «обычный» материал (описание, цена ...), привилегированный пользователь на том же сайте должен иметь дополнительные ссылки для редактирования аукциона (= аукционы / 1 / редактировать). И вот тут начинается самое интересное.
Возможно, я не выглядел достаточно близко или не в тех местах, но я не мог найти способ определить, авторизован ли мой текущий пользователь для действия редактирования. Очевидно, я мог бы показать ссылку всем и позволить действию редактирования отклонить обычного пользователя, но это нереальный вариант. Что меня здесь беспокоит, так это то, что информация уже находится в системе (см. Блок access_control
ниже), и я не могу найти способ ее использовать. Это не СУХОЙ на многих уровнях.
access_control do
allow :privileged, :to => [:index, :show, :edit, :update]
allow anonymous, :to => [:new, :show, :create]
end
Становится еще хуже, если я хочу определить, какие права имеет пользователь на auctions/1/bids/2/edit
, потому что это совершенно другой контроллер.
Как я могу получить доступ к этой информации заранее и затем решить, следует ли вообще отображать ссылку для редактирования? Это просто невозможно (без изменения самого acl9) или я не выглядел достаточно жестко?
Существуют ли плагины авторизации, которые лучше соответствуют моим требованиям?