1

スーパーユーザー/管理者のみが新しいユーザーを追加できるように、非管理者のサインアップをブロックしたい. どうすればそれを達成できますか?

ここに記載されている方法に従ってみました:ユーザーがサインインしているが結果が得られない場合を除き、「new_user_registration_path」へのアクセスを防止するフィルターの前に考案します。

私はdevise、cancan、およびrolifyをインストールしました。さらに、誰もこの/users/sign_upページにアクセスしてサインインしてほしくありません。新しいユーザーをサインアップできるのは管理者のみである必要があります。

デバイスのインストールにより、ユーザーコントローラーはありません。必要に応じて作成方法を教えてください。

routes.rb

FifthApp::Application.routes.draw do
  devise_for :users
  resources :qanotes
end

user.rb

class User < ActiveRecord::Base

  #resourcify :resources
  rolify

  has_many :qanotes

  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

end

サインアップ ページに移動しようとすると (ログイン後のみ)、ルート、つまり localhost:3000 にリダイレクトされ続けます。

4

2 に答える 2

1

登録コントローラーをカスタマイズできます(例: )。認証と管理者のみを次のようにregistrations_controller.rb追加する必要があります。before_filterbefore_filterregistrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
 before_filter :authenticate_user!
 before_filter :is_administratior?, only: [:new, :create]

 def new
   super
 end

 def create
   super
 end

 private

  def is_administratior?
  if user_signed_in? # if user signed
   if current_user.administrator? # if adminstrator return true
     true
   else
     redirect_to some_path
   end
  else
    redirect_to login_path
  end
end

Devise/cancanリダイレクト管理者に関する私の回答はこちらをご覧ください

于 2013-07-23T17:44:50.723 に答える
1

ユーザー モデルのデフォルト デバイス モジュールから :regesterable キーワードを削除します。新しいユーザーを作成するための独自のフォームを追加する必要があるため、新しいユーザーを追加できます。それが役立つことを願っています。ありがとう

于 2013-07-23T14:30:02.190 に答える