auth-lh 0.11.2 → 0.12.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cca18c0e2386b3fa95def7a4b56c52474ac4107f
4
- data.tar.gz: edec67d69f231720bd7153e2a8c548cf43503ef9
3
+ metadata.gz: f171e353e2b73eeeadaa15fb0c6207af068730d7
4
+ data.tar.gz: d89c2f58a357075dc3a7213c1eef7d13d2b9c729
5
5
  SHA512:
6
- metadata.gz: f1f20859a52438ec69634d8fa9baa331e1a4bb552933978fcfa34dc0c2946749df6e80b394b64df12a94f29212f764823f06e6e1ad2d1b669f6ebdb14b55d2db
7
- data.tar.gz: a67356f990905e57beabc31900f3c643be078ac2fa712e004a903c1b90e1b6bf6e4d5ce7511ea6aae024b0c4531cb15b5900752cd26894c4933ea30f07540a05
6
+ metadata.gz: 8621503c58bf186a0f3488acfe820b1e478eac7d1269ca946082c79608852e2b5a915b02189807693fdf14e428951eafe975394eb80b87b277fcced9a3e6f865
7
+ data.tar.gz: b1d891c93c64cb245cd2666c34a275179ca2ac5c89f02ccae49e85fcda1a4a4dc8092420480306ab932e17878e692db4e13082fc3888b866664fc8cb4b1ba432
data/CHANGELOG.md CHANGED
@@ -157,3 +157,7 @@
157
157
  ## v0.11.2
158
158
 
159
159
  * Added attributes to user extended
160
+
161
+ ## v0.12.0
162
+
163
+ * Added role management, improved authentication module, api moved to its own class
@@ -1,5 +1,5 @@
1
1
  module Auth
2
2
  module Lh
3
- VERSION = "0.11.2"
3
+ VERSION = "0.12.0"
4
4
  end
5
5
  end
data/lib/auth/lh.rb CHANGED
@@ -1,8 +1,9 @@
1
- require 'auth_lh'
1
+ require 'auth_lh/api'
2
2
  require 'auth_lh/authentication'
3
3
  require 'auth_lh/external_app'
4
4
  require 'auth_lh/external_app_extended'
5
5
  require 'auth_lh/role'
6
+ require 'auth_lh/role_management'
6
7
  require 'auth_lh/session_response'
7
8
  require 'auth_lh/shop'
8
9
  require 'auth_lh/user'
@@ -0,0 +1,112 @@
1
+ module AuthLh
2
+ class Api
3
+ def self.configure(args={})
4
+ @endpoint = (args[:endpoint] || 'https://usuarios.lhconfort.com.ar')
5
+ @application_code = args[:application_code]
6
+ @access_token = args[:access_token]
7
+ end
8
+
9
+ def self.get_user(login)
10
+ User.new(get_request("/api/users/#{login}"))
11
+ end
12
+
13
+ def self.update_user(login, attrs={})
14
+ User.new(put_request("/api/users/#{login}", attrs))
15
+ end
16
+
17
+ def self.get_users(filters={})
18
+ results = get_request('/api/users', filters)
19
+ results.map { |r| User.new(r) }
20
+ end
21
+
22
+ def self.get_users_extended(filters={})
23
+ results = get_request('/api/users/extended', filters)
24
+ results.map { |r| UserExtended.new(r) }
25
+ end
26
+
27
+ def self.get_external_apps
28
+ results = get_request('/api/external_apps')
29
+ results.map { |r| ExternalAppExtended.new(r) }
30
+ end
31
+
32
+ def self.get_roles
33
+ results = get_request('/api/roles')
34
+ results.map { |r| Role.new(r) }
35
+ end
36
+
37
+ def self.get_role(code)
38
+ Role.new(get_request("/api/roles/#{code}"))
39
+ end
40
+
41
+ def self.get_current_user(session_token, remote_ip, return_url=nil)
42
+ result = get_request '/api/current_user', {
43
+ app_code: @application_code,
44
+ session_token: session_token,
45
+ remote_ip: remote_ip,
46
+ return_url: return_url
47
+ }
48
+
49
+ SessionResponse.new(result)
50
+ end
51
+
52
+ def self.get_current_shop(ip_address=nil)
53
+ attrs = { ip: ip_address }
54
+ response = get_request('/api/current_shop', attrs)
55
+ response.nil? ? nil : Shop.new(response)
56
+ end
57
+
58
+ def self.login_url(return_url=nil)
59
+ if return_url.present?
60
+ "#{@endpoint}/login?return_url=#{CGI::escape(return_url)}"
61
+ else
62
+ "#{@endpoint}/login"
63
+ end
64
+ end
65
+
66
+ def self.logout_url(return_url=nil)
67
+ if return_url.present?
68
+ "#{@endpoint}/logout?return_url=#{CGI::escape(return_url)}"
69
+ else
70
+ "#{@endpoint}/logout"
71
+ end
72
+ end
73
+
74
+ def self.change_password_url(return_url=nil)
75
+ if return_url.present?
76
+ "#{@endpoint}/change_password?return_url=#{CGI::escape(return_url)}"
77
+ else
78
+ "#{@endpoint}/change_password"
79
+ end
80
+ end
81
+
82
+ def self.my_apps_url
83
+ "#{@endpoint}"
84
+ end
85
+
86
+ protected
87
+
88
+ def self.get_request(action, params={})
89
+ response = RestClient.get("#{@endpoint}#{action}", {params: params}.merge(auth_headers))
90
+
91
+ if response.body == 'null'
92
+ nil
93
+ else
94
+ JSON.parse(response.body)
95
+ end
96
+ end
97
+
98
+ def self.put_request(action, params={})
99
+ response = RestClient.put("#{@endpoint}#{action}", params, auth_headers)
100
+
101
+ if response.body == 'null'
102
+ nil
103
+ else
104
+ JSON.parse(response.body)
105
+ end
106
+ end
107
+
108
+ def self.auth_headers
109
+ { authorization: "Token token=\"#{@access_token}\"" }
110
+ end
111
+ end
112
+ end
@@ -16,17 +16,47 @@ module AuthLh
16
16
  @auth_user = val
