mks_auth 1.0.11 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) 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 -34
  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 -33
  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 -97
  39. data/app/assets/config/mks_auth_manifest.js +0 -2
  40. data/app/assets/javascripts/mks_auth/application.js +0 -13
  41. data/app/assets/stylesheets/mks_auth/application.css +0 -15
  42. data/app/controllers/mks/auth/menus_controller.rb +0 -29
  43. data/app/jobs/mks_auth/application_job.rb +0 -4
  44. data/app/mailers/mks_auth/application_mailer.rb +0 -6
  45. data/db/migrate/20180201104912_create_mks_users_application_modules.rb +0 -12
  46. data/lib/mks/auth/token_auth.rb +0 -19
  47. data/spec/controllers/mks/auth/menus_controller_spec.rb +0 -53
  48. data/spec/controllers/mks/auth/user_roles_controller_spec.rb +0 -129
  49. data/spec/dummy/log/development.log +0 -14698
  50. data/spec/dummy/log/test.log +0 -45920
@@ -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.11'.freeze
3
+ VERSION = '1.4.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: 5432
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