mks_auth 1.0.0 → 1.0.4

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.
Files changed (44) hide show
  1. checksums.yaml +5 -5
  2. data/app/controllers/mks/auth/application_controller.rb +39 -13
  3. data/app/controllers/mks/auth/application_modules_controller.rb +0 -2
  4. data/app/controllers/mks/auth/menus_controller.rb +29 -0
  5. data/app/controllers/mks/auth/user_roles_controller.rb +41 -31
  6. data/app/controllers/mks/auth/users_controller.rb +45 -20
  7. data/app/models/mks/auth/application_module.rb +3 -3
  8. data/app/models/mks/auth/menu.rb +5 -5
  9. data/app/models/mks/auth/user.rb +26 -8
  10. data/app/models/mks/auth/user_role.rb +6 -5
  11. data/config/routes.rb +17 -18
  12. data/db/migrate/20161029065810_create_mks_auth_application_modules.rb +1 -1
  13. data/db/migrate/20161029065959_create_mks_auth_users.rb +1 -4
  14. data/db/migrate/20161029070807_create_mks_auth_user_roles.rb +3 -2
  15. data/db/migrate/20161029071047_create_mks_users_user_roles.rb +4 -4
  16. data/db/migrate/20161029072256_create_mks_auth_menus.rb +3 -3
  17. data/db/migrate/20161029074023_create_mks_menus_user_roles.rb +3 -3
  18. data/db/migrate/20180201104912_create_mks_users_application_modules.rb +12 -0
  19. data/lib/mks/auth/engine.rb +5 -12
  20. data/lib/mks/auth/token_auth.rb +19 -0
  21. data/lib/mks/auth/version.rb +1 -1
  22. data/lib/mks_auth.rb +1 -0
  23. data/spec/controllers/mks/auth/menus_controller_spec.rb +53 -0
  24. data/spec/controllers/mks/auth/user_roles_controller_spec.rb +130 -0
  25. data/spec/controllers/mks/auth/users_controller_spec.rb +67 -1
  26. data/spec/dummy/config/application.rb +2 -0
  27. data/spec/dummy/config/database.yml +5 -3
  28. data/spec/dummy/config/initializers/new_framework_defaults.rb +1 -1
  29. data/spec/dummy/db/schema.rb +38 -30
  30. data/spec/dummy/log/development.log +13666 -3
  31. data/spec/dummy/log/test.log +34964 -0
  32. data/spec/factories/application_modules.rb +1 -1
  33. data/spec/factories/menus.rb +1 -1
  34. data/spec/factories/user_roles.rb +2 -1
  35. data/spec/factories/users.rb +1 -2
  36. data/spec/models/mks/auth/application_module_spec.rb +2 -1
  37. data/spec/models/mks/auth/user_spec.rb +10 -0
  38. data/spec/rails_helper.rb +1 -0
  39. data/spec/spec_helper.rb +1 -1
  40. data/spec/support/factory_girl.rb +2 -2
  41. metadata +82 -62
  42. data/app/controllers/mks/auth/access_controller.rb +0 -51
  43. data/app/helpers/mks/auth/access_helper.rb +0 -47
  44. data/app/helpers/mks/auth/application_helper.rb +0 -10
@@ -1,4 +1,4 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  factory :application_module, class: 'Mks::Auth::ApplicationModule' do
3
3
  code { FFaker::Name.name }
4
4
  name { FFaker::Name.name }
@@ -1,4 +1,4 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  factory :menu, class: 'Mks::Auth::Menu' do
3
3
  text { FFaker::Name.name }
4
4
  icon_cls { FFaker::Name.name }
@@ -1,6 +1,7 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  factory :user_role, class: 'Mks::Auth::UserRole' do
3
3
  name { FFaker::Name.name }
4
+ association :application_module
4
5
 
5
6
  trait :with_menu do
6
7
  after(:create) do |role|