17
17
  end
18
18
 
19
+ def has_role?(r_code)
20
+ role_codes.include?(r_code.to_s)
21
+ end
22
+
23
+ def has_some_role?(r_codes)
24
+ r_codes.any? { |r_code|
25
+ role_codes.include?(r_code.to_s)
26
+ }
27
+ end
28
+
29
+ def has_all_roles?(r_codes)
30
+ r_codes.all? { |r_code|
31
+ role_codes.include?(r_code.to_s)
32
+ }
33
+ end
34
+
19
35
  module ClassMethods
20
36
  def all_external
21
- AuthLh.get_users
37
+ @cached_users ||= AuthLh.get_users({ pagination: 'false' })
38
+ end
39
+
40
+ def all_external_with_role(role_code)
41
+ all_external.find_all { |x| x.has_role?(role_code) }
42
+ end
43
+
44
+ def all_external_with_some_role(role_codes)
45
+ all_external.find_all { |x|
46
+ role_codes.any? { |role_code| x.has_role?(role_code) }
47
+ }
22
48
  end
23
49
 
24
50
  def find_external(login)
25
51
  all_external.find { |x| x.login == login.to_s }
26
52
  end
27
53
 
54
+ def clear_cache!
55
+ @cached_users = nil
56
+ end
57
+
28
58
  def find_current_user(session_token, remote_ip, return_url=nil)
29
- response = AuthLh.get_current_user(session_token, remote_ip, return_url)
59
+ response = AuthLh::Api.get_current_user(session_token, remote_ip, return_url)
30
60
 
31
61
  logged_user = response.user
32
62
  @destination_url = response.destination_url
@@ -44,20 +74,20 @@ module AuthLh
44
74
  if @destination_url.present?
45
75
  @destination_url
46
76
  else
47
- AuthLh.login_url(return_url)
77
+ AuthLh::Api.login_url(return_url)
48
78
  end
49
79
  end
50
80
 
51
81
  def logout_url(return_url=nil)
52
- AuthLh.logout_url(return_url)
82
+ AuthLh::Api.logout_url(return_url)
53
83
  end
54
84
 
55
85
  def change_password_url(return_url=nil)
56
- AuthLh.change_password_url(return_url)
86
+ AuthLh::Api.change_password_url(return_url)
57
87
  end
58
88
 
59
89
  def my_apps_url
60
- AuthLh.my_apps_url
90
+ AuthLh::Api.my_apps_url
61
91
  end
62
92
  end
63
93
  end
@@ -0,0 +1,38 @@
1
+ module AuthLh
2
+ module RoleManagement
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ def auth_role
8
+ if @auth_role.nil?
9
+ @auth_role = self.class.find_external(code)
10
+ end
11
+
12
+ @auth_role
13
+ end
14
+
15
+ def auth_role=(val)
16
+ @auth_role = val
17
+ end
18
+
19
+ module ClassMethods
20
+ def all_external
21
+ unless @cache_auth_roles
22
+ @cached_roles = AuthLh::Api.get_roles
23
+ end
24
+
25
+ @cached_roles
26
+ end
27
+
28
+ def find_external(code)
29
+ all_external.find { |x| x.code == code.to_s }
30
+ end
31
+
32
+ def clear_cache!
33
+ @cached_roles = nil
34
+ end
35
+ end
36
+ end
37
+ end
38
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auth-lh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matias Hick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-11 00:00:00.000000000 Z
11
+ date: 2016-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,11 +64,12 @@ files:
64
64
  - README.md
