2012-04-30 3 views
2

Я использую Sorcery for Authentication в приложении Rails. Я настроил это нормально, я могу добавлять пользователей по имени пользователя/паролю или через внешнее auth (только с использованием твиттера на данный момент). Однако одна вещь, которую я не смог выяснить, - это добавить аутентификации к существующим пользователям, т.е. пользователь создал по имени пользователя, которые могли бы хотеть, чтобы позже добавить их щебет счет в качестве средства ведения журнала в.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 вместо поставщика.

Для этого в Волшебстве нет публичных методов. Кто-нибудь понял, как исправить эту функциональность в приложении?

+0

Просто примечание, я был бы равно заинтересован в решении, которое работало через мой контроллер проверки подлинности, как тот, который «исправил» внешний модуль магии. Пример выше - это только моя попытка, основанная на некоторых запросах на исправления, которые я видел на github. – Andrew

ответ

0

Недавно я использовал https://github.com/rcarter/sorcery, чтобы добавить ссылку на провайдера для уже прошедшего проверку подлинности пользователя. Делает ли это то, что вы ищете?

Я должен предупредить, что он пытается сохранить access_token в вашей модели User ... вы, вероятно, захотите удалить это. См. Здесь изменения: https://github.com/rcarter/sorcery/commit/f3984749659bceb7f7438cae8ea95ba5a415d1e2

Смежные вопросы