@@ -1,11 +1,10 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  factory :user, class: 'Mks::Auth::User' do
3
3
  first_name { FFaker::Name.name }
4
4
  last_name { FFaker::Name.name }
5
5
  email { FFaker::Internet.email }
6
6
  active true
7
7
  password { FFaker::Internet.password(min_length=6) }
8
- association :application_module
9
8
 
10
9
  trait :with_role do
11
10
  after(:create) do |user|
@@ -22,7 +22,8 @@ module Mks
22
22
 
23
23
  it 'can access users' do
24
24
  am = create(:application_module)
25
- 2.times { create(:user, :application_module => am) }
25
+ 2.times { create(:user) }
26
+ User.all.each { |u| u.application_modules = [am] }
26
27
  expect(am.users.count).to eq 2
27
28
  end
28
29
 
@@ -40,6 +40,16 @@ module Mks
40
40
  u = create(:user, :with_roles)
41
41
  expect(u.roles.count).to eq 3
42
42
  end
43
+
44
+ it 'role_names returns role names' do
45
+ r1 = create(:user_role)
46
+ r2 = create(:user_role)
47
+ u = create(:user, roles: [r1, r2])
48
+
49
+ roles = u.role_names
50
+ expect(roles).to include r1.name
51
+ expect(roles).to include r2.name
52
+ end
43
53
  end
44
54
  end
45
55
  end
data/spec/rails_helper.rb CHANGED
@@ -5,6 +5,7 @@ require File.expand_path('../dummy/config/environment', __FILE__)
5
5
  abort('The Rails environment is running in production mode!') if Rails.env.production?
6
6
  require 'spec_helper'
7
7
  require 'rspec/rails'
8
+ require 'mks/auth/token_auth'
8
9
  # Add additional requires below this line. Rails is not loaded until this point!
9
10
 
10
11
  # Requires supporting ruby files with custom matchers and macros, etc, in
data/spec/spec_helper.rb CHANGED
@@ -17,7 +17,7 @@
17
17
  #
18
18
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
19
 
20
- require 'factory_girl_rails'
20
+ require 'factory_bot_rails'
21
21
 
22
22
  require 'ffaker'
23
23
 
@@ -1,5 +1,5 @@
1
- require 'factory_girl'
1
+ require 'factory_bot'
2
2
 
3
3
  RSpec.configure do |config|
4
- config.include FactoryGirl::Syntax::Methods
4
+ config.include FactoryBot::Syntax::Methods
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mks_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-18 00:00:00.000000000 Z
11
+ date: 2018-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,98 +16,112 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 5.1.1
19
+ version: 5.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 5.1.1
26
+ version: 5.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mks_common
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0
33
+ version: 1.0.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0
40
+ version: 1.0.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec-rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 3.6.0
47
+ version: 3.7.2
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 3.6.0
54
+ version: 3.7.2
55
55
  - !ruby/object:Gem::Dependency
56
- name: factory_girl_rails
56
+ name: factory_bot_rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 4.8.0
61
+ version: 4.10.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 4.8.0
68
+ version: 4.10.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: ffaker
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 2.5.0
75
+ version: 2.9.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 2.5.0
82
+ version: 2.9.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pg
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.20.0
89
+ version: 1.0.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.20.0
96
+ version: 1.0.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bcrypt
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 3.1.11
103
+ version: 3.1.12
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 3.1.11
110
+ version: 3.1.12
111
+ - !ruby/object:Gem::Dependency
112
+ name: jwt
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 2.1.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 2.1.0
111
125
  description: Authentication module for MKS apps
112
126
  email:
113
127
  - henockl@live.com
@@ -121,13 +135,11 @@ files:
121
135
  - app/assets/config/mks_auth_manifest.js
122
136
  - app/assets/javascripts/mks_auth/application.js
123
137
  - app/assets/stylesheets/mks_auth/application.css
