7

Railsアプリでユーザー認証を管理するためにdeviseを使用しています。Deviseはそのために本当に素晴らしいです。

ただし、アプリケーションには特別な要件があります。ユーザーをユーザーとして登録するには、ユーザーをホワイトリストに登録する必要があります。

したがって、許可された電子メールのリストを作成する管理者がいます。ユーザーは電子メールに登録し、電子メールがホワイトリストテーブルにある場合は登録されます。ただし、メールがホワイトリストに含まれていない場合は、「まだ招待されていません」などのメッセージを表示して登録を中止する必要があります。

あなたはそれがデバイスでどのように解決できるかについての考えを持っていますか?

前もって感謝します。

4

3 に答える 3

16

モデル検証を使用します。Userクラスにdeviseメソッドがあると思います

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable #etc

  before_validation :whitelisted

  def whitelisted
    unless celebrityemail.include? email
      errors.add :email, "#{email} is not on our invitation list"  
    end
  end 

end
于 2011-03-02T15:54:50.703 に答える
6

できることは、独自の登録コントローラーを作成し、次のようにデバイスを拡張することです。

class MyRegistrationController < Devise::RegistrationsController
  def create
    # do your checks
    super
  end
end

参照:https ://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb および:https ://github.com/plataformatec/devise/wiki/How-to:-Customize-ルートからユーザーへの登録ページ

幸運を!

于 2011-03-02T13:08:25.320 に答える
2

私は提案されたように独自のコントローラーを作成しました:

class Users::RegistrationsController < Devise::RegistrationsController
    def create
        email = params[:user][:email]
        if Admin::Whitelist.find_by_email(email) != nil
            super
        else
            build_resource

            set_flash_message :error, "You are not permitted to sign up yet. If you have already payed your registration fee, try again later."
            render_with_scope :new
        end
    end
end

に入れましたapp/users/registrations_controller.rbapp/views/users/registrations次に、デフォルトのビューが使用されなかったため、デバイス登録ビューをにコピーする必要がありました。

それは今働いています、あなたの助けに感謝します

于 2011-03-06T15:18:57.833 に答える