admission 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/admission.gemspec +2 -0
  3. data/lib/admission/version.rb +1 -1
  4. metadata +1 -94
  5. data/examples/rails5_feudalism/.gitignore +0 -19
  6. data/examples/rails5_feudalism/.ruby-version +0 -1
  7. data/examples/rails5_feudalism/Gemfile +0 -52
  8. data/examples/rails5_feudalism/README.md +0 -17
  9. data/examples/rails5_feudalism/Rakefile +0 -6
  10. data/examples/rails5_feudalism/app/assets/config/manifest.js +0 -3
  11. data/examples/rails5_feudalism/app/assets/images/.keep +0 -0
  12. data/examples/rails5_feudalism/app/assets/javascripts/application.js +0 -15
  13. data/examples/rails5_feudalism/app/assets/stylesheets/application.css +0 -15
  14. data/examples/rails5_feudalism/app/assets/stylesheets/scaffolds.scss +0 -84
  15. data/examples/rails5_feudalism/app/controllers/application_controller.rb +0 -13
  16. data/examples/rails5_feudalism/app/controllers/concerns/.keep +0 -0
  17. data/examples/rails5_feudalism/app/controllers/users_controller.rb +0 -75
  18. data/examples/rails5_feudalism/app/helpers/application_helper.rb +0 -2
  19. data/examples/rails5_feudalism/app/jobs/application_job.rb +0 -2
  20. data/examples/rails5_feudalism/app/models/application_record.rb +0 -3
  21. data/examples/rails5_feudalism/app/models/concerns/.keep +0 -0
  22. data/examples/rails5_feudalism/app/models/person.rb +0 -11
  23. data/examples/rails5_feudalism/app/models/possession.rb +0 -7
  24. data/examples/rails5_feudalism/app/models/trait.rb +0 -7
  25. data/examples/rails5_feudalism/app/models/user.rb +0 -17
  26. data/examples/rails5_feudalism/app/models/user_status.rb +0 -140
  27. data/examples/rails5_feudalism/app/views/admission/forbidden.html.erb +0 -14
  28. data/examples/rails5_feudalism/app/views/layouts/application.html.erb +0 -15
  29. data/examples/rails5_feudalism/app/views/users/_form.html.erb +0 -19
  30. data/examples/rails5_feudalism/app/views/users/_privilege_row.html.erb +0 -24
  31. data/examples/rails5_feudalism/app/views/users/_privileges_list.html.erb +0 -51
  32. data/examples/rails5_feudalism/app/views/users/edit.html.erb +0 -6
  33. data/examples/rails5_feudalism/app/views/users/index.html.erb +0 -25
  34. data/examples/rails5_feudalism/app/views/users/new.html.erb +0 -5
  35. data/examples/rails5_feudalism/app/views/users/show.html.erb +0 -4
  36. data/examples/rails5_feudalism/bin/bundle +0 -3
  37. data/examples/rails5_feudalism/bin/rails +0 -9
  38. data/examples/rails5_feudalism/bin/rake +0 -9
  39. data/examples/rails5_feudalism/bin/setup +0 -38
  40. data/examples/rails5_feudalism/bin/spring +0 -17
  41. data/examples/rails5_feudalism/bin/update +0 -29
  42. data/examples/rails5_feudalism/bin/yarn +0 -11
  43. data/examples/rails5_feudalism/config.ru +0 -5
  44. data/examples/rails5_feudalism/config/application.rb +0 -28
  45. data/examples/rails5_feudalism/config/boot.rb +0 -3
  46. data/examples/rails5_feudalism/config/database.yml +0 -85
  47. data/examples/rails5_feudalism/config/environment.rb +0 -5
  48. data/examples/rails5_feudalism/config/environments/development.rb +0 -49
  49. data/examples/rails5_feudalism/config/environments/production.rb +0 -82
  50. data/examples/rails5_feudalism/config/environments/test.rb +0 -36
  51. data/examples/rails5_feudalism/config/initializers/application_controller_renderer.rb +0 -8
  52. data/examples/rails5_feudalism/config/initializers/assets.rb +0 -14
  53. data/examples/rails5_feudalism/config/initializers/backtrace_silencers.rb +0 -7
  54. data/examples/rails5_feudalism/config/initializers/cookies_serializer.rb +0 -5
  55. data/examples/rails5_feudalism/config/initializers/filter_parameter_logging.rb +0 -4
  56. data/examples/rails5_feudalism/config/initializers/inflections.rb +0 -16
  57. data/examples/rails5_feudalism/config/initializers/mime_types.rb +0 -4
  58. data/examples/rails5_feudalism/config/initializers/wrap_parameters.rb +0 -14
  59. data/examples/rails5_feudalism/config/locales/en.yml +0 -33
  60. data/examples/rails5_feudalism/config/puma.rb +0 -56
  61. data/examples/rails5_feudalism/config/routes.rb +0 -8
  62. data/examples/rails5_feudalism/config/secrets.yml +0 -32
  63. data/examples/rails5_feudalism/config/spring.rb +0 -6
  64. data/examples/rails5_feudalism/db/migrate/20171018085629_create_users.rb +0 -9
  65. data/examples/rails5_feudalism/db/migrate/20171019082044_create_people.rb +0 -9
  66. data/examples/rails5_feudalism/db/migrate/20171019082055_create_possessions.rb +0 -9
  67. data/examples/rails5_feudalism/db/migrate/20171019082059_create_traits.rb +0 -9
  68. data/examples/rails5_feudalism/db/schema.rb +0 -49
  69. data/examples/rails5_feudalism/db/seeds.rb +0 -7
  70. data/examples/rails5_feudalism/lib/assets/.keep +0 -0
  71. data/examples/rails5_feudalism/lib/tasks/.keep +0 -0
  72. data/examples/rails5_feudalism/log/.keep +0 -0
  73. data/examples/rails5_feudalism/package.json +0 -7
  74. data/examples/rails5_feudalism/public/404.html +0 -67
  75. data/examples/rails5_feudalism/public/422.html +0 -67
  76. data/examples/rails5_feudalism/public/500.html +0 -66
  77. data/examples/rails5_feudalism/public/apple-touch-icon-precomposed.png +0 -0
  78. data/examples/rails5_feudalism/public/apple-touch-icon.png +0 -0
  79. data/examples/rails5_feudalism/public/favicon.ico +0 -0
  80. data/examples/rails5_feudalism/public/robots.txt +0 -1
  81. data/examples/rails5_feudalism/test/application_system_test_case.rb +0 -5
  82. data/examples/rails5_feudalism/test/controllers/.keep +0 -0
  83. data/examples/rails5_feudalism/test/fixtures/.keep +0 -0
  84. data/examples/rails5_feudalism/test/fixtures/files/.keep +0 -0
  85. data/examples/rails5_feudalism/test/fixtures/people.yml +0 -36
  86. data/examples/rails5_feudalism/test/fixtures/possessions.yml +0 -0
  87. data/examples/rails5_feudalism/test/fixtures/traits.yml +0 -0
  88. data/examples/rails5_feudalism/test/fixtures/users.yml +0 -0
  89. data/examples/rails5_feudalism/test/helpers/.keep +0 -0
  90. data/examples/rails5_feudalism/test/models/.keep +0 -0
  91. data/examples/rails5_feudalism/test/models/user_status/rules_test.rb +0 -152
  92. data/examples/rails5_feudalism/test/models/user_status/user_status_test.rb +0 -50
  93. data/examples/rails5_feudalism/test/system/.keep +0 -0
  94. data/examples/rails5_feudalism/test/test_helper.rb +0 -9
  95. data/examples/rails5_feudalism/tmp/.keep +0 -0
  96. data/examples/rails5_feudalism/vendor/.keep +0 -0
  97. data/examples/rails5_feudalism/yarn.lock +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27226e2614355243e1aba9de00267129fbef0f70
