Подтвердить что ты не робот

Devise, OmniAuth & Facebook - Как разрешить пользователю редактировать пароль?

Я надеюсь, что у кого-то есть хорошее решение для этой проблемы. Мы разрешаем нашим пользователям регистрироваться с помощью facebook (по вкусу приложения), и в то же время они входят в нашу базу данных как пользователи на нашем сайте.

После успешной регистрации кажется, что Devise/OmniAuth создает случайный пароль (?). Как разрешить пользователям редактировать свой профиль, который (и должен) по умолчанию в Devise требует, чтобы они вводили свой текущий пароль?

4b9b3361

Ответ 1

У меня была такая же проблема, поэтому я надеюсь, что мое решение будет полезно.

Основываясь на деталях в вашем вопросе, я предполагаю, что вы следуете руководству OmniAuth в wiki-разработке: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

В следующем методе:

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
  data = access_token.extra.raw_info
  if user = User.where(:email => data.email).first
    user
  else # Create a user with a stub password. 
    User.create!(:email => data.email, :password => Devise.friendly_token[0,20]) 
  end
end

Я изменил логику в блоке else, потому что он сразу создал нового пользователя в базе данных и хэшировал для них пароль:

else # Create new user 
      user =User.new
      user
end

Вместо этого я просто сделал нового пользователя, чтобы после получения информации facebook я направлял их на страницу регистрации, где у меня есть информация, заполненная полями формы, где они могут редактировать и создавать пароль.

Вам просто нужно убедиться, что вы обновили свой

def self.new_with_session(params, session)

чтобы добавить всю соответствующую информацию в facebook, которую вы захватили для нового пользователя, и назначить ее новому пользовательскому объекту, чтобы все эти поля были заполнены их информацией на странице регистрации. Чтобы после того, как они закончили вводить свой пароль и добавляли или изменяли любую информацию, нажмите кнопку "Отправить", чтобы создать нового пользователя. Надеюсь, вы найдете это полезным.

Это была идея идей для вики-страницы в Devise и учебном пособии по railscast omniauth: http://railscasts.com/episodes/235-omniauth-part-1

Ответ 2

Имел подобную проблему, но в отношении обновления профиля пользователя без подтверждения пароля. Отправьте ссылку на нее - надеюсь, что это поможет:

fooobar.com/info/436097/...