Создать нового пользователя с новым openid логином authlogic - PullRequest
1 голос
/ 25 июня 2009

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

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

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

Заранее спасибо за любой вклад!

Ответы [ 2 ]

0 голосов
/ 18 июля 2009
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
0 голосов
/ 28 июня 2009

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

...