4
- data.tar.gz: f88d58e66dd6c602dd6ba2fe0ae78d6d951c2a36
3
+ metadata.gz: 20107a8f1a93d5d9ec64abc2e1ee29265b037348
4
+ data.tar.gz: fdd7144543447dbdf63ddb2cba2dfdf7e8fcd08f
5
5
  SHA512:
6
- metadata.gz: 0771d53e94477f7e59def1e84f8652d9e825f4d0bcdacd50be7a52185c82a87b65f7d2465abfaab41df43c1abb114d5d7198199d0dcc10ff74cd80bfea5c63aa
7
- data.tar.gz: f6755cb896151dbcd63c80d4d101dab2656b2a39e38011632dcd562bc1abcc9ca9a06f374ce6f7cef0266eb255cbb9aa96075dc0a2b9654ff24249ae5b8fb57b
6
+ metadata.gz: 0700f14541352004ce62e8bbb5ed4c9a552365b3f3ff26cf48ab7d2794fd626f994594d9d7916fdf9f2c117c192fe7bfbab2e1df583b7e21a4af507328524832
7
+ data.tar.gz: e2093f0037baab6c794316b46789a0c40e5274437d2adf9fd1bb77939e837c4ce468302ce50f83379a2bbf71b71bc6a8301f321361aadd6be5a3ad80a0fec7e9
@@ -12,7 +12,9 @@ Gem::Specification.new do |spec|
12
12
  spec.description = 'update-me'