124
- - app/controllers/mks/auth/access_controller.rb
125
138
  - app/controllers/mks/auth/application_controller.rb
126
139
  - app/controllers/mks/auth/application_modules_controller.rb
140
+ - app/controllers/mks/auth/menus_controller.rb
127
141
  - app/controllers/mks/auth/user_roles_controller.rb
128
142
  - app/controllers/mks/auth/users_controller.rb
129
- - app/helpers/mks/auth/access_helper.rb
130
- - app/helpers/mks/auth/application_helper.rb
131
143
  - app/jobs/mks_auth/application_job.rb
132
144
  - app/mailers/mks_auth/application_mailer.rb
133
145
  - app/models/mks/auth/application_module.rb
@@ -142,11 +154,15 @@ files:
142
154
  - db/migrate/20161029071047_create_mks_users_user_roles.rb
143
155
  - db/migrate/20161029072256_create_mks_auth_menus.rb
144
156
  - db/migrate/20161029074023_create_mks_menus_user_roles.rb
157
+ - db/migrate/20180201104912_create_mks_users_application_modules.rb
145
158
  - lib/mks/auth.rb
146
159
  - lib/mks/auth/engine.rb
160
+ - lib/mks/auth/token_auth.rb
147
161
  - lib/mks/auth/version.rb
148
162
  - lib/mks_auth.rb
149
163
  - lib/tasks/mks_auth_tasks.rake
164
+ - spec/controllers/mks/auth/menus_controller_spec.rb
165
+ - spec/controllers/mks/auth/user_roles_controller_spec.rb
150
166
  - spec/controllers/mks/auth/users_controller_spec.rb
151
167
  - spec/dummy/Rakefile
152
168
  - spec/dummy/app/assets/config/manifest.js
@@ -194,6 +210,7 @@ files:
194
210
  - spec/dummy/config/spring.rb
195
211
  - spec/dummy/db/schema.rb
196
212
  - spec/dummy/log/development.log
213
+ - spec/dummy/log/test.log
197
214
  - spec/dummy/public/404.html
198
215
  - spec/dummy/public/422.html
199
216
  - spec/dummy/public/500.html
@@ -231,72 +248,75 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
248
  version: '0'
232
249
  requirements: []
233
250
  rubyforge_project:
234
- rubygems_version: 2.6.11
251
+ rubygems_version: 2.7.6
235
252
  signing_key:
236
253
  specification_version: 4
237
254
  summary: Authentication module for MKS apps
238
255
  test_files:
239
- - spec/spec_helper.rb
256
+ - spec/controllers/mks/auth/menus_controller_spec.rb
257
+ - spec/controllers/mks/auth/user_roles_controller_spec.rb
258
+ - spec/controllers/mks/auth/users_controller_spec.rb
259
+ - spec/dummy/app/assets/config/manifest.js
260
+ - spec/dummy/app/assets/javascripts/application.js
261
+ - spec/dummy/app/assets/javascripts/cable.js
262
+ - spec/dummy/app/assets/stylesheets/application.css
263
+ - spec/dummy/app/channels/application_cable/channel.rb
264
+ - spec/dummy/app/channels/application_cable/connection.rb
265
+ - spec/dummy/app/controllers/application_controller.rb
266
+ - spec/dummy/app/helpers/application_helper.rb
267
+ - spec/dummy/app/jobs/application_job.rb
240
268
  - spec/dummy/app/mailers/application_mailer.rb
241
269
  - spec/dummy/app/models/application_record.rb
242
- - spec/dummy/app/jobs/application_job.rb
243
- - spec/dummy/app/controllers/application_controller.rb
244
270
  - spec/dummy/app/views/layouts/application.html.erb
245
271
  - spec/dummy/app/views/layouts/mailer.html.erb
246
272
  - spec/dummy/app/views/layouts/mailer.text.erb
