рекомендации по структуре и доступу пользователей

Итак, у меня есть acl9 на месте и работает, и структура моего приложения на данный момент:

Регионы (где есть) Локации (где есть продажи). Продажи не важны, в основном просто сообщения, которые будут отображаться в каждом месте.

У меня также есть пользователи, которые, интегрированные с acl9, могут быть ограничены и разрешены в зависимости от роли.

Что мне нужно сделать, так это создать компании и предоставить пользователям, созданным для данной компании, доступ только к регионам и местоположениям в этой компании. Затем мне понадобятся пользователи, которых может создать каждая компания, которые будут иметь доступ только к тому местоположению, к которому им предоставлен доступ.

Мой вопрос в том, что я не уверен, как динамически ограничивать созданного пользователя определенным разделом. Так сказать, интерфейс для админа. Я могу представить себе несколько подходов, но ищу совета по лучшему.


person Kevin Compton    schedule 19.10.2009    source источник


Ответы (1)


Вы можете переопределить параметр has_role? метод для пользователя.

class User < ActiveRecord::Base
    def has_role?(role_name, obj=nil)
        # Your code
    end
end

Если тип объекта «Регион» или «Местоположение», вы проверяете компанию пользователя и разрешаете доступ, если регион подходит. В противном случае вы называете «супер». И позвольте ACL9 получить значение по умолчанию.

Это даст вам что-то вроде этого:

class User < ActiveRecord::Base
    def has_role?(role_name, obj=nil)
        super unless obj.class == Region or obj.class == Location
        return company.region == obj if obj.class == Region
        return company.location == obj if obj.class == Location
    end
end

После этого только одно предложение по реализации. Их почти бесконечное множество. А я и не говорил, что он лучший.

person Damien MATHIEU    schedule 19.10.2009
comment
Хорошо, у меня есть один вопрос, obj.class ссылается на что именно? Нужно ли мне иметь класс для каждой роли, определенной в моей модели? - person Kevin Compton; 26.10.2009
comment
Плохо ли иметь два типа пользовательских моделей? Кажется, что управление ВСЕМИ компаниями с администратором должно быть построено иначе, чем другие уровни пользователей... - person Kevin Compton; 26.10.2009