Ich habe diese zuvor gepostet, aber habe keine Lösung gefunden, die für mich funktioniert.Rails - Wie Devise 'aktuelles Passwort' für omniauth Benutzer zu überschreiben
Ich habe versucht, nach der Devise Wiki und versucht haben, die von anderen vorgeschlagen Code an den Controller hinzuzufügen: Editing Users With Devise and Omniauth [Rails]update_without_password does't update user info https://github.com/plataformatec/devise/issues/1620
Problem ist, dass sich ein Benutzer auf über unseren Twitter Omniauth nicht in der Lage ist, zu aktualisieren Ihre Kontoinformationen, da Devise sie auffordert, ihr "aktuelles Passwort" einzugeben, um Änderungen vorzunehmen. Es ist keine Option, dem Benutzer das zufällig generierte Passwort per E-Mail zu senden.
Was ich tun möchte -
Ich möchte die Devise Controllers ‚update‘ Methode außer Kraft zu setzen, so dass es einem Benutzer Twitter erkennt Bearbeitung ihrer Daten zum ersten Mal und ermöglicht es ihnen, die ‚aktuelle Passwort‘ Validierung überspringen . Wir weisen Twitter-Nutzern eine Standard-E-Mail-Adresse zu, die die gesuchte Variable sein kann. Sie können das nicht übermitteln, ohne es zu ändern.
das Problem -
Ich habe in der Registration-Controller unterschiedliche Codeblöcke versucht, aber ich bin immer noch immer wieder auf die von mit einem Fehler umgeleitet, dass das aktuelle Passwort nicht korrekt ist. Ich gehe nicht einmal in eine binding.pry, also sieht es so aus, als ob die Methode nicht einmal gelesen wird?
Ich habe versucht, die Formulareingabe für 'aktuelles Passwort' vollständig zu entfernen und es mit einem Standardwert verborgen zu übergeben.
danke für Ihre Hilfe!
Routen
Rails.application.routes.draw do
ActiveAdmin.routes(self)
# devise_for :users,
devise_for :users, controllers: { registrations: 'registrations' },
controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }
scope '(:locale)', locale: /en|ca|es/ do
resources :politicians
resources :posts do
resources :comments, only:[:new, :create, :edit, :update, :destroy]
member do
put "like", to: "posts#upvote"
put "dislike", to: "posts#downvote"
end
end
get "/about" => "pages#about_us"
root to: 'pages#home'
end
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
Registrations_Controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
protected
def update_resource(resource, params)
binding.pry
if current_user.email.include?("email.com")
params.delete("current_password")
resource.update_without_password(params)
else
resource.update_with_password(params)
end
end
end
Mögliches Duplikat (https://stackoverflow.com/questions/13436232/editing-users-with-devise-and-omniauth) – Gerry