2012-04-30 2 views
2

레일즈 애플리케이션에서 Sorcery for Authentication을 사용하고 있습니다. 설정을 잘했는데 사용자 이름/비밀번호 또는 외부 인증 (현재 트위터 만 사용)으로 사용자를 추가 할 수 있습니다. 그러나 내가 알아낼 수 없었던 한 가지는 기존 사용자에게 인증을 추가하는 방법입니다. 나중에 기록의 수단으로 자신의 트위터 계정을 추가 할 수 있습니다 사용자 이름에 의해 생성 된 사용자.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을 저장하려고 시도했음을 경고해야하지만 아마도 제거하고 싶을 것입니다. 여기의 변경 사항을 확인하십시오 : https://github.com/rcarter/sorcery/commit/f3984749659bceb7f7438cae8ea95ba5a415d1e2

관련 문제