mks_auth 1.0.10 → 1.2.0

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/mks/auth/access_controller.rb +51 -0
  3. data/app/controllers/mks/auth/application_controller.rb +13 -40
  4. data/app/controllers/mks/auth/application_modules_controller.rb +2 -0
  5. data/app/controllers/mks/auth/user_roles_controller.rb +32 -40
  6. data/app/controllers/mks/auth/users_controller.rb +29 -47
  7. data/app/helpers/mks/auth/access_helper.rb +47 -0
  8. data/app/helpers/mks/auth/application_helper.rb +10 -0
  9. data/app/models/mks/auth/application_module.rb +3 -3
  10. data/app/models/mks/auth/menu.rb +5 -5
  11. data/app/models/mks/auth/user.rb +8 -30
  12. data/app/models/mks/auth/user_role.rb +5 -10
  13. data/config/routes.rb +18 -17
  14. data/db/migrate/20161029065810_create_mks_auth_application_modules.rb +1 -1
  15. data/db/migrate/20161029065959_create_mks_auth_users.rb +4 -1
  16. data/db/migrate/20161029070807_create_mks_auth_user_roles.rb +2 -3
  17. data/db/migrate/20161029071047_create_mks_users_user_roles.rb +4 -4
  18. data/db/migrate/20161029072256_create_mks_auth_menus.rb +3 -3
  19. data/db/migrate/20161029074023_create_mks_menus_user_roles.rb +3 -3
  20. data/lib/mks/auth/engine.rb +12 -5
  21. data/lib/mks/auth/version.rb +1 -1
  22. data/lib/mks_auth.rb +0 -1
  23. data/spec/controllers/mks/auth/users_controller_spec.rb +2 -91
  24. data/spec/dummy/config/application.rb +0 -2
  25. data/spec/dummy/config/database.yml +3 -5
  26. data/spec/dummy/config/initializers/new_framework_defaults.rb +1 -1
  27. data/spec/dummy/db/schema.rb +30 -38
  28. data/spec/factories/application_modules.rb +1 -1
  29. data/spec/factories/menus.rb +1 -1
  30. data/spec/factories/user_roles.rb +1 -2
  31. data/spec/factories/users.rb +2 -1
  32. data/spec/models/mks/auth/application_module_spec.rb +1 -2
  33. data/spec/models/mks/auth/user_role_spec.rb +0 -6
  34. data/spec/models/mks/auth/user_spec.rb +0 -21
  35. data/spec/rails_helper.rb +0 -1
  36. data/spec/spec_helper.rb +1 -1
  37. data/spec/support/factory_girl.rb +2 -2
  38. metadata +69 -92
  39. data/app/controllers/mks/auth/menus_controller.rb +0 -29
  40. data/db/migrate/20180201104912_create_mks_users_application_modules.rb +0 -12
  41. data/lib/mks/auth/token_auth.rb +0 -19
  42. data/spec/controllers/mks/auth/menus_controller_spec.rb +0 -53
  43. data/spec/controllers/mks/auth/user_roles_controller_spec.rb +0 -129
  44. data/spec/dummy/log/development.log +0 -14612
  45. data/spec/dummy/log/test.log +0 -44921
@@ -1,16 +1,11 @@
1
1
  module Mks
2
2
  module Auth
3
- # A model to represent various roles of users in the system
4
3
  class UserRole < ApplicationRecord
5
- validates :name, presence: true, uniqueness: true
6
-
7
- belongs_to :application_module
8
- has_and_belongs_to_many :users, join_table: 'mks_auth_users_user_roles'
9
- has_and_belongs_to_many :menus, join_table: 'mks_auth_menus_user_roles'
4
+ # self.table_name = 'mks_user_roles'
10
5
 
11
- def sym_name
12
- name.underscore.to_sym
13
- end
6
+ validates :name, presence: true, uniqueness: true
7
+ has_and_belongs_to_many :users, :join_table => :mks_auth_users_user_roles
8
+ has_and_belongs_to_many :menus, :join_table => :mks_auth_menus_user_roles
14
9
  end
