【问题标题】:advice for structure and user access结构和用户访问的建议
【发布时间】:2009-10-19 23:52:59
【问题描述】:

好的,所以我已经安装了 acl9 并且可以正常运行,以及到目前为止我的应用程序结构:

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

我也有Users,集成acl9可以根据角色进行限制和允许。

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

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

【问题讨论】:

    标签: ruby-on-rails authorization acl


    【解决方案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
    

    这只是一个实施建议。它们的数量几乎是无限的。我从来没有说过它是最好的。

    【讨论】:

    • 好的,我有一个问题,obj.class 到底引用了什么?我是否需要为模型中定义的每个角色都有一个类?
    • 拥有两种类型的“用户”模型是不是一个坏主意?似乎管理所有具有管理员的公司应该与其他用户级别不同......
    猜你喜欢
    • 2013-06-12
    • 1970-01-01
    • 2019-03-17
    • 2019-03-25
    • 2011-11-06
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多