From ca6d7dd16601adf30e77910bfd25247f05520566 Mon Sep 17 00:00:00 2001 From: Joshua Buker Date: Mon, 13 Feb 2017 18:43:22 -0800 Subject: [PATCH 1/6] Add build_from function --- lib/sorcery/controller/submodules/external.rb | 9 +++++++++ lib/sorcery/model/submodules/external.rb | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/sorcery/controller/submodules/external.rb b/lib/sorcery/controller/submodules/external.rb index 72ec2678..00e95f5b 100644 --- a/lib/sorcery/controller/submodules/external.rb +++ b/lib/sorcery/controller/submodules/external.rb @@ -187,6 +187,15 @@ def create_from(provider_name, &block) @user = user_class.create_from_provider(provider_name, @user_hash[:uid], attrs, &block) end + # follows the same patterns as create_from, but builds the user instead of creating + def build_from(provider_name, &block) + sorcery_fetch_user_hash provider_name + config = user_class.sorcery_config + + attrs = user_attrs(@provider.user_info_mapping, @user_hash) + @user = user_class.build_from_provider(provider_name, @user_hash[:uid], attrs, &block) + end + def user_attrs(user_info_mapping, user_hash) attrs = {} user_info_mapping.each do |k, v| diff --git a/lib/sorcery/model/submodules/external.rb b/lib/sorcery/model/submodules/external.rb index 2f2babfd..ece42842 100644 --- a/lib/sorcery/model/submodules/external.rb +++ b/lib/sorcery/model/submodules/external.rb @@ -73,6 +73,21 @@ def create_from_provider(provider, uid, attrs) end user end + + # NOTE: Should this build the authentication as well and return [user, auth]? + # Currently, users call this function for the user and call add_provider_to_user after saving + def build_from_provider(provider, uid, attrs) + user = new + attrs.each do |k, v| + user.send(:"#{k}=", v) + end + + if block_given? + return false unless yield user + end + + user + end end module InstanceMethods From efa288563a9c92105ec97ccdb88f5e2e2a71da46 Mon Sep 17 00:00:00 2001 From: Joshua Buker Date: Wed, 15 Feb 2017 16:10:02 -0800 Subject: [PATCH 2/6] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb7e9ff7..2f0f4ced 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.10.3 + +* Add new function: `build_from` (allows building a user instance from OAuth without saving) + ## 0.10.2 * Added support for Microsoft OAuth (thanks to @athix) [#37](https://github.com/Sorcery/sorcery/pull/37) From b2350da0e99738f1e25edaa620d12be96d32f3e9 Mon Sep 17 00:00:00 2001 From: Joshua Buker Date: Wed, 29 Mar 2017 14:16:41 -0700 Subject: [PATCH 3/6] Move feature changelog to HEAD from 1.10.3 --- CHANGELOG.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9850d382..260cefe6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,15 +2,12 @@ ## HEAD * Resurrect block authentication, showing auth failure reason. [#41](https://github.com/Sorcery/sorcery/pull/41) * Add github scope option to initializer.rb [#50](https://github.com/Sorcery/sorcery/pull/50) +* Add new function: `build_from` (allows building a user instance from OAuth without saving) ## 0.10.3 * Revert removal of MongoID Adapter (breaks Sorcery for MongoID users until separate gem is created) [#45](https://github.com/Sorcery/sorcery/pull/45) -## 0.10.3 - -* Add new function: `build_from` (allows building a user instance from OAuth without saving) - ## 0.10.2 * Added support for Microsoft OAuth (thanks to @athix) [#37](https://github.com/Sorcery/sorcery/pull/37) From 85ececc45f06ffebb4e4733a59bfba963369464b Mon Sep 17 00:00:00 2001 From: Joshua Buker Date: Wed, 29 Mar 2017 14:45:30 -0700 Subject: [PATCH 4/6] Indicate that provider is unused in build_from_provider method --- lib/sorcery/model/submodules/external.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sorcery/model/submodules/external.rb b/lib/sorcery/model/submodules/external.rb index ece42842..ff82f54f 100644 --- a/lib/sorcery/model/submodules/external.rb +++ b/lib/sorcery/model/submodules/external.rb @@ -76,7 +76,7 @@ def create_from_provider(provider, uid, attrs) # NOTE: Should this build the authentication as well and return [user, auth]? # Currently, users call this function for the user and call add_provider_to_user after saving - def build_from_provider(provider, uid, attrs) + def build_from_provider(_provider, uid, attrs) user = new attrs.each do |k, v| user.send(:"#{k}=", v) From 4a8a87534127a8ee2d02b74e14028187804371d1 Mon Sep 17 00:00:00 2001 From: Joshua Buker Date: Mon, 22 May 2017 16:43:45 -0700 Subject: [PATCH 5/6] Remove unnecessary params from build_from_provider method --- lib/sorcery/controller/submodules/external.rb | 2 +- lib/sorcery/model/submodules/external.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/sorcery/controller/submodules/external.rb b/lib/sorcery/controller/submodules/external.rb index 00e95f5b..fcff2d30 100644 --- a/lib/sorcery/controller/submodules/external.rb +++ b/lib/sorcery/controller/submodules/external.rb @@ -193,7 +193,7 @@ def build_from(provider_name, &block) config = user_class.sorcery_config attrs = user_attrs(@provider.user_info_mapping, @user_hash) - @user = user_class.build_from_provider(provider_name, @user_hash[:uid], attrs, &block) + @user = user_class.build_from_provider(attrs, &block) end def user_attrs(user_info_mapping, user_hash) diff --git a/lib/sorcery/model/submodules/external.rb b/lib/sorcery/model/submodules/external.rb index ff82f54f..3a84c23b 100644 --- a/lib/sorcery/model/submodules/external.rb +++ b/lib/sorcery/model/submodules/external.rb @@ -76,7 +76,7 @@ def create_from_provider(provider, uid, attrs) # NOTE: Should this build the authentication as well and return [user, auth]? # Currently, users call this function for the user and call add_provider_to_user after saving - def build_from_provider(_provider, uid, attrs) + def build_from_provider(attrs) user = new attrs.each do |k, v| user.send(:"#{k}=", v) From 12e03c5bc7cb13757858912cf6f2985cf1277490 Mon Sep 17 00:00:00 2001 From: Joshua Buker Date: Thu, 3 Aug 2017 11:30:59 -0700 Subject: [PATCH 6/6] Update changelog (add pull request link) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4956791..f263abaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## HEAD * Add facebook user_info_path option to initializer.rb [#63](https://github.com/Sorcery/sorcery/pull/63) -* Add new function: `build_from` (allows building a user instance from OAuth without saving) +* Add new function: `build_from` (allows building a user instance from OAuth without saving) [#54](https://github.com/Sorcery/sorcery/pull/54) ## 0.11.0