2012-04-30 33 views
2

我在Rails應用中使用Sorcery進行身份驗證。我已經設置好了,我可以通過用戶名/密碼或通過外部認證來添加用戶(目前只使用twitter)。然而,我無法弄清楚的一件事是如何向現有用戶添加認證,即。通過用戶名創建了一個用戶誰可能想在以後添加他們的Twitter帳戶登錄的一種手段Rails + Sorcery:向現有用戶添加外部身份驗證

我嘗試添加一個方法到外部模塊啓用此功能...

module Sorcery 
    module Controller 
     module Submodules 
      module External 
       module InstanceMethods 
        protected 

        def add_provider_to_user(provider) 
         provider_name = provider.to_sym 
         provider = Config.send(provider_name) 
         user_hash = provider.get_user_hash 
         config = user_class.sorcery_config 

         user = current_user.send(config.authentications_class.to_s.downcase.pluralize).build(config.provider_uid_attribute_name => user_hash[:uid], config.provider_attribute_name => provider) 
         user.save(:validate => false) 

         return user 
        end 
       end 
      end 
     end 
    end 
end 

..但這並不奏效。我似乎無法讓Config類像內部方法那樣工作,Config.send('twitter')總是返回nil而不是提供者。

在Sorcery中沒有這方面的公開方法。有沒有人想出瞭如何將這個功能修補到應用程序中?

+0

剛一說明,我是通過我的認證控制器作爲一個曾是「打補丁」的魔法外部模塊的解決方案同樣感興趣。上面的例子只是基於我在github上看到的一些補丁請求而做的嘗試。 – Andrew

回答