Как мне зарегистрироваться без логина? - PullRequest
2 голосов
/ 02 июня 2011

В моем приложении есть пользователь-администратор, и только администратор может создавать и активировать пользователей в этом приложении.

Когда я создаю пользователя, devise сделал автоматический вход в систему для этого нового пользователя.Как я могу создать пользователя без автоматического входа?

Ответы [ 3 ]

2 голосов
/ 05 июня 2011

Вы должны переопределить Контроллер регистрации (см. Учебники, такие как this )

Затем, глядя на оригинальный код (можно найти здесь ), вам нужно отредактировать create деталь.

Оригинал :

  # POST /resource
  def create
    build_resource

    if resource.save
      if resource.active_for_authentication?
        set_flash_message :notice, :signed_up if is_navigational_format?
        sign_in(resource_name, resource)
        respond_with resource, :location => redirect_location(resource_name, resource)
      else
        set_flash_message :notice, :inactive_signed_up, :reason => resource.inactive_message.to_s if is_navigational_format?
        expire_session_data_after_sign_in!
        respond_with resource, :location => after_inactive_sign_up_path_for(resource)
      end
    else
      clean_up_passwords(resource)
      respond_with_navigational(resource) { render_with_scope :new }
    end
  end

То, что вы ищете, это удаляя эту строку sign_in(resource_name, resource)

Надеюсь, я правильно понял вашу проблему.

0 голосов
/ 06 июня 2011

Предполагая, что User - ваша модель, добавьте логическое поле с именем is_active в таблицу users. Затем используйте метод active? в модели User:

class User < ActiveRecord::Base

  #this method will be used by devise to determine if the user is "active"
  def active? 
    #Allow user to log in if the user is confirmed AND if we are allowing 
    #the user to login
    super and (not self.confirmed_at.nil?) and self.is_active?
  end
end

Чтобы отключить вход пользователя в систему, установите для поля is_active значение false в фильтре before_create в модели User. Или установите значение по умолчанию false в миграции.

Установите is_active на true, чтобы позволить пользователю войти в систему.

0 голосов
/ 02 июня 2011

Я не совсем уверен, чего вы хотите достичь:

  1. Просто создайте пользовательский экземпляр, который затем сможет войти в систему

  2. Создайте нового пользователя и сообщите ему, что его учетная запись была создана (то есть "пригласите его")

В первом случае просто создайте экземпляр User с соответствующей информацией (проверьте, какие поля необходимо заполнить в консоли: они зависят от вашей конфигурации и используемых вами «стратегий»: подтверждаемые, блокируемые и т. Д. )

Во втором случае вы, вероятно, захотите проверить что-то вроде этого: https://github.com/scambra/devise_invitable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...