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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/auth/lh/version.rb +1 -1
- data/lib/auth/lh.rb +2 -1
- data/lib/auth_lh/api.rb +112 -0
- data/lib/auth_lh/authentication.rb +36 -6
- data/lib/auth_lh/role_management.rb +38 -0
- metadata +4 -3
- data/lib/auth_lh.rb +0 -110
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f171e353e2b73eeeadaa15fb0c6207af068730d7
|
4
|
+
data.tar.gz: d89c2f58a357075dc3a7213c1eef7d13d2b9c729
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8621503c58bf186a0f3488acfe820b1e478eac7d1269ca946082c79608852e2b5a915b02189807693fdf14e428951eafe975394eb80b87b277fcced9a3e6f865
|
7
|
+
data.tar.gz: b1d891c93c64cb245cd2666c34a275179ca2ac5c89f02ccae49e85fcda1a4a4dc8092420480306ab932e17878e692db4e13082fc3888b866664fc8cb4b1ba432
|
data/CHANGELOG.md
CHANGED
data/lib/auth/lh/version.rb
CHANGED
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'
|
data/lib/auth_lh/api.rb
ADDED
@@ -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.
|
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
|
+
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
|