ninsho 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +5 -1
- data/lib/ninsho.rb +4 -0
- data/lib/ninsho/authentication.rb +30 -6
- data/lib/ninsho/interface.rb +14 -1
- data/lib/ninsho/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -158,12 +158,16 @@ en:
|
|
158
158
|
|
159
159
|
### Changelog
|
160
160
|
|
161
|
-
* Current gem version 0.1.
|
161
|
+
* Current gem version 0.1.2
|
162
|
+
* Add hold_attributes to authentication relation
|
163
|
+
* Add default User as parent resource name
|
162
164
|
* Add more documentation on code
|
163
165
|
* Add aouth token for Facebook friends
|
164
166
|
* Add more flexibility to handle authentications and save to multiple fields
|
165
167
|
* Add handy helpers
|
166
168
|
* Add rails live example
|
169
|
+
* Released gem version 0.1.1
|
170
|
+
* Released gem version 0.1.0
|
167
171
|
* Released gem version 0.0.3
|
168
172
|
* Released gem version 0.0.2
|
169
173
|
* Released gem version 0.0.1
|
data/lib/ninsho.rb
CHANGED
@@ -42,6 +42,10 @@ module Ninsho
|
|
42
42
|
# Hash which contains omniauth configurations
|
43
43
|
mattr_reader :omniauth_configs
|
44
44
|
@@omniauth_configs = ActiveSupport::OrderedHash.new
|
45
|
+
|
46
|
+
# Attributes to be updated to the parent resource class
|
47
|
+
mattr_accessor :parent_resource_holding_attributes
|
48
|
+
@@parent_resource_holding_attributes = []
|
45
49
|
|
46
50
|
# Default setup for Ninsho.
|
47
51
|
# Run the rails g ninsho:install to create a fresh initializer
|
@@ -18,7 +18,8 @@ module Ninsho
|
|
18
18
|
|
19
19
|
# Little method to check if the record is find by the provider and uid
|
20
20
|
def from_oauth
|
21
|
-
Ninsho.resource_class.where(@omniauth.slice(:provider, :uid)).first_or_initialize
|
21
|
+
resource_class = Ninsho.resource_class.where(@omniauth.slice(:provider, :uid)).first_or_initialize
|
22
|
+
resource_class.tap do |resource|
|
22
23
|
resource.provider = @provider
|
23
24
|
resource.uid = @uid
|
24
25
|
resource.oauth_token = @oauth_token
|
@@ -29,16 +30,39 @@ module Ninsho
|
|
29
30
|
# Method to create an authentication record when user is find,
|
30
31
|
# otherwise creates a user with the authentication
|
31
32
|
def from_user
|
32
|
-
|
33
|
-
user = Ninsho.parent_resource_name.
|
33
|
+
attrs = { email: @email }
|
34
|
+
user = Ninsho.parent_resource_name.where(attrs).first_or_initialize
|
35
|
+
user.attributes = holding_attributes(attrs) if user.new_record?
|
34
36
|
user.send("#{Ninsho.resource_name.pluralize}").build(provider: @provider, uid: @uid, oauth_token: @oauth_token)
|
35
|
-
user.
|
37
|
+
user.save
|
36
38
|
user
|
37
39
|
end
|
38
40
|
|
39
|
-
# Check if a parent record is returned
|
41
|
+
# Check if a parent record is returned, commonly the User model
|
40
42
|
def user
|
41
|
-
|
43
|
+
from_oauth.try(Ninsho.parent_resource_name.to_s.downcase.to_sym) || from_user
|
44
|
+
end
|
45
|
+
|
46
|
+
#Holding user attributes
|
47
|
+
def holding_attributes(attrs = {})
|
48
|
+
Ninsho.parent_resource_holding_attributes.each do |attr|
|
49
|
+
attrs[attr] = nested_hash_value(@omniauth, attr)
|
50
|
+
end
|
51
|
+
attrs
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
# Recursive method to look for the key on the omniauth hash
|
57
|
+
# and returns the value
|
58
|
+
def nested_hash_value(obj,key)
|
59
|
+
if obj.respond_to?(:key?) && obj.key?(key)
|
60
|
+
obj[key]
|
61
|
+
elsif obj.respond_to?(:each)
|
62
|
+
r = nil
|
63
|
+
obj.find{ |*a| r=nested_hash_value(a.last,key) }
|
64
|
+
r
|
65
|
+
end
|
42
66
|
end
|
43
67
|
end
|
44
68
|
end
|
data/lib/ninsho/interface.rb
CHANGED
@@ -16,15 +16,28 @@ module Ninsho
|
|
16
16
|
|
17
17
|
def belongs_to_ninsho(*args)
|
18
18
|
options = args.extract_options!
|
19
|
+
Ninsho.parent_resource_holding_attributes = options[:hold_attributes] || []
|
20
|
+
options.reject! { |k, v| k == :hold_attributes }
|
19
21
|
|
20
22
|
associations = args.collect(&:to_s).collect(&:downcase)
|
21
23
|
association_keys = associations.collect { |association| "#{association}_id" }
|
22
24
|
|
23
25
|
#Set the belongs_to association by ActiveRecord
|
24
26
|
associations.each do |associated_model|
|
25
|
-
belongs_to associated_model.to_sym
|
27
|
+
belongs_to associated_model.to_sym, options
|
26
28
|
Ninsho.parent_resource_name = Ninsho.ref(associated_model.to_s.classify).get
|
27
29
|
end
|
30
|
+
|
31
|
+
## Attributes delegation
|
32
|
+
Ninsho.parent_resource_holding_attributes.each do |attr|
|
33
|
+
delegate attr, to: Ninsho.parent_resource_name.to_s.downcase.to_sym
|
34
|
+
|
35
|
+
class_eval <<-RUBY
|
36
|
+
def #{attr}=(value)
|
37
|
+
self.#{Ninsho.parent_resource_name.to_s.downcase.to_sym}.#{attr} = value
|
38
|
+
end
|
39
|
+
RUBY
|
40
|
+
end
|
28
41
|
end
|
29
42
|
|
30
43
|
# Responsible for creating or find the record with the
|
data/lib/ninsho/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ninsho
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: orm_adapter
|
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
117
|
version: '0'
|
118
118
|
requirements: []
|
119
119
|
rubyforge_project: ninsho
|
120
|
-
rubygems_version: 1.8.
|
120
|
+
rubygems_version: 1.8.25
|
121
121
|
signing_key:
|
122
122
|
specification_version: 3
|
123
123
|
summary: Easy authentication with many providers
|