15
10
  end
16
- end
11
+ end
@@ -1,31 +1,32 @@
1
- # frozen_string_literal: true
2
-
3
1
  Mks::Auth::Engine.routes.draw do
2
+ get '/csrf_token', to: 'access#csrf_token'
4
3
 
5
- post '/login', controller: :users, action: :login
4
+ get '/attempt_login', to: 'access#attempt_login'
6
5
 
7
- resources :application_modules
6
+ get '/logout', to: 'access#logout'
7
+
8
+ get '/menu', to: 'access#menu'
8
9
 
9
- resources :users, except: %i[new edit show destroy]
10
+ get '/check_login', to: 'access#check_login'
11
+
12
+ post '/login', to: 'access#attempt_login'
13
+
14
+ resources :application_modules
10
15
 
11
- resources :users do
12
- member do
13
- get 'roles', controller: :users, action: :roles
14
- get 'menus', controller: :menus, action: :menus
15
- get 'user_roles', controller: :users, action: :user_roles
16
- post 'user_roles', controller: :users, action: :save_selected_roles
17
- end
18
- end
16
+ # get '/users', to: 'users#index'
19
17
 
18
+ resources :users, except: [:new, :edit, :show, :destroy]
20
19
 
20
+ get '/users/roles', controller: :users, action: :roles
21
21
 
22
+ get '/users/fetch_by_role', to: 'users#fetch_by_role'
22
23
 
23
- resources :user_roles, except: %i[new edit show destroy]
24
+ # get '/user_roles', to: 'user_roles#index'
24
25
 
25
- get '/user_roles/:id/users', controller: :user_roles, action: :users
26
+ resource :user_roles, except: [:new, :edit, :show, :destroy]
26
27
 
27
- post '/users/:id/assign_roles', controller: :user_roles, action: :assign_roles
28
+ post '/assign_roles', to: 'user_roles#assign_roles'
28
29
 
29
- get '/users/:id/assigned_roles', controller: :user_roles, action: :assigned_roles
30
+ get '/assigned_roles/:user_id', to: 'user_roles#get_assigned_roles'
30
31
 
31
32
  end
@@ -1,4 +1,4 @@
1
- class CreateMksAuthApplicationModules < ActiveRecord::Migration[5.2]
1
+ class CreateMksAuthApplicationModules < ActiveRecord::Migration[5.0]
2
2
  def change
3
3
  create_table :mks_auth_application_modules do |t|
4
4
  t.string :code, unique: true, null: false
@@ -1,13 +1,16 @@
1
- class CreateMksAuthUsers < ActiveRecord::Migration[5.2]
1
+ class CreateMksAuthUsers < ActiveRecord::Migration[5.0]
2
2
  def change
3
3
  create_table :mks_auth_users do |t|
4
4
  t.string :first_name, null: false
5
5
  t.string :last_name, null: false
6
6
  t.string :email, null: false
7
7
  t.boolean :active, null: false, default: true
8
+ t.references :application_module, index: true
8
9
  t.string :password_digest
9
10
 
10
11
  t.timestamps
11
12
  end
13
+
14
+ add_foreign_key :mks_auth_users, :mks_auth_application_modules, :column => :application_module_id
12
15
  end
13
16
  end
@@ -1,10 +1,9 @@
1
- class CreateMksAuthUserRoles < ActiveRecord::Migration[5.2]
1
+ class CreateMksAuthUserRoles < ActiveRecord::Migration[5.0]
2
2
  def change
3
3
  create_table :mks_auth_user_roles do |t|
4
4
  t.string :name, null: false
5
- t.references :application_module, index: true
5
+
6
6
  t.timestamps
7
7
  end
8
- add_foreign_key :mks_auth_user_roles, :mks_auth_application_modules, column: :application_module_id
9
8
  end
10
9
  end
@@ -1,11 +1,11 @@
1
- class CreateMksUsersUserRoles < ActiveRecord::Migration[5.2]
1
+ class CreateMksUsersUserRoles < ActiveRecord::Migration[5.0]
2
2
  def change
