2011-03-14 59 views
4

我使用devise作爲我的身份驗證解決方案,現在我正在考慮授權。在我的項目中,我(管理員)是唯一有權爲其他人創建帳戶的人。Devise/Rails - 如何只允許管理員爲他人創建賬戶?

我不知道是否有辦法做到這一點,而不需要太多破解。事實上,如果Devise已經登錄,Devise不允許用戶訪問註冊頁面。

感謝您的建議!

回答

3

您可以嘗試rails_admin gem與Devise一起處理任何管理員特定的任務。您需要添加更多代碼才能進行設置,但至少可以避免在改變與Devise的交互方面對解決方案進行攻擊。

+0

它看起來不錯!我現在試試看,謝謝! – benoitr 2011-03-14 19:22:00

+1

我通過devise_for:users,:skip =>:registrations跳過了路線。只是我必須設置一些授權到rails_admin,一切都完成了!非常感謝 – benoitr 2011-03-14 21:06:22

+0

@benoitr - 沒問題,很高興我可以幫忙! – McStretch 2011-03-14 22:17:29

9

設置:skip => :registrations也殺死了用戶編輯其用戶信息的能力。如果這不是你可以創建一個(最小)自定義註冊控制器後,你只是刪除new_user_registration_path,同時保留edit_user_registration_path

# app/controllers/registrations_controller.rb 
class RegistrationsController < Devise::RegistrationsController 

def new 
    # If you're not using CanCan, raise some other exception, or redirect as you please 
    raise CanCan::AccessDenied 
    end 

end 

# routes.rb 
devise_for :users, :controllers => { :registrations => "registrations" } 

一旦你這樣做,你還需要移動目錄views/devise/registrations只是views/registrations

1

它實際上看起來像在Devise的後續版本中,您可以從模型中刪除「可註冊」聲明,它將爲您處理此問題。

相關問題