auth-lh 0.11.2 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
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