3
3
  create_table :mks_auth_users_user_roles, id: false do |t|
4
4
  t.references :user, index: false
5
5
  t.references :user_role, index: false
6
6
  end
7
- add_index :mks_auth_users_user_roles, %i[user_id user_role_id]
8
- add_foreign_key :mks_auth_users_user_roles, :mks_auth_users, column: :user_id
9
- add_foreign_key :mks_auth_users_user_roles, :mks_auth_user_roles, column: :user_role_id
7
+ add_index :mks_auth_users_user_roles, [:user_id, :user_role_id]
8
+ add_foreign_key :mks_auth_users_user_roles, :mks_auth_users, :column => :user_id
9
+ add_foreign_key :mks_auth_users_user_roles, :mks_auth_user_roles, :column => :user_role_id
10
10
  end
11
11
  end
@@ -1,4 +1,4 @@
1
- class CreateMksAuthMenus < ActiveRecord::Migration[5.2]
1
+ class CreateMksAuthMenus < ActiveRecord::Migration[5.0]
2
2
  def change
3
3
  create_table :mks_auth_menus do |t|
4
4
  t.string :text, null: false
@@ -11,7 +11,7 @@ class CreateMksAuthMenus < ActiveRecord::Migration[5.2]
11
11
  t.timestamps
12
12
  end
13
13
 
14
- add_foreign_key :mks_auth_menus, :mks_auth_menus, column: :parent_id
15
- add_foreign_key :mks_auth_menus, :mks_auth_application_modules, column: :application_module_id
14
+ add_foreign_key :mks_auth_menus, :mks_auth_menus, :column => :parent_id
15
+ add_foreign_key :mks_auth_menus, :mks_auth_application_modules, :column => :application_module_id
16
16
  end
17
17
  end
@@ -1,11 +1,11 @@
1
- class CreateMksMenusUserRoles < ActiveRecord::Migration[5.2]
1
+ class CreateMksMenusUserRoles < ActiveRecord::Migration[5.0]
2
2
  def change
3
3
  create_table :mks_auth_menus_user_roles do |t|
4
4
  t.references :menu, index: false
5
5
  t.references :user_role, index: false
6
6
  end
7
7
  add_index :mks_auth_menus_user_roles, [:menu_id, :user_role_id]
8
- add_foreign_key :mks_auth_menus_user_roles, :mks_auth_menus, column: :menu_id
9
- add_foreign_key :mks_auth_menus_user_roles, :mks_auth_user_roles, column: :user_role_id
8
+ add_foreign_key :mks_auth_menus_user_roles, :mks_auth_menus, :column => :menu_id
9
+ add_foreign_key :mks_auth_menus_user_roles, :mks_auth_user_roles, :column => :user_role_id
10
10
  end
11
11
  end
@@ -4,18 +4,25 @@ module Mks
4
4
  isolate_namespace Mks::Auth
5
5
 
6
6
  initializer :append_migrations do |app|
7
- unless app.root.to_s.match? root.to_s
8
- config.paths['db/migrate'].expanded.each do |expanded_path|
9
- app.config.paths['db/migrate'] << expanded_path
7
+ unless app.root.to_s.match root.to_s
8
+ if app.config.app_code == 'PSH'
9
+ config.paths['db/migrate'].expanded.each do |expanded_path|
10
+ app.config.paths['db/migrate'] << expanded_path
11
+ end
10
12
  end
11
13
  end
12
14
  end
13
15
 
16
+ initializer 'mks_auth.factories', :after => 'factory_girl.set_factory_paths' do
17
+ FactoryGirl.definition_file_paths << File.expand_path('../../../../spec/factories', __FILE__) if defined?(FactoryGirl)
18
+ end
19
+
14
20
  config.generators do |g|
15
- g.test_framework :rspec, fixture: false
21
+ g.test_framework :rspec, :fixture => false
22
+ g.fixture_replacement :factory_girl, :dir => 'spec/factories'
16
23
  g.assets false
17
24
  g.helper false
