2017-06-01 4 views
1

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 
+0

Mögliches Duplikat (https://stackoverflow.com/questions/13436232/editing-users-with-devise-and-omniauth) – Gerry

Antwort

0

Sie werden in Ihrer Registrierung des Controllers ein Verfahren ähnlich wie diese erstellen möchten:

def update_resource(resource, params) 
    resource.update_without_password(params) 
end 

Devise bietet einen sehr schönen, ausführlichen Wiki-Artikel, mit dem Benutzer ihre Kontoinformationen aktualisieren können, ohne ihr Passwort here einzugeben.

+1

Hallo thisischuck, Vielen Dank für Ihre Antwort [Benutzer Mit Devise und Omniauth Bearbeiten]. Ich habe die Schritte verfolgt, aber leider bin ich zurück zum Formular mit einer Fehlermeldung "Wir brauchen Ihr aktuelles Passwort, um Ihre Änderungen zu bestätigen". Nicht sicher, was mir fehlt – dan101

+0

Stellen Sie sicher, dass Sie Ihren Server neu starten und Ihre Parameter so einstellen, dass es nicht nach dem Passwortbestätigungsfeld sucht. – thisischuck

Verwandte Themen