Devise/Facebookログインでのパスワードがivalidとなる
DeviseのFacebookログインを利用しています。
Userの登録変更(deviseのregistrations/edit)をするのに、
Deviseのデフォルトの設定通りですと、既存パスワードを入力する必要がるかと思いますが
Facebookに登録しているパスワードを入力すると以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
1 error prohibited this user from being saved: Current password is invalid
該当のソースコード
ruby
1###User.rb 2 3# == Schema Information 4# 5# Table name: users 6# 7# id :bigint(8) not null, primary key 8# uid :string 9# provider :string 10# name :string 11# first_name :string 12# last_name :string 13# image :string 14# nationality :string 15# tel :string 16# email :string default(""), not null 17# encrypted_password :string default(""), not null 18# reset_password_token :string 19# reset_password_sent_at :datetime 20# remember_created_at :datetime 21# sign_in_count :integer default(0), not null 22# current_sign_in_at :datetime 23# last_sign_in_at :datetime 24# current_sign_in_ip :inet 25# last_sign_in_ip :inet 26# failed_attempts :integer default(0), not null 27# unlock_token :string 28# locked_at :datetime 29# created_at :datetime not null 30# updated_at :datetime not null 31# 32 33class User < ApplicationRecord 34 35 #### :confirmable, 36 devise :database_authenticatable, :registerable, 37 :recoverable, :rememberable, :validatable, 38 :lockable, :timeoutable, :trackable, :omniauthable 39 40 has_many :bid_prices, dependent: :destroy 41 has_many :bidded_engines, through: :bid_prices, source: :engine 42 43 before_validation do 44 if !name && first_name && last_name 45 self.name = "#{first_name} #{last_name}" 46 end 47 end 48 49 def self.find_for_oauth(auth) 50 user = User.where(uid: auth.uid, provider: auth.provider).first 51 52 unless user 53 user = User.create( 54 uid: auth.uid, 55 provider: auth.provider, 56 email: auth.info.email, 57 # name: auth.info.name, 58 first_name: auth.extra.raw_info.first_name, 59 last_name: auth.extra.raw_info.last_name, 60 password: Devise.friendly_token[0, 20], 61 image: auth.info.image 62 ) 63 end 64 65 user 66 67 end 68end 69 70 71
試したこと
- Facebookのパスワードに間違いはありません(何度も試した為)
- Facebookログインを使わずにログインしたUserの場合、問題なく設定済パスワードを入力するとUser情報を変更できる為、変更機能(deviseのregistrations/edit)は問題なく機能しています。
あなたの回答
tips
プレビュー