13
13
  spec.email = 'zelazk.o@email.cz'
14
14
 
15
+ ignore_files_regex = %r~^examples~
15
16
  library_files = (`git ls-files -z`).split "\x0"
17
+ library_files.reject!{|f| ignore_files_regex === f}
16
18
  spec.files = library_files
17
19
 
18
20
  end
@@ -1,3 +1,3 @@
1
1
  module Admission
2
- VERSION = '0.4.4'
2
+ VERSION = '0.4.5'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: admission
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - doooby
@@ -25,99 +25,6 @@ files:
25
25
  - admission.gemspec
26
26
  - bin/build
27
27
  - bin/rspec
28
- - examples/rails5_feudalism/.gitignore
29
- - examples/rails5_feudalism/.ruby-version
30
- - examples/rails5_feudalism/Gemfile
31
- - examples/rails5_feudalism/README.md
32
- - examples/rails5_feudalism/Rakefile
33
- - examples/rails5_feudalism/app/assets/config/manifest.js
34
- - examples/rails5_feudalism/app/assets/images/.keep
35
- - examples/rails5_feudalism/app/assets/javascripts/application.js
36
- - examples/rails5_feudalism/app/assets/stylesheets/application.css
37
- - examples/rails5_feudalism/app/assets/stylesheets/scaffolds.scss
38
- - examples/rails5_feudalism/app/controllers/application_controller.rb
39
- - examples/rails5_feudalism/app/controllers/concerns/.keep
40
- - examples/rails5_feudalism/app/controllers/users_controller.rb
41
- - examples/rails5_feudalism/app/helpers/application_helper.rb
42
- - examples/rails5_feudalism/app/jobs/application_job.rb
43
- - examples/rails5_feudalism/app/models/application_record.rb
44
- - examples/rails5_feudalism/app/models/concerns/.keep
45
- - examples/rails5_feudalism/app/models/person.rb
46
- - examples/rails5_feudalism/app/models/possession.rb
47
- - examples/rails5_feudalism/app/models/trait.rb
48
- - examples/rails5_feudalism/app/models/user.rb
49
- - examples/rails5_feudalism/app/models/user_status.rb
50
- - examples/rails5_feudalism/app/views/admission/forbidden.html.erb
51
- - examples/rails5_feudalism/app/views/layouts/application.html.erb
52
- - examples/rails5_feudalism/app/views/users/_form.html.erb
53
- - examples/rails5_feudalism/app/views/users/_privilege_row.html.erb
54
- - examples/rails5_feudalism/app/views/users/_privileges_list.html.erb
55
- - examples/rails5_feudalism/app/views/users/edit.html.erb
56
- - examples/rails5_feudalism/app/views/users/index.html.erb
57
- - examples/rails5_feudalism/app/views/users/new.html.erb
58
- - examples/rails5_feudalism/app/views/users/show.html.erb
59
- - examples/rails5_feudalism/bin/bundle
60
- - examples/rails5_feudalism/bin/rails
61
- - examples/rails5_feudalism/bin/rake
62
- - examples/rails5_feudalism/bin/setup
63
- - examples/rails5_feudalism/bin/spring
64
- - examples/rails5_feudalism/bin/update
65
- - examples/rails5_feudalism/bin/yarn
66
- - examples/rails5_feudalism/config.ru
67
- - examples/rails5_feudalism/config/application.rb
68
- - examples/rails5_feudalism/config/boot.rb
69
- - examples/rails5_feudalism/config/database.yml
70
- - examples/rails5_feudalism/config/environment.rb
71
- - examples/rails5_feudalism/config/environments/development.rb
72
- - examples/rails5_feudalism/config/environments/production.rb
73
- - examples/rails5_feudalism/config/environments/test.rb
74
- - examples/rails5_feudalism/config/initializers/application_controller_renderer.rb
75
- - examples/rails5_feudalism/config/initializers/assets.rb
76
- - examples/rails5_feudalism/config/initializers/backtrace_silencers.rb
77
- - examples/rails5_feudalism/config/initializers/cookies_serializer.rb
78
- - examples/rails5_feudalism/config/initializers/filter_parameter_logging.rb
79
- - examples/rails5_feudalism/config/initializers/inflections.rb
80
- - examples/rails5_feudalism/config/initializers/mime_types.rb
81
- - examples/rails5_feudalism/config/initializers/wrap_parameters.rb
82
- - examples/rails5_feudalism/config/locales/en.yml
83
- - examples/rails5_feudalism/config/puma.rb
84
- - examples/rails5_feudalism/config/routes.rb
85
- - examples/rails5_feudalism/config/secrets.yml
86
- - examples/rails5_feudalism/config/spring.rb
87
- - examples/rails5_feudalism/db/migrate/20171018085629_create_users.rb
88
- - examples/rails5_feudalism/db/migrate/20171019082044_create_people.rb
89
- - examples/rails5_feudalism/db/migrate/20171019082055_create_possessions.rb
90
- - examples/rails5_feudalism/db/migrate/20171019082059_create_traits.rb
91
- - examples/rails5_feudalism/db/schema.rb
92
- - examples/rails5_feudalism/db/seeds.rb
93
- - examples/rails5_feudalism/lib/assets/.keep
94
- - examples/rails5_feudalism/lib/tasks/.keep
95
- - examples/rails5_feudalism/log/.keep
96
- - examples/rails5_feudalism/package.json
97
- - examples/rails5_feudalism/public/404.html
98
- - examples/rails5_feudalism/public/422.html
99
- - examples/rails5_feudalism/public/500.html
100
- - examples/rails5_feudalism/public/apple-touch-icon-precomposed.png
101
- - examples/rails5_feudalism/public/apple-touch-icon.png
102
- - examples/rails5_feudalism/public/favicon.ico
103
- - examples/rails5_feudalism/public/robots.txt
104
- - examples/rails5_feudalism/test/application_system_test_case.rb
105
- - examples/rails5_feudalism/test/controllers/.keep
106
- - examples/rails5_feudalism/test/fixtures/.keep
107
- - examples/rails5_feudalism/test/fixtures/files/.keep
108
- - examples/rails5_feudalism/test/fixtures/people.yml
109
- - examples/rails5_feudalism/test/fixtures/possessions.yml
110
- - examples/rails5_feudalism/test/fixtures/traits.yml
111
- - examples/rails5_feudalism/test/fixtures/users.yml
112
- - examples/rails5_feudalism/test/helpers/.keep
113
- - examples/rails5_feudalism/test/models/.keep
114
- - examples/rails5_feudalism/test/models/user_status/rules_test.rb
115
- - examples/rails5_feudalism/test/models/user_status/user_status_test.rb
116
- - examples/rails5_feudalism/test/system/.keep
117
- - examples/rails5_feudalism/test/test_helper.rb
118
- - examples/rails5_feudalism/tmp/.keep
119
- - examples/rails5_feudalism/vendor/.keep
120
- - examples/rails5_feudalism/yarn.lock
121
28
  - lib/admission.rb
