레일즈 애플리케이션에서 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을 반환합니다.
소서리에는이 방법에 대한 공개 방법이 없습니다. 누군가이 기능을 응용 프로그램에 패치하는 방법을 알아 냈습니까?
메모, 나는 똑같이 내 인증 컨트롤러를 통해 마법사 외장형 모듈을 "패치"한 솔루션에 관심이 있습니다. 위의 예는 github에서 본 일부 패치 요청을 기반으로 한 나의 시도입니다. – Andrew