18
25
  end
19
26
  end
20
27
  end
21
- end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module Mks
2
2
  module Auth
3
- VERSION = '1.0.10'.freeze
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  end
@@ -1,3 +1,2 @@
1
1
  require 'mks/auth'
2
2
  require 'mks/auth/engine'
3
- require 'mks/auth/token_auth'
@@ -1,5 +1,4 @@
1
1
  require 'rails_helper'
2
- require 'mks/auth/token_auth'
3
2
 
4
3
  module Mks
5
4
  module Auth
@@ -9,99 +8,11 @@ module Mks
9
8
  describe 'GET #roles' do
10
9
  it 'gets roles of a user' do
11
10
  u = create(:user)
12
- token = Mks::Auth::TokenAuth.issue(name: u.full_name, email: u.email, id: u.id)
13
- request.headers['Authorization'] = "Bearer #{token}"
14
-
15
11
  roles = [create(:user_role), create(:user_role)]
16
12
  u.roles << roles
17
- get :roles, params: { id: u.id }
18
- result = JSON(response.body)
19
- expect(result.count).to eq 2
20
- end
21
- end
22
-
23
- describe 'GET #user_roles' do
24
- it 'fetches roles' do
25
- app_module = create(:application_module, code: 'DUMMY')
26
- u = create(:user, application_modules: [app_module])
27
- token = Mks::Auth::TokenAuth.issue(name: u.full_name, email: u.email, id: u.id)
28
- request.headers['Authorization'] = "Bearer #{token}"
29
-
30
- r1 = create(:user_role, application_module: app_module)
31
- r2 = create(:user_role, application_module: app_module)
32
- u.roles << r1
33
-
34
- get :user_roles, params: { id: u.id }
35
- result = JSON(response.body)
36
- expect(result.count).to eq 2
37
- expect(result.select { |r| r['id'] == r1.id }[0]['selected']).to be_truthy
38
- expect(result.select { |r| r['id'] == r2.id }[0]['selected']).to be_falsey
39
- end
40
- end
41
-
42
- describe 'POST #create' do
43
- it 'creates a new user' do
44
- app_module = create(:application_module, code: 'DUMMY')
45
- u = create(:user, application_modules: [app_module])
46
- token = Mks::Auth::TokenAuth.issue(name: u.full_name, email: u.email, id: u.id)
47
- request.headers['Authorization'] = "Bearer #{token}"
48
-
49
- user = {
50
- first_name: 'test user',
51
- last_name: 'test user',
52
- email: 'test@test.com',
53
- password: 'test123',
54
- password_confirmation: 'test123'
55
- }
56
-
57
- count = User.count
58
- post :create, params: { user: user }
59
- result = JSON(response.body)
60
- expect(result['success']).to be_truthy
61
- expect(User.count).to eq count + 1
62
- end
63
- end
64
-
65
- describe 'POST #save_selected_roles' do
66
- it 'saves selected user roles' do
67
- app_module = create(:application_module, code: 'DUMMY')
68
- u = create(:user, application_modules: [app_module])
69
- token = Mks::Auth::TokenAuth.issue(name: u.full_name, email: u.email, id: u.id)
70
- request.headers['Authorization'] = "Bearer #{token}"
71
-
72
- r1 = create(:user_role, application_module: app_module)
73
- r2 = create(:user_role, application_module: app_module)
74
-
75
- roles = [
76
- { id: r1.id, selected: true },
77
- { id: r2.id, selected: true }
78
- ]
79
-
80
- post :save_selected_roles, params: { id: u.id, roles: roles }
81
- u.reload
82
- expect(u.roles.count).to eq 2
83
- end
84
- end
85
-
86
- describe 'POST #login' do
87
- it 'returns a jwt token for correct credentials' do
88
- m = create(:application_module)
89
- ur = create(:user_role, application_module: m)
90
- u = create(:user, password: '123456', password_confirmation: '123456', roles: [ur], application_modules: [m])
91
- auth = { email: u.email, password: '123456', app_module: m.code }
92
- token = Mks::Auth::TokenAuth.issue(u.to_token_payload)
93
- post :login, params: { auth: auth }
94
-
13
+ get :roles, session: { user_id: u.id }
95
14
  result = JSON(response.body)
