auth-lh 0.30.0 → 1.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: 5fa5f3d2a3422c1b745ef86e6433d07b9dceed3a
4
- data.tar.gz: 9c9936633084f85bacb6a953aa7209d4b86320aa
3
+ metadata.gz: eb4241bf40e9b6644cbb77638cf083fe9161a675
4
+ data.tar.gz: de2e76baef61b694fca69931cc30866d13909b96
5
5
  SHA512:
6
- metadata.gz: 196279305e6d72f47df50660261a1c47cad024dd582b2431fc85a51e733884a25ffe2db6858582f6c879d2d6c9a8c3d3c5a209cacb13e7ecd800a587a6d6f0aa
7
- data.tar.gz: f6a49d56b789e80b7b07886676ff040f7bb160885d316f97e8c463edad854306ee0122c3c74d08f3af574c1b23702abed1ef847c934054cd75f7864bb505a3cd
6
+ metadata.gz: 58b3ca6c33c947982634c3b64a81c02c57d0055449c51eb55fa96facba9ee3041049e1fdd62f6a3d35a1c07b6f713d08a884a8fbdbe135726714816e371f1d50
7
+ data.tar.gz: aa3115b2f40894959d9bc1ceb695bb000a0db91ed82995a0bc784b4126f68eee73a391ed85a737d3a6ed2a71bafe9e1ba3b5f7939304c846cff6fcdfb9a33c5e
data/CHANGELOG.md CHANGED
@@ -261,3 +261,7 @@
261
261
  ## v0.30.0
262
262
 
263
263
  * Fixed change password url
264
+
265
+ ## v1.0
266
+
267
+ * Refactor on auth, static methods moved to class, added module for authentication.
data/lib/auth/lh.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'auth_lh/api'
2
+ require 'auth_lh/auth_management'
2
3
  require 'auth_lh/external_app'
3
4
  require 'auth_lh/role'
4
5
  require 'auth_lh/role_management'
@@ -1,5 +1,5 @@
1
1
  module Auth
2
2
  module Lh
3
- VERSION = "0.30.0"
3
+ VERSION = "1.0"
4
4
  end
5
5
  end
data/lib/auth_lh/api.rb CHANGED
@@ -1,44 +1,44 @@
1
1
  module AuthLh
2
2
  class Api
3
- def self.configure(args={})
3
+ def initialize(args={})
4
4
  @endpoint = (args[:endpoint] || 'https://usuarios.lhconfort.com.ar')
5
5
  @application_code = args[:application_code]
6
6
  @access_token = args[:access_token]
7
7
  end
8
8
 
9
- def self.get_user(login)
9
+ def get_user(login)
10
10
  User.new(get_request("/api/users/#{CGI::escape(login)}"))
11
11
  end
12
12
 
13
- def self.update_user(login, attrs={})
13
+ def update_user(login, attrs={})
14
14
  User.new(put_request("/api/users/#{CGI::escape(login)}", attrs))
15
15
  end
16
16
 
17
- def self.get_users(filters={})
17
+ def get_users(filters={})
18
18
  results = get_request('/api/users', filters)
19
19
  results.map { |r| User.new(r) }
20
20
  end
21
21
 
22
- def self.get_users_extended(filters={})
22
+ def get_users_extended(filters={})
23
23
  results = get_request('/api/users/extended', filters)
24
24
  results.map { |r| UserExtended.new(r) }
25
25
  end
26
26
 
27
- def self.get_external_apps
27
+ def get_external_apps
28
28
  results = get_request('/api/external_apps')
29
29
  results.map { |r| ExternalAppExtended.new(r) }
30
30
  end
31
31
 
32
- def self.get_roles
32
+ def get_roles
33
33
  results = get_request('/api/roles')
34
34
  results.map { |r| Role.new(r) }
35
35
  end
36
36
 
