Ich benutze Version 0.7.7 des Sorcery-Authentifizierungs-Gems von NoamB auf meinem Rails 3.2 App
Ich suche nach einer Möglichkeit, wie ich eine Methode anschließen kann, die das Benutzerinfo-Mapping für eine bestimmte external login provider (e.g. facebook, twitter)
macht.
Ich möchte zum Beispiel das angegebene Gebietsschema in das Format ändern, das ich in meiner Datenbank verwende, oder ich möchte den Benutzeravatar von Twitter als Teil des Abgleichprozesses herunterladen.
Standardmäßig ist dies nur über die sorcery.rb
-Datei möglich:
Ich weiß, dass ich ein solches Verhalten mit Setter-Methoden in meinem Benutzermodell erreichen kann, aber ich möchte diese Dinge vom Modell getrennt halten und ich möchte sie für jeden Anbieter spezifisch definieren können.
Ist das möglich? / Was ist der beste Weg, um solche erweiterten Mapping-Optionen zu implementieren?
Danke für Ihre Hilfe!
Es sieht so aus, als könnten Sie dies tun, indem Sie die verschiedenen Sorcery-Provider-Klassen erweitern, um die anwendungsspezifischen Felder, die Sie dem User-Info-Hash hinzufügen möchten, hinzuzufügen.
Um beispielsweise Twitter zu verwenden, haben Sie möglicherweise Folgendes definiert:
%Vor%Sie könnten dies ändern zu:
%Vor% Nun müssen Sie den TwitterWithAvatar
-Anbieter unter Sorcery::Providers
definieren und die #get_user_hash
-Methode überschreiben:
Nun könnten Sie Ihr Mapping einrichten:
%Vor%Alternativ können Sie Ihr Mapping in diese Klasse verschieben, da Sie bereits eine benutzerdefinierte Provider-Klasse verwenden:
%Vor%(Ich habe nicht versucht, diesen Code auszuführen, daher sind die Details vielleicht ein bisschen aus, aber wenn man den Quellcode von Sorcery liest, sieht das nach der richtigen Richtung aus.)
Tags und Links ruby ruby-on-rails authentication devise sorcery