2013-04-17 106 views
1

我有一个支架财务与我刚刚意识到通过进入/财务/ 1 /编辑如何只允许管理员(或某个用户​​)在Rails中编辑页面?

我已经安装activ_admin的宝石,它可以被任何登录的用户进行编辑,但我不认为这是我需要的。如何确保除管理员之外(或可能是一些用户)没有人可以编辑财务资源类型 - 我

编辑 - 我发现https://github.com/EppO/rolify,这是最好的选择,或者我仍然可以做更好的事情,因为它可能是矫枉过正?

编辑1 - 我经历了这个https://github.com/EppO/rolify/wiki/Tutorial,并指定角色“admin”到user = User.find(1),在控制台中的所有内容都可以正常使用,它显示TRUE对于用户1而言为其他用户为假。现在我无法弄清楚该怎么办?尽管我已经在finance.rb模型中添加了“resourcify”,但仍然可以看到所有用户都可以编辑该页面。任何帮助?

+0

没有任何提供的解决方案的回答你的问题? – zeantsoi

+0

@zeantsoi - 在问题中添加了一些更多信息。我正在尝试cancan + rolify方法,虽然仍然卡住 – iCyborg

+0

您是否已经按照https://github.com/ryanb/cancan建议的方式将load_and_authorize_resource放入您的财务控制器中 – Abram

回答

2

那么,我个人使用rolify为我的项目,并喜欢它..但说实话,这是超级简单的实现只需添加一列“管理”到您的用户模型,并默认为false。当你希望用户成为管理员时,将属性更新为true,然后要求User.admin == true以访问财务编辑操作...您可以通过从控制器重定向非管理员用户(在如果您使用的设计是面向auth检查财政编辑操作)

顺便说出来Devise before_filter authenticate_admin?

+0

是的,我正在使用设计,我看到https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-role,这是很好,所以我应该使用,或应与rolify ?也不能只使用“如果uid == 1”或控制器中的类似代码? – iCyborg

+0

是的,你可以这样做..是的,如果你只是有这个简单的情况下,没有其他需要在您的网站的角色,我只会去与设计维基链接方法:) – Abram

+0

嗨,我通过这个https://github.com/EppO/rolify/wiki/Tutorial,并将用户名“admin”分配给user = User.find(1),在控制台中的所有内容都可以正常运行,它对用户1显示TRUE,对其他用户显示为false 。现在我无法弄清楚该怎么办?尽管我已经在finance.rb模型中添加了“resourcify”,但仍然可以看到所有用户都可以编辑该页面。任何帮助?谢谢 – iCyborg

2

如果您希望添加明智的用户授权而无需滚动您自己的解决方案,请务必查看CanCan。 的作者Ryan Bates也很有帮助。

+0

嗨,我通过了https://github.com/EppO/ rolify/wiki /教程安装了cancan + rolify,并将角色“admin”分配给user = User.find(1),控制台中的所有内容都可以正常运行,它对用户显示为TRUE 1,其他用户为false。现在我无法弄清楚该怎么办?尽管我已经在finance.rb模型中添加了“resourcify”,但仍然可以看到所有用户都可以编辑该页面。任何帮助?谢谢 – iCyborg

+0

请用一些代码更新你的问题。没有看到你正在使用的是什么,很难诊断发生了什么。 – zeantsoi

3

我不知道你的模型如何建立,但可以说你的User模型有一个管理员列,你可以做到以下几点:

FinancesController < ApplicationController 
    before_filter :must_be_admin, only: :edit 

    def edit 
    ... 
    end 

    private 

    def must_be_admin 
    unless current_user && current_user.admin? 
     redirect_to root_path, notice: "Some message" 
    end 
    end 
end 

您可以添加需要的过滤器之前的任何行动,例如before_filter :must_be_admin, only: [:edit, :destroy]

+0

嗨,我经历了这个https://github.com/EppO/rolify/wiki/Tutorial,并分配角色“管理员”到user = User.find(1),一切都进展顺利“ability.can?:管理,:all“在控制台中,它对用户1显示TRUE,对其他用户显示为false。现在我无法弄清楚该怎么办?尽管我已经在finance.rb模型中添加了“resourcify”,但仍然可以看到所有用户都可以编辑该页面。任何帮助?谢谢 – iCyborg

相关问题