247
- - spec/dummy/app/assets/config/manifest.js
248
- - spec/dummy/app/assets/javascripts/cable.js
249
- - spec/dummy/app/assets/javascripts/application.js
250
- - spec/dummy/app/assets/stylesheets/application.css
251
- - spec/dummy/app/helpers/application_helper.rb
252
- - spec/dummy/app/channels/application_cable/connection.rb
253
- - spec/dummy/app/channels/application_cable/channel.rb
254
- - spec/dummy/bin/update
255
- - spec/dummy/bin/rake
256
- - spec/dummy/bin/setup
257
273
  - spec/dummy/bin/bundle
258
274
  - spec/dummy/bin/rails
259
- - spec/dummy/config/secrets.yml
260
- - spec/dummy/config/routes.rb
261
- - spec/dummy/config/locales/en.yml
275
+ - spec/dummy/bin/rake
276
+ - spec/dummy/bin/setup
277
+ - spec/dummy/bin/update
278
+ - spec/dummy/config/application.rb
279
+ - spec/dummy/config/boot.rb
262
280
  - spec/dummy/config/cable.yml
263
- - spec/dummy/config/environments/production.rb
281
+ - spec/dummy/config/database.yml
282
+ - spec/dummy/config/environment.rb
264
283
  - spec/dummy/config/environments/development.rb
284
+ - spec/dummy/config/environments/production.rb
265
285
  - spec/dummy/config/environments/test.rb
266
- - spec/dummy/config/spring.rb
267
- - spec/dummy/config/environment.rb
268
- - spec/dummy/config/application.rb
269
- - spec/dummy/config/puma.rb
270
- - spec/dummy/config/database.yml
271
- - spec/dummy/config/boot.rb
272
286
  - spec/dummy/config/initializers/application_controller_renderer.rb
287
+ - spec/dummy/config/initializers/assets.rb
273
288
  - spec/dummy/config/initializers/backtrace_silencers.rb
274
- - spec/dummy/config/initializers/mime_types.rb
289
+ - spec/dummy/config/initializers/cookies_serializer.rb
275
290
  - spec/dummy/config/initializers/filter_parameter_logging.rb
291
+ - spec/dummy/config/initializers/inflections.rb
292
+ - spec/dummy/config/initializers/mime_types.rb
293
+ - spec/dummy/config/initializers/new_framework_defaults.rb
276
294
  - spec/dummy/config/initializers/session_store.rb
277
295
  - spec/dummy/config/initializers/wrap_parameters.rb
278
- - spec/dummy/config/initializers/new_framework_defaults.rb
279
- - spec/dummy/config/initializers/assets.rb
280
- - spec/dummy/config/initializers/cookies_serializer.rb
281
- - spec/dummy/config/initializers/inflections.rb
296
+ - spec/dummy/config/locales/en.yml
297
+ - spec/dummy/config/puma.rb
298
+ - spec/dummy/config/routes.rb
299
+ - spec/dummy/config/secrets.yml
300
+ - spec/dummy/config/spring.rb
282
301
  - spec/dummy/config.ru
283
- - spec/dummy/Rakefile
284
- - spec/dummy/public/favicon.ico
302
+ - spec/dummy/db/schema.rb
303
+ - spec/dummy/log/development.log
304
+ - spec/dummy/log/test.log
305
+ - spec/dummy/public/404.html
285
306
  - spec/dummy/public/422.html
286
- - spec/dummy/public/apple-touch-icon.png
287
307
  - spec/dummy/public/500.html
288
- - spec/dummy/public/404.html
289
308
  - spec/dummy/public/apple-touch-icon-precomposed.png
290
- - spec/dummy/db/schema.rb
291
- - spec/dummy/log/development.log
292
- - spec/models/mks/auth/menu_spec.rb
293
- - spec/models/mks/auth/application_module_spec.rb
294
- - spec/models/mks/auth/user_role_spec.rb
295
- - spec/models/mks/auth/user_spec.rb
296
- - spec/support/factory_girl.rb
309
+ - spec/dummy/public/apple-touch-icon.png
310
+ - spec/dummy/public/favicon.ico
311
+ - spec/dummy/Rakefile
312
+ - spec/factories/application_modules.rb
297
313
  - spec/factories/menus.rb
