Создать нового пользователя с новым openid логином authlogic

Я реализовал authlogic на сайте rails и пытаюсь заставить openid работать правильно. Пока что вы можете войти в систему просто отлично, если у вас есть существующая учетная запись, но не так много, если вы этого не сделаете. Я хотел бы иметь возможность автоматически создавать новую учетную запись, если identity_url еще не в базе данных.

Проблема в том, что мне также нужно хранить дополнительную информацию. если пользователь входит в систему впервые с помощью openid, я хотел бы попросить его ввести основную информацию (имя, адрес электронной почты), ДО создания учетной записи.

Я играл с несколькими методами, но, похоже, ничего не работает.

2 ответа

Возможно, попробуйте поместить дополнительную информацию в временную таблицу какого-либо типа и отследить сеанс, в котором находится пользователь. Как только они аутентифицируются, соедините ранее введенную информацию с информацией OpenID, чтобы создать реального пользователя.

acts_as_authentic do |c| 
  c.openid_required_fields = [:email,"http://axschema.org/contact/email"]
end

Позволит вам требовать электронную почту. Я не уверен, как требовать другие поля, но, возможно, проверьте эту страницу axschema.org. Пользователю не нужно заполнять что-либо, кроме URL-адреса своего поставщика OpenID.

Объединение входа в систему и регистрации может быть выполнено с помощью чего-то подобного (непроверенный метод создания из контроллера UserSessions, например, из учебного материала по authlogic)

def create
  if User.find_by_openid_provider(params[:user_session]).nil? # or something like that
    @user = User.new(params[:user_session])
    if @user.save
      redirect_to whatever_path
    else
      # handle error
    end
  else
    @user_session = UserSession.new(params[:user_session])
    if @user_session.save
      add_message 'Login successful!'
      redirect_to whatever_path
    else
      render :action => :new
    end
  end
end
Другие вопросы по тегам