четверг, 8 сентября 2011 г.

Re: best practice организации role\permissions в rails приложении

Вы используете определение can прямо в PostsController? У нас похоже
какие-то разные cancan'ы...

On Sep 8, 10:45 am, "Phil Pirozhkov (pirj)" <pirjs...@gmail.com>
wrote:
> Так а чем не понравилось штатное использование cancan?
> class PostsController
>
> before_filter :get_group
>
>   def index
>     can :index, Post do |post|
>       @current_user.groups.include? post.group
>     end
> ...
>   end
>
> private
>   def get_group
>     @group = Group.find_by_id(params[:group_id])
> ...
>
> before_filter такой вам всё равно пригодится
> по-моему - проще некуда
>
> On Sep 8, 3:45 am, Finist <finist....@gmail.com> wrote:
>
>
>
>
>
>
>
> > И это проблема, для решения которой приходится прибегать либо к
> > before_filter, что не всегда удобно, либо через переопределение
> > current_ability (Anton Dieterle спасибо большое за ссылку) передавать
> > объект родителя.
>
> > On Sep 8, 2:41 am, Finist <finist....@gmail.com> wrote:
>
> > > Простите, а что вы хотите увидить в контролере? Там совершенно нету
> > > ничего необычного, возьмите любой вложенный контроллер и запретите
> > > действие index, если какой-то параметр родительского объекта не
> > > соответствует требованиям. Дело в том что cancan не позволяет
> > > проверить родительский объект, если только его нельзя напрямую вызвать
> > > из проверяемого объекта.
>
> > > On Sep 8, 1:33 am, "Phil Pirozhkov (pirj)" <pirjs...@gmail.com> wrote:
>
> > > > Пришлите уже, наконец, свой злополучный контроллер, а то на словах не
> > > > понятно, что там не получается.
>
> > > > On Sep 7, 6:10 pm, Finist <finist....@gmail.com> wrote:
>
> > > > > before_filter проблему решает, правда если у меня 5 действий, и каждое
> > > > > требует различных прав на доступ, то придется написать по
> > > > > before_filter на каждое действие, что получится не очень красиво.
>
> > > > > On Sep 7, 3:56 pm, Anton Dieterle <anton...@gmail.com> wrote:
>
> > > > > > Попробуйте сделать в before_filter проверку на групповые права.
>
> > > > > > Или сделать поумнее, как тутhttps://github.com/ryanb/cancan/wiki/Authorization-for-Namespaced-Con...
> > > > > > Только вместо params[:controller] заиспользуйте params[:group]
>
> > > > > > 7 сентября 2011 г. 15:38 пользователь Finist <finist....@gmail.com> написал:
>
> > > > > > > Ага, он не плохо работает, тогда когда объект project определен, т.е.
> > > > > > > на действиях типа member (show, edit, update), но когда у вас нету
> > > > > > > объекта project, то и объекту group взятся неоткуда и следовательно
> > > > > > > это все, не работает.
>
> > > > > > > On Sep 7, 3:26 pm, Anton Dieterle <anton...@gmail.com> wrote:
> > > > > > >> В вики даже прям пример такой же
>
> > > > > > >>https://github.com/ryanb/cancan/wiki/Defining-Abilities
>
> > > > > > >> can :manage, Project, :group => { :id => user.group_ids }
>
> > > > > > >> 7 сентября 2011 г. 15:21 пользователь Finist <finist....@gmail.com> написал:
>
> > > > > > >> > Ну хорошо, напишу я правило для Post, но откуда я в этом правиле
> > > > > > >> > возьму пользователей группы? Т.е. каким образом передать родительский
> > > > > > >> > объект (group) в правило (post)?
>
> > > > > > >> > On Sep 7, 3:14 pm, "Timothy N. Tsvetkov" <timothy.tsvet...@gmail.com>
> > > > > > >> > wrote:
> > > > > > >> >> Не понимаю вопроса. Напишите правило, которое которое будет проверять
> > > > > > >> >> на :index, :show и тп для постов проверять что пользователь член
> > > > > > >> >> нужной группы. Не понимаю вопроса.
>
> > > > > > >> >> 2011/9/7 Finist <finist....@gmail.com>:
>
> > > > > > >> >> > Присоединюсь к вопросу, а конкретнее к проблемам cancan. Пытаюсь
> > > > > > >> >> > реализовать на нем следующую простую логику: Есть 2 ресурса(один
> > > > > > >> >> > вложен в другой):
> > > > > > >> >> > resources :groups do
> > > > > > >> >> >  resources :posts
> > > > > > >> >> > Мне нужно что бы просмотр группы был доступен всем пользователям, а
> > > > > > >> >> > просмотр списка постов (index действие) группы, только членам группы.
> > > > > > >> >> > Как это сделать!?
>
> > > > > > >> >> > load_and_authorize_resource :group
> > > > > > >> >> > load_and_authorize_resource :post, :through => :group
> > > > > > >> >> > не предлагать, это всего лишь проверяет доступность группы, и если она
> > > > > > >> >> > доступна (а она у нас должна быть доступна), то дает доступ к постам
> > > > > > >> >> > (что неверно для нас)
>
> > > > > > >> >> > On Sep 7, 11:07 am, Alexey Poimtsev <a...@alec-c4.com> wrote:
> > > > > > >> >> >>  не совсем понятна формулировка вопроса, что именно интересует? чемне
> > > > > > >> >> >> устраивает стандартный вариант, используемый в том же cancan?
>
> > > > > > >> >> >> On Sep 6, 3:41 pm, Makarov Oleg <gstan...@gmail.com> wrote:
>
> > > > > > >> >> >> > Здравствуйте. Поделитесь полезными
> > > > > > >> >> >> > ссылками на тему best practice  организации role\permissions в rails приложении
> > > > > > >> >> >> > или своим опытом. Вообще любая полезная информация на эту тему
> > > > > > >> >> >> > приветствуется. Спасибо.
>
> > > > > > >> >> > --
> > > > > > >> >> > --
> > > > > > >> >> > Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
> > > > > > >> >> > FAQ группы находится по адресу:http://ru.wikibooks.org/wiki/RubyFAQ
>
> > > > > > >> >> >  Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
> > > > > > >> >> > ror2ru@googlegroups.com
> > > > > > >> >> >  Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
> > > > > > >> >> >  Дополнительные варианты находятся на странице группыhttp://groups.google.com/group/ror2ru?hl=ru
>
> > > > > > >> > --
> > > > > > >> > --
> > > > > > >> > Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
> > > > > > >> > FAQ группы находится по адресу:http://ru.wikibooks.org/wiki/RubyFAQ
>
> > > > > > >> >  Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
> > > > > > >> > ror2ru@googlegroups.com
> > > > > > >> >  Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
> > > > > > >> >  Дополнительные варианты находятся на странице группыhttp://groups.google.com/group/ror2ru?hl=ru
>
> > > > > > > --
> > > > > > > --
> > > > > > > Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
> > > > > > > FAQ группы находится по адресу:http://ru.wikibooks.org/wiki/RubyFAQ
>
> > > > > > >  Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
> > > > > > > ror2ru@googlegroups.com
> > > > > > >  Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
> > > > > > >  Дополнительные варианты находятся на странице группыhttp://groups.google.com/group/ror2ru?hl=ru

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Комментариев нет:

Отправить комментарий