298
314
  - spec/factories/user_roles.rb
299
- - spec/factories/application_modules.rb
300
315
  - spec/factories/users.rb
301
- - spec/controllers/mks/auth/users_controller_spec.rb
316
+ - spec/models/mks/auth/application_module_spec.rb
317
+ - spec/models/mks/auth/menu_spec.rb
318
+ - spec/models/mks/auth/user_role_spec.rb
319
+ - spec/models/mks/auth/user_spec.rb
302
320
  - spec/rails_helper.rb
321
+ - spec/spec_helper.rb
322
+ - spec/support/factory_girl.rb
@@ -1,51 +0,0 @@
1
- require_dependency 'mks/auth/application_controller'
2
-
3
- module Mks
4
- module Auth
5
- class AccessController < ApplicationController
6
- before_action :confirm_logged_in, :except => [:attempt_login, :logout, :menu, :csrf_token]
7
-
8
- def csrf_token
9
- cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?
10
- render json: {success: true}
11
- end
12
-
13
- def attempt_login
14
- code = Rails.configuration.app_code
15
- app_module = ApplicationModule.find_by(code: code)
16
- user = User.find_by(email: params[:email].downcase)
17
-
18
- if user && user.application_module.id == app_module.id
19
- if user.authenticate(params[:password])
20
- login_user user
21
- roles = user.roles.map(&:name)
22
- response = { success: true, data: {user_id: user.id, user_full_name: user.full_name, roles: roles }}
23
- render json: response
24
- else
25
- render json: {success: false, errors: "Invalid username or password"}
26
- end
27
- else
28
- render json: {success: false, errors: "User doesn't exist or is not allowed!"}
29
- end
30
- end
31
-
32
- def logout
33
- logout_user if logged_in?
34
- render json: { success: true }
35
- end
36
-
37
- def menu
38
- render json: {success: true, data: fetch_menus}
39
- end
40
-
41
- def check_login
42
- if session[:user_id]
43
- user = User.find(session[:user_id])
44
- render json: {success: true, data: user.full_name}
45
- else
46
- render json: {success: false}
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,47 +0,0 @@
1
- module Mks
2
- module Auth
3
- module AccessHelper
4
- def login_user(user)
5
- session[:user_id] = user.id
6
- end
7
-
8
- def current_user
9
- @current_user ||= User.find_by(id: session[:user_id])
10
- end
11
-
12
- def logged_in?
13
- !current_user.nil?
14
- end
15
-
16
- def logout_user
17
- session.delete(:user_id)
18
- @current_user = nil
19
- @menus = nil
20
- end
21
-
22
- def fetch_menus
23
- if @menus.nil?
24
- roles = current_user.roles
25
- app_module = current_user.application_module
26
-
27
- @menus = []
28
- roles.each do |role|
29
- if role
30
- menu_list = role.menus.where(:parent => nil, :application_module => app_module)
31
- menu_list.each do |menu|
32
- children = []
33
- menu.children.order(:text).each do |child|
34
- if child.roles.include? role
35
- children << {'text': child.text, 'className': child.class_name, 'iconCls': child.icon_cls}
36
- end
37
- end
38
- @menus << {'text': menu.text, 'children': children, 'iconCls': menu.icon_cls}
39
- end
40
- end
41
- end
42
- end
43
- @menus
44
- end
45
- end
46
- end
47
- end
@@ -1,10 +0,0 @@
1
- module Mks
2
- module Auth
3
- module ApplicationHelper
4
- def app_module
5
- code = Rails.configuration.app_code
6
- ApplicationModule.find_by(code: code)
7
- end
8
- end
9
- end
10
- end