结构和用户访问的建议

时间:2009-10-19 15:37:11

标签: ruby-on-rails authorization acl

好的,所以我有acl9到位并正常运行,到目前为止我的应用程序结构:

区域(有)地点(有销售)。销售并不重要,基本上只是每个位置都会显示的帖子。

我也有用户,可以根据角色限制和允许与acl9集成。

我需要做的是创建公司并为给定公司创建用户,只允许访问该公司内的区域和位置。然后,我将需要每个公司都可以创建的用户,这些用户只能访问他们可以访问的位置。

我的问题是,我不确定如何动态地将创建的用户限制到某个部分。也就是说,管理员的界面。我可以想象一些方法,但寻找最佳方法的建议。

1 个答案:

答案 0 :(得分: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

之后只有一个实施建议。它们几乎无穷无尽。我从来没有说过这是最好的。