2013-04-17 166 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

相關問題