Создать нового пользователя с новым 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