122
29
  - lib/admission/ability.rb
123
30
  - lib/admission/admission.rb
@@ -1,19 +0,0 @@
1
- # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
- #
3
- # If you find yourself ignoring temporary files generated by your text editor
4
- # or operating system, you probably want to add a global ignore instead:
5
- # git config --global core.excludesfile '~/.gitignore_global'
6
-
7
- # Ignore bundler config.
8
- /.bundle
9
-
10
- # Ignore all logfiles and tempfiles.
11
- /log/*
12
- /tmp/*
13
- !/log/.keep
14
- !/tmp/.keep
15
-
16
- /node_modules
17
- /yarn-error.log
18
-
19
- .byebug_history
@@ -1,52 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- git_source(:github) do |repo_name|
4
- repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
5
- "https://github.com/#{repo_name}.git"
6
- end
7
-
8
-
9
- # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
10
- gem 'rails', '~> 5.1.4'
11
- # Use postgresql as the database for Active Record
12
- gem 'pg', '~> 0.18'
13
- # Use Puma as the app server
14
- gem 'puma', '~> 3.7'
15
- # Use SCSS for stylesheets
16
- gem 'sass-rails', '~> 5.0'
17
- # Use Uglifier as compressor for JavaScript assets
18
- gem 'uglifier', '>= 1.3.0'
19
- # See https://github.com/rails/execjs#readme for more supported runtimes
20
- # gem 'therubyracer', platforms: :ruby
21
-
22
- # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
23
- gem 'jbuilder', '~> 2.5'
24
- # Use ActiveModel has_secure_password
25
- # gem 'bcrypt', '~> 3.1.7'
26
-
27
- # Use Capistrano for deployment
28
- # gem 'capistrano-rails', group: :development
29
-
30
- group :development, :test do
31
- # Call 'byebug' anywhere in the code to stop execution and get a debugger console
32
- gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
33
- # Adds support for Capybara system testing and selenium driver
34
- gem 'capybara', '~> 2.13'
35
- gem 'selenium-webdriver'
36
- end
37
-
38
- group :development do
39
- # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
40
- gem 'web-console', '>= 3.3.0'
41
- gem 'listen', '>= 3.0.5', '< 3.2'
42
- # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
43
- gem 'spring'
44
- gem 'spring-watcher-listen', '~> 2.0.0'
45
- end
46
-
47
- # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
48
- gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
49
-
50
-
51
- ########################################################################################################################
52
- gem 'admission', path: File.expand_path('../../..', __FILE__)
@@ -1,17 +0,0 @@
1
- # Admission example: Rails app mimicking the mess of feudalism rules
2
-
3
- ## Goal
4
- Show how to integrate Admission::ResourceArbitration into a rails app, that uses a complex case of privileges system. Each user (person) can have multiple privileges from multiple areas (countries), resulting in situations where one can do something in one area, but not in the other; where a privilege disallow doing a thing only in a single particular area. European feudalism has these wild and complex rules of inheritance, which is perfect to demonstrate how Admission's privileges one-way inheritance system deals with not that truly one-way real-world privilege inheritance system (you could've became a king -a sovereign- over a man to whom you're a vassal, resulting of insolvable situation: who's the lord to whom?).
5
-
6
- ## Integration to Rails
7
- Admission is not meant to be only-rails privilege system. I'd like to include some helpers into the library though. This example then, is actually just a sandbox for me to find out the smoothest integration (controllers helpers, ActiveRecord to save privileges and more).
8
-
9
- ## to-do list
10
- - [x] user privileges persistence
11
- - [x] privileges system (popes, other christian patriarchs, emperors, kings, lords, ...)
12
- - [ ] controller use of `#request!` and `Admission::Denied` handling
13
- - [ ] god mode: status modification and transient admission plug-off
14
- - [ ] nested resources allowance
15
- - [ ] controllers helper for resources
16
- - [ ] view usage of `#can?`
17
- - [ ] model methods and attributes allowance (params permitting?)
@@ -1,6 +0,0 @@
1
- # Add your own tasks in files placed in lib/tasks ending in .rake,
2
- # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
-
4
- require_relative 'config/application'
5
-
6
- Rails.application.load_tasks
@@ -1,3 +0,0 @@
1
- //= link_tree ../images
2
- //= link_directory ../javascripts .js
3
- //= link_directory ../stylesheets .css
@@ -1,15 +0,0 @@
1
- // This is a manifest file that'll be compiled into application.js, which will include all the files
2
- // listed below.
3
- //
4
- // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
5
- // vendor/assets/javascripts directory can be referenced here using a relative path.
6
- //
7
- // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
- //
10
- // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
- // about supported directives.
12
- //
13
- //= require rails-ujs
14
- //= require jquery
15
- //= require_tree .
@@ -1,15 +0,0 @@
1
- /*
2
- * This is a manifest file that'll be compiled into application.css, which will include all the files
3
- * listed below.
4
- *
5
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
6
- * vendor/assets/stylesheets directory can be referenced here using a relative path.
7
- *
8
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
- * files in this directory. Styles in this file should be added after the last require_* statement.
11
- * It is generally better to create a new file per style scope.
12
- *
13
- *= require_tree .
14
- *= require_self
15
- */
@@ -1,84 +0,0 @@
1
- body {
2
- background-color: #fff;
3
- color: #333;
4
- margin: 33px;
5
- font-family: verdana, arial, helvetica, sans-serif;
6
- font-size: 13px;
7
- line-height: 18px;
8
- }
9
-
10
- p, ol, ul, td {
11
- font-family: verdana, arial, helvetica, sans-serif;
12
- font-size: 13px;
13
- line-height: 18px;
14
- }
15
-
16
- pre {
17
- background-color: #eee;
18
- padding: 10px;
19
- font-size: 11px;
20
- }
21
-
22
- a {
23
- color: #000;
24
-
25
- &:visited {
26
- color: #666;
27
- }
28
-
29
- &:hover {
30
- color: #fff;
31
- background-color: #000;
32
- }
33
- }
34
-
35
- th {
36
- padding-bottom: 5px;
37
- }
38
-
39
- td {
40
- padding: 0 5px 7px;
41
- }
42
-
43
- div {
44
- &.field, &.actions {
45
- margin-bottom: 10px;
46
- }
47
- }
48
-
49
- #notice {
50
- color: green;
51
- }
52
-
53
- .field_with_errors {
54
- padding: 2px;
55
- background-color: red;
56
- display: table;
57
- }
58
-
59
- #error_explanation {
60
- width: 450px;
61
- border: 2px solid red;
62
- padding: 7px 7px 0;
63
- margin-bottom: 20px;
64
- background-color: #f0f0f0;
65
-
66
- h2 {
67
- text-align: left;
68
- font-weight: bold;
69
- padding: 5px 5px 5px 15px;
70
- font-size: 12px;
71
- margin: -7px -7px 0;
72
- background-color: #c00;
73
- color: #fff;
74
- }
75
-
76
- ul li {
77
- font-size: 12px;
78
- list-style: square;
79
- }
80
- }
81
-
82
- label {
83
- display: block;
84
- }
@@ -1,13 +0,0 @@
1
- class ApplicationController < ActionController::Base
2
- protect_from_forgery with: :exception
3
-
4
- require 'admission/rails'
5
- include Admission::Rails::ControllerAddon
6
- Admission::Rails.log_access = true
7
-
8
- def request_admission! action, scope
9
- @requested_admission = {action: action, scope: scope}
10
- puts "ADMISSION: #{action} over #{scope}"
11
- end
12
-
13
- end
@@ -1,75 +0,0 @@
1
- class UsersController < ApplicationController
2
-
3
- before_action :set_user, only: %i[show edit update destroy]
4
- before_action :prepare_privilege_params!, only: %i[create update]
5
-
6
- def index
7
- @users = User.all
8
- end
9
-
10
- def show
11
- end
12
-
13
- def new
14
- @user = User.new
15
- end
16
-
17
- def edit
18
- end
19
-
20
- def create
21
- @user = User.new(user_params)
22
-
23
- if @user.save
24
- redirect_to @user, notice: 'User was successfully created.'
25
- else
26
- render :new
27
- end
28
- end
29
-
30
- def update
31
- if @user.update(user_params)
32
- redirect_to @user, notice: 'User was successfully updated.'
33
- else
34
- render :edit
35
- end
36
- end
37
-
38
- def destroy
39
- @user.destroy
40
- redirect_to users_url, notice: 'User was successfully destroyed.'
41
- end
42
-
43
- private
44
- # Use callbacks to share common setup or constraints between actions.
45
- def set_user
46
- @user = User.find(params[:id])
47
- end
48
-
49
- # Never trust parameters from the scary internet, only allow the white list through.
50
- def user_params
51
- params.fetch(:user, {}).permit privileges: {}
52
- end
53
-
54
- def prepare_privilege_params!
55
- return unless params[:user]
56
-
57
- privileges = params[:user][:privileges]
58
- unless privileges
59
- params[:user][:privileges] = nil
60
- return
61
- end
62
-
63
- countries = (privileges[:country].presence || [])
64
- names = privileges[:name].presence || []
65
-
66
- list = countries.zip(names).map do |country, name|
67
- name, level = name.split '-'
68
- UserStatus.privilege_for_country name, level.presence, country
69
- end
70
-
71
- params[:user][:privileges] = UserStatus.dump_privileges list.compact
72
- params[:user][:privileges].permit!
73
- end
74
-
75
- end