65
65
  - lib/auth/lh.rb
66
66
  - lib/auth/lh/version.rb
67
- - lib/auth_lh.rb
67
+ - lib/auth_lh/api.rb
68
68
  - lib/auth_lh/authentication.rb
69
69
  - lib/auth_lh/external_app.rb
70
70
  - lib/auth_lh/external_app_extended.rb
71
71
  - lib/auth_lh/role.rb
72
+ - lib/auth_lh/role_management.rb
72
73
  - lib/auth_lh/session_response.rb
73
74
  - lib/auth_lh/shop.rb
74
75
  - lib/auth_lh/user.rb
data/lib/auth_lh.rb DELETED
@@ -1,110 +0,0 @@
1
- module AuthLh
2
- def self.configure(args={})
3
- @endpoint = (args[:endpoint] || 'https://usuarios.lhconfort.com.ar')
4
- @application_code = args[:application_code]
5
- @access_token = args[:access_token]
6
- end
7
-
8
- def self.get_user(code_or_login)
9
- User.new(get_request("/api/users/#{code_or_login}"))
10
- end
11
-
12
- def self.update_user(code_or_login, attrs={})
13
- User.new(put_request("/api/users/#{code_or_login}", attrs))
14
- end
15
-
16
- def self.get_users(filters={})
17
- results = get_request('/api/users', filters)
18
- results.map { |r| User.new(r) }
19
- end
20
-
21
- def self.get_users_extended(filters={})
22
- results = get_request('/api/users/extended', filters)
23
- results.map { |r| UserExtended.new(r) }
24
- end
25
-
26
- def self.get_external_apps
27
- results = get_request('/api/external_apps')
28
- results.map { |r| ExternalAppExtended.new(r) }
29
- end
30
-
31
- def self.get_roles
32
- results = get_request('/api/roles')
33
- results.map { |r| Role.new(r) }
34
- end
35
-
36
- def self.get_role(code)
37
- Role.new(get_request("/api/roles/#{code}"))
38
- end
39
-
40
- def self.get_current_user(session_token, remote_ip, return_url=nil)
41
- result = get_request '/api/current_user', {
42
- app_code: @application_code,
43
- session_token: session_token,
44
- remote_ip: remote_ip,
45
- return_url: return_url
46
- }
47
-
48
- SessionResponse.new(result)
49
- end
50
-
51
- def self.get_current_shop(ip_address=nil)
52
- attrs = { ip: ip_address }
53
- response = get_request('/api/current_shop', attrs)
54
- response.nil? ? nil : Shop.new(response)
55
- end
56
-
57
- def self.login_url(return_url=nil)
58
- if return_url.present?
59
- "#{@endpoint}/login?return_url=#{CGI::escape(return_url)}"
60
- else
61
- "#{@endpoint}/login"
62
- end
63
- end
64
-
65
- def self.logout_url(return_url=nil)
66
- if return_url.present?
67
- "#{@endpoint}/logout?return_url=#{CGI::escape(return_url)}"
68
- else
69
- "#{@endpoint}/logout"
70
- end
71
- end
72
-
73
- def self.change_password_url(return_url=nil)
74
- if return_url.present?
75
- "#{@endpoint}/change_password?return_url=#{CGI::escape(return_url)}"
76
- else
77
- "#{@endpoint}/change_password"
78
- end
79
- end
80
-
81
- def self.my_apps_url
82
- "#{@endpoint}"
83
- end
84
-
85
- protected
86
-
87
- def self.get_request(action, params={})
88
- response = RestClient.get("#{@endpoint}#{action}", {params: params}.merge(auth_headers))
89
-
90
- if response.body == 'null'
91
- nil
92
- else
93
- JSON.parse(response.body)
94
- end
95
- end
96
-
97
- def self.put_request(action, params={})
98
- response = RestClient.put("#{@endpoint}#{action}", params, auth_headers)
99
-
100
- if response.body == 'null'
101
- nil
102
- else
103
- JSON.parse(response.body)
104
- end
105
- end
106
-
107
- def self.auth_headers
108
- { authorization: "Token token=\"#{@access_token}\"" }
109
- end
110
- end