mks_auth 1.0.0 → 1.0.4

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