96
- expect(result['jwt']).to eq token
97
- end
98
-
99
- it 'returns a 401 status for failed logins' do
100
- u = create(:user)
101
- auth = { email: u.email, password: '123456' }
102
- post :login, params: { auth: auth }
103
-
104
- expect(response.status).to eq 400
15
+ expect(result['data'].count).to eq 2
105
16
  end
106
17
  end
107
18
  end
@@ -15,8 +15,6 @@ require "mks_auth"
15
15
 
16
16
  module Dummy
17
17
  class Application < Rails::Application
18
- config.auth_secret = '31a70abfaa57e5e77a3fc9f27aeaaf59b9a9f5355b5e16c842ee172035a8ed40bf82c1c971ecc176e4f0b4c9e6141db07fd4a5af3f7db9265e719fbe340b105a'
19
- config.app_code = 'DUMMY'
20
18
  # Settings in config/environments/* take precedence over those specified here.
21
19
  # Application configuration should go into files in config/initializers
22
20
  # -- all .rb files in that directory are automatically loaded.
@@ -6,20 +6,18 @@
6
6
  #
7
7
  default: &default
8
8
  adapter: postgresql
9
- host: localhost
10
- port: 5433
11
9
  pool: 5
12
10
  timeout: 5000
13
- user: postgres
11
+ user: henock
14
12
  pass:
15
13
 
16
14
  development:
17
15
  <<: *default
18
- database: construction_development
16
+ database: logistics_development
19
17
 
20
18
  # Warning: The database defined as "test" will be erased and
21
19
  # re-generated from your development database when you run "rake".
22
20
  # Do not set this db to the same as development or production.
23
21
  test:
24
22
  <<: *default
25
- database: construction_test
23
+ database: logistics_test
@@ -18,7 +18,7 @@ ActiveSupport.to_time_preserves_timezone = true
18
18
  Rails.application.config.active_record.belongs_to_required_by_default = true
19
19
 
20
20
  # Do not halt callback chains when a callback returns false. Previous versions had true.
21
- # ActiveSupport.halt_callback_chains_on_return_false = false
21
+ ActiveSupport.halt_callback_chains_on_return_false = false
22
22
 
23
23
  # Configure SSL options to enable HSTS with subdomains. Previous versions had false.
24
24
  Rails.application.config.ssl_options = { hsts: { subdomains: true } }
@@ -10,74 +10,66 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2018_02_01_104912) do
13
+ ActiveRecord::Schema.define(version: 20161029074023) do
14
14
 
15
15
  # These are extensions that must be enabled in order to support this database
16
16
  enable_extension "plpgsql"
17
17
 
18
18
  create_table "mks_auth_application_modules", force: :cascade do |t|
19
- t.string "code", null: false
20
- t.string "name", null: false
19
+ t.string "code", null: false
20
+ t.string "name", null: false
21
21
  t.datetime "created_at", null: false
22
22
  t.datetime "updated_at", null: false
23
23
  end
24
24
 
25
25
  create_table "mks_auth_menus", force: :cascade do |t|
26
- t.string "text", null: false
27
- t.string "icon_cls"
28
- t.string "class_name"
29
- t.string "location"
30
- t.integer "parent_id"
31
- t.bigint "application_module_id"
32
- t.datetime "created_at", null: false
33
- t.datetime "updated_at", null: false
34
- t.index ["application_module_id"], name: "index_mks_auth_menus_on_application_module_id"
35
- t.index ["parent_id"], name: "index_mks_auth_menus_on_parent_id"
26
+ t.string "text", null: false
27
+ t.string "icon_cls"
28
+ t.string "class_name"
29
+ t.string "location"
30
+ t.integer "parent_id"
31
+ t.integer "application_module_id"
32
+ t.datetime "created_at", null: false
33
+ t.datetime "updated_at", null: false
34
+ t.index ["application_module_id"], name: "index_mks_auth_menus_on_application_module_id", using: :btree
35
+ t.index ["parent_id"], name: "index_mks_auth_menus_on_parent_id", using: :btree
36
36
  end
