4

サインアップを Devise 管理者に制限しようとしています。できれば今のところCanCanの使用は避けたいです。ここのオプション #1 で説明されているように、別の Devise 管理モデルを作成しました: https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role

次に、 https ://github.com/plataformatec/devise/wiki/How-To:-Manage-users-through-a-CRUD-interface で説明されているように、ユーザー用の CRUD インターフェイスをセットアップしました。

ユーザーコントローラーなどで新規登録を制限したいのですbefore_filter :authenticate_admin!が、なぜか新規登録が制限されていません。

私の routes.rb は次のようになります。

devise_for :admins
devise_for :users, :path_prefix => 'd'
resources :admins
resources :users, :controller => "users"

before_filter :authenticate_admin!新規サインアップを制限しない理由はありますか?

4

3 に答える 3

9

before_filter :authenticate_admin!admin と user はアプリの 2 つの異なるモデルであるため、Users コントローラーでは使用できません。

私があなたの言いたいことを完全に理解しているかどうかはわかりませんが、ユーザー (または管理者) の新規登録を受け入れたくない場合は、次のようにすることができます:

# in your User(Admin) model
devise :registerable # remove :registerable

お役に立てれば!

于 2012-04-05T00:38:54.443 に答える
2

似たようなものを探していました。新規登録を完全に無効にします。私はこれをどこかのメーリングリストで掘り下げました。それは私の問題を解決しましたが、あなたにとってはまともな出発点かもしれません:

class RegistrationsController < Devise::RegistrationsController 
  def new
    flash[:failure] = t('registrations.registrations_disabled')
    redirect_to root_path
  end
end

おそらく似たようなものですが、 current_user が管理者であるかどうかを確認するチェックを追加し、それに基づいてリダイレクトします...

于 2012-04-05T00:45:12.783 に答える
2

しばらく考えて、最終的にこれにたどり着きました。

devise によって作成されたすべてのモデルにヘルパー関数があります

class UsersController < Devise::RegistrationsController

  before_filter :authenticate_admin!

  def new
    if admin_signed_in?
      super
    else
      redirect_to admin_session_path
    end
   end

お役に立てれば。それは魅力のように機能します:)

于 2015-06-01T14:24:34.623 に答える