37
- def self.get_role(role_id)
37
+ def get_role(role_id)
38
38
  Role.new(get_request("/api/roles/#{role_id}"))
39
39
  end
40
40
 
41
- def self.get_current_user(session_token, remote_ip, return_url=nil)
41
+ def get_current_user(session_token, remote_ip, return_url=nil)
42
42
  result = get_request '/api/current_user', {
43
43
  app_code: @application_code,
44
44
  session_token: session_token,
@@ -49,13 +49,13 @@ module AuthLh
49
49
  SessionResponse.new(result)
50
50
  end
51
51
 
52
- def self.get_current_shop(ip_address=nil)
52
+ def get_current_shop(ip_address=nil)
53
53
  attrs = { ip: ip_address }
54
54
  response = get_request('/api/current_shop', attrs)
55
55
  response.nil? ? nil : Shop.new(response)
56
56
  end
57
57
 
58
- def self.login_url(return_url=nil)
58
+ def login_url(return_url=nil)
59
59
  if return_url.present?
60
60
  "#{@endpoint}/login?return_url=#{CGI::escape(return_url)}"
61
61
  else
@@ -63,7 +63,7 @@ module AuthLh
63
63
  end
64
64
  end
65
65
 
66
- def self.logout_url(return_url=nil)
66
+ def logout_url(return_url=nil)
67
67
  if return_url.present?
68
68
  "#{@endpoint}/logout?return_url=#{CGI::escape(return_url)}"
69
69
  else
@@ -71,7 +71,7 @@ module AuthLh
71
71
  end
72
72
  end
73
73
 
74
- def self.change_password_url(return_url=nil)
74
+ def change_password_url(return_url=nil)
75
75
  if return_url.present?
76
76
  "#{@endpoint}/current_user/password/edit?return_url=#{CGI::escape(return_url)}"
77
77
  else
@@ -79,13 +79,9 @@ module AuthLh
79
79
  end
80
80
  end
81
81
 
82
- def self.my_apps_url
83
- "#{@endpoint}"
84
- end
85
-
86
82
  protected
87
83
 
88
- def self.get_request(action, params={})
84
+ def get_request(action, params={})
89
85
  response = RestClient.get("#{@endpoint}#{action}", {params: params}.merge(auth_headers))
90
86
 
91
87
  if response.body == 'null'
@@ -95,7 +91,7 @@ module AuthLh
95
91
  end
96
92
  end
97
93
 
98
- def self.put_request(action, params={})
94
+ def put_request(action, params={})
99
95
  response = RestClient.put("#{@endpoint}#{action}", params, auth_headers)
100
96
 
101
97
  if response.body == 'null'
@@ -105,7 +101,7 @@ module AuthLh
105
101
  end
106
102
  end
107
103
 
108
- def self.auth_headers
104
+ def auth_headers
109
105
  { authorization: "Token token=\"#{@access_token}\"" }
110
106
  end
111
107
  end
@@ -0,0 +1,48 @@
1
+ module AuthLh
2
+ module AuthManagement
3
+ def set_current_user
4
+ session_response = @auth_api.get_current_user(cookies[:session_token], request.remote_ip, request.original_url)
5
+
6
+ if session_response.user
7
+ @current_user = ::User.find_or_create_by(login: session_response.user.login)
8
+ @current_user.auth_user = session_response.user
9
+ end
10
+
11
+ if session_response.destination_url.present?
12
+ redirect_to session_response.destination_url
13
+ end
14
+ end
15
+
16
+ def current_user
17
+ @current_user
18
+ end
19
+
20
+ def set_current_shop
21
+ @current_shop = @auth_api.get_current_shop(request.remote_ip)
22
+ end
23
+
24
+ def current_shop
25
+ @current_shop
26
+ end
27
+
28
+ def check_access_grants
29
+ if current_user
30
+ if !current_user.can_access?(params[:controller], params[:action])
31
+ if request.xhr?
32
+ render status: :forbidden
33
+ else
34
+ render file: 'public/403.html', layout: false
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ def logout_url
41
+ @auth_api.logout_url(request.protocol + request.host_with_port)
42
+ end
43
+
44
+ def change_password_url
45
+ @auth_api.change_password_url(request.original_url)
46
+ end
47
+ end
48
+ end
@@ -22,7 +22,7 @@ module AuthLh
22
22
 
23
23
  module ClassMethods
24
24
  def all_external
25
- @cached_users ||= AuthLh::Api.get_users({ pagination: 'false' })
25
+ @cached_users ||= auth_api.get_users({ pagination: 'false' })
26
26
  end
27
27
 
28
28
  def all_external_with_role(role_id)
@@ -31,7 +31,13 @@ module AuthLh
31
31
 
32
32
  def all_external_with_some_role(role_ids)
33
33
  all_external.find_all { |x|
34
- role_ids.any? { |role_id| x.has_role?(role_id) }
34
+ role_ids.any? { |role_id| x.has_some_role?(role_id) }
35
+ }
36
+ end
37
+
38
+ def all_external_with_all_roles(role_ids)
39
+ all_external.find_all { |x|
40
+ role_ids.any? { |role_id| x.has_all_roles?(role_id) }
35
41
  }
36
42
  end
37
43
 
@@ -39,43 +45,32 @@ module AuthLh
39
45
  all_external.find { |x| x.login == login.to_s }
40
46
  end
41
47
 
42
- def clear_cache!
43
- @cached_users = nil
48
+ def find_external_with_role(role_id)
49
+ all_external_with_role(role_id).first
44
50
  end
45
51
 
46
- def find_current_user(session_token, remote_ip, return_url=nil)
47
- response = AuthLh::Api.get_current_user(session_token, remote_ip, return_url)
48
-
49
- logged_user = response.user
50
- @destination_url = response.destination_url
52
+ def find_external_with_some_role(role_ids)
53
+ all_external_with_some_role(role_ids).first
54
+ end
51
55
 
52
- if logged_user
53
- user = find_or_create_by(login: logged_user.login)
54
- user.auth_user = logged_user
55
- user
56
- else
57
- nil
58
- end
56
+ def find_external_with_all_roles(role_ids)
57
+ all_external_with_all_roles(role_ids).first
59
58
  end
60
59
 
61
- def login_url(return_url=nil)
62
- if @destination_url.present?
63
- @destination_url
64
- else
65
- AuthLh::Api.login_url(return_url)
66
- end
60
+ def with_role(role_id)
61
+ all.to_a.find_all { |x| x.has_role?(role_id) }
67
62
  end
68
63
 
69
- def logout_url(return_url=nil)
70
- AuthLh::Api.logout_url(return_url)
64
+ def with_some_role(role_ids)
65
+ all.to_a.find_all { |x| x.has_some_role?(role_ids) }
71
66
  end
72
67
 
73
- def change_password_url(return_url=nil)
74
- AuthLh::Api.change_password_url(return_url)
68
+ def with_all_roles(role_ids)
69
+ all.to_a.find_all { |x| x.has_all_roles?(role_ids) }
75
70
  end
76
71
 
77
- def my_apps_url
78
- AuthLh::Api.my_apps_url
72
+ def clear_cache!
73
+ @cached_users = nil
79
74
  end
80
75
  end
81
76
  end
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.30.0
4
+ version: '1.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: 2017-04-07 00:00:00.000000000 Z
11
+ date: 2017-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -65,6 +65,7 @@ files:
65
65
  - lib/auth/lh.rb
66
66
  - lib/auth/lh/version.rb
67
67
  - lib/auth_lh/api.rb
68
+ - lib/auth_lh/auth_management.rb
68
69
  - lib/auth_lh/external_app.rb
69
70
  - lib/auth_lh/role.rb
70
71
  - lib/auth_lh/role_management.rb