37
37
 
38
38
  create_table "mks_auth_menus_user_roles", force: :cascade do |t|
39
- t.bigint "menu_id"
40
- t.bigint "user_role_id"
41
- t.index ["menu_id", "user_role_id"], name: "index_mks_auth_menus_user_roles_on_menu_id_and_user_role_id"
39
+ t.integer "menu_id"
40
+ t.integer "user_role_id"
41
+ t.index ["menu_id", "user_role_id"], name: "index_mks_auth_menus_user_roles_on_menu_id_and_user_role_id", using: :btree
42
42
  end
43
43
 
44
44
  create_table "mks_auth_user_roles", force: :cascade do |t|
45
- t.string "name", null: false
46
- t.bigint "application_module_id"
45
+ t.string "name", null: false
47
46
  t.datetime "created_at", null: false
48
47
  t.datetime "updated_at", null: false
49
- t.index ["application_module_id"], name: "index_mks_auth_user_roles_on_application_module_id"
50
48
  end
51
49
 
52
50
  create_table "mks_auth_users", force: :cascade do |t|
53
- t.string "first_name", null: false
54
- t.string "last_name", null: false
55
- t.string "email", null: false
56
- t.boolean "active", default: true, null: false
57
- t.string "password_digest"
58
- t.datetime "created_at", null: false
59
- t.datetime "updated_at", null: false
60
- end
61
-
62
- create_table "mks_auth_users_application_modules", id: false, force: :cascade do |t|
63
- t.bigint "user_id"
64
- t.bigint "application_module_id"
65
- t.index ["user_id", "application_module_id"], name: "am_on_users_indx"
51
+ t.string "first_name", null: false
52
+ t.string "last_name", null: false
53
+ t.string "email", null: false
54
+ t.boolean "active", default: true, null: false
55
+ t.integer "application_module_id"
56
+ t.string "password_digest"
57
+ t.datetime "created_at", null: false
58
+ t.datetime "updated_at", null: false
59
+ t.index ["application_module_id"], name: "index_mks_auth_users_on_application_module_id", using: :btree
66
60
  end
67
61
 
68
62
  create_table "mks_auth_users_user_roles", id: false, force: :cascade do |t|
69
- t.bigint "user_id"
70
- t.bigint "user_role_id"
71
- t.index ["user_id", "user_role_id"], name: "index_mks_auth_users_user_roles_on_user_id_and_user_role_id"
63
+ t.integer "user_id"
64
+ t.integer "user_role_id"
65
+ t.index ["user_id", "user_role_id"], name: "index_mks_auth_users_user_roles_on_user_id_and_user_role_id", using: :btree
72
66
  end
73
67
 
74
68
  add_foreign_key "mks_auth_menus", "mks_auth_application_modules", column: "application_module_id"
75
69
  add_foreign_key "mks_auth_menus", "mks_auth_menus", column: "parent_id"
76
70
  add_foreign_key "mks_auth_menus_user_roles", "mks_auth_menus", column: "menu_id"
77
71
  add_foreign_key "mks_auth_menus_user_roles", "mks_auth_user_roles", column: "user_role_id"
78
- add_foreign_key "mks_auth_user_roles", "mks_auth_application_modules", column: "application_module_id"
79
- add_foreign_key "mks_auth_users_application_modules", "mks_auth_application_modules", column: "application_module_id"
80
- add_foreign_key "mks_auth_users_application_modules", "mks_auth_users", column: "user_id"
72
+ add_foreign_key "mks_auth_users", "mks_auth_application_modules", column: "application_module_id"
81
73
  add_foreign_key "mks_auth_users_user_roles", "mks_auth_user_roles", column: "user_role_id"
82
74
  add_foreign_key "mks_auth_users_user_roles", "mks_auth_users", column: "user_id"
83
75
  end