isaca-rails 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +28 -0
- data/Rakefile +102 -0
- data/app/assets/images/isaca/rails/geometric-1920-blue.png +0 -0
- data/app/assets/images/isaca/rails/isaca-logo.png +0 -0
- data/app/assets/javascript/isaca/rails/application.js +13 -0
- data/app/assets/stylesheets/isaca/rails/all.css +46 -0
- data/app/assets/stylesheets/isaca/rails/application.css +15 -0
- data/app/assets/stylesheets/isaca/rails/components/button.css +34 -0
- data/app/assets/stylesheets/isaca/rails/components/container.css +4 -0
- data/app/assets/stylesheets/isaca/rails/components/flash.css +18 -0
- data/app/assets/stylesheets/isaca/rails/components/form-control.css +7 -0
- data/app/assets/stylesheets/isaca/rails/sessions.css +96 -0
- data/app/assets/stylesheets/isaca/rails/user_consent.css +87 -0
- data/app/controllers/isaca/rails/application_controller.rb +5 -0
- data/app/controllers/isaca/rails/platform/administrators_controller.rb +68 -0
- data/app/controllers/isaca/rails/platform/application_controller.rb +10 -0
- data/app/controllers/isaca/rails/platform/claims_controller.rb +34 -0
- data/app/controllers/isaca/rails/sessions_controller.rb +56 -0
- data/app/controllers/isaca/rails/users_consent_controller.rb +24 -0
- data/app/controllers/isaca/rails/welcome_controller.rb +3 -0
- data/app/helpers/isaca/rails/application_helper.rb +48 -0
- data/app/helpers/isaca/rails/claims_helper.rb +13 -0
- data/app/models/session/sign_in/form_object.rb +28 -0
- data/app/models/user_consent/agreement/form_object.rb +33 -0
- data/app/views/isaca/rails/platform/administrators/_administrator.html.erb +6 -0
- data/app/views/isaca/rails/platform/administrators/_claims_form.html.erb +9 -0
- data/app/views/isaca/rails/platform/administrators/edit.html.erb +9 -0
- data/app/views/isaca/rails/platform/administrators/index.html.erb +15 -0
- data/app/views/isaca/rails/platform/administrators/new.html.erb +17 -0
- data/app/views/isaca/rails/platform/administrators/show.html.erb +29 -0
- data/app/views/isaca/rails/sessions/_form.html.erb +15 -0
- data/app/views/isaca/rails/sessions/new.html.erb +28 -0
- data/app/views/isaca/rails/sessions/shared/_links.html.erb +2 -0
- data/app/views/isaca/rails/users_consent/_form.html.erb +50 -0
- data/app/views/isaca/rails/users_consent/show.html.erb +21 -0
- data/app/views/isaca/rails/welcome/index.html.erb +81 -0
- data/app/views/layouts/isaca-rails.html.erb +23 -0
- data/config/application.rb +0 -0
- data/config/locales/isaca-rails.en.yml +25 -0
- data/config/routes.rb +2 -0
- data/lib/generators/isaca/rails/install/USAGE +24 -0
- data/lib/generators/isaca/rails/install/install_generator.rb +148 -0
- data/lib/generators/isaca/rails/install/templates/README +14 -0
- data/lib/generators/isaca/rails/install/templates/add_isaca_claims.rb.erb +10 -0
- data/lib/generators/isaca/rails/install/templates/add_isaca_to_existing_users.rb.erb +17 -0
- data/lib/generators/isaca/rails/install/templates/add_isaca_users.rb.erb +21 -0
- data/lib/generators/isaca/rails/install/templates/claim.rb.erb +13 -0
- data/lib/generators/isaca/rails/install/templates/isaca-rails.rb +4 -0
- data/lib/generators/isaca/rails/install/templates/isaca.rb +5 -0
- data/lib/generators/isaca/rails/install/templates/user.rb.erb +3 -0
- data/lib/isaca/rails/authentication.rb +166 -0
- data/lib/isaca/rails/authorization.rb +51 -0
- data/lib/isaca/rails/controller.rb +14 -0
- data/lib/isaca/rails/engine.rb +7 -0
- data/lib/isaca/rails/user.rb +16 -0
- data/lib/isaca/rails/version.rb +5 -0
- data/lib/isaca/rails.rb +83 -0
- data/lib/tasks/isaca/rails_tasks.rake +4 -0
- metadata +297 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4fc58a462bb708f580b405ac03c4887ad998084af7ae3da74ef6838f21248aa1
|
4
|
+
data.tar.gz: f87613d180701b22ddd6b97a90f1861ac0a1b1f1a450cffd566f99bd269f9d0d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: '09c79205d8fe3382e72be04ea465b09d8058d756b74d43c5e06ec95aa861c474e66d1d8b233bf925a17582e780adc71db58f6764c15d5cb7c242ab463304b02f'
|
7
|
+
data.tar.gz: 7c597de660df4b1cbc72db4757d237342db0527024127d7168a5b609aaa2a3f29a8e72feddacbfe975fee1179e5c35ecc689bb3ef56eb1eff244740ff864013f
|
data/README.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Isaca::Rails
|
2
|
+
Short description and motivation.
|
3
|
+
|
4
|
+
## Usage
|
5
|
+
How to use my plugin.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'isaca-rails'
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
```bash
|
16
|
+
$ bundle
|
17
|
+
```
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
```bash
|
21
|
+
$ gem install isaca-rails
|
22
|
+
```
|
23
|
+
|
24
|
+
## Contributing
|
25
|
+
Contribution directions go here.
|
26
|
+
|
27
|
+
## License
|
28
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'bundler/setup'
|
5
|
+
rescue LoadError
|
6
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rdoc/task'
|
10
|
+
|
11
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
12
|
+
rdoc.rdoc_dir = 'rdoc'
|
13
|
+
rdoc.title = 'Isaca::Rails'
|
14
|
+
rdoc.options << '--line-numbers'
|
15
|
+
rdoc.rdoc_files.include('README.md')
|
16
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
17
|
+
end
|
18
|
+
|
19
|
+
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
|
20
|
+
load 'rails/tasks/engine.rake'
|
21
|
+
|
22
|
+
load 'rails/tasks/statistics.rake'
|
23
|
+
|
24
|
+
require 'bundler/gem_tasks'
|
25
|
+
|
26
|
+
task default: :test
|
27
|
+
|
28
|
+
task :test_once do
|
29
|
+
system "clear" or system "cls"
|
30
|
+
|
31
|
+
puts "Resetting dummy..."
|
32
|
+
Open3.capture2('./script/reset_dummy.sh')
|
33
|
+
puts "Finished resetting dummy..."
|
34
|
+
|
35
|
+
puts "Resetting dummy existing..."
|
36
|
+
Open3.capture2('./script/reset_dummy_existing.sh')
|
37
|
+
puts "Finished resetting dummy existing..."
|
38
|
+
|
39
|
+
puts "Resetting dummy integrated..."
|
40
|
+
Open3.capture2('./script/reset_dummy_integrated.sh')
|
41
|
+
puts "Finished resetting dummy integrated..."
|
42
|
+
|
43
|
+
test_files = Dir.glob('test/**/*_test.rb')
|
44
|
+
test_files.shuffle!
|
45
|
+
|
46
|
+
test_files.each do |filename|
|
47
|
+
cmd = "rake test #{filename}"
|
48
|
+
stdout, err = Open3.capture2("rails test #{cmd}")
|
49
|
+
puts stdout
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
task :test do
|
54
|
+
TEST_ITERATIONS = 10
|
55
|
+
SLEEP_TIME = 10
|
56
|
+
|
57
|
+
while true
|
58
|
+
system "clear" or system "cls"
|
59
|
+
|
60
|
+
puts "Resetting dummy..."
|
61
|
+
Open3.capture2('./script/reset_dummy.sh')
|
62
|
+
puts "Finished resetting dummy..."
|
63
|
+
|
64
|
+
puts "Resetting dummy existing..."
|
65
|
+
Open3.capture2('./script/reset_dummy_existing.sh')
|
66
|
+
puts "Finished resetting dummy existing..."
|
67
|
+
|
68
|
+
puts "Resetting dummy integrated..."
|
69
|
+
Open3.capture2('./script/reset_dummy_integrated.sh')
|
70
|
+
puts "Finished resetting dummy integrated..."
|
71
|
+
|
72
|
+
puts "Dummy applications will be reset after #{TEST_ITERATIONS} test iterations..."
|
73
|
+
|
74
|
+
cmd = 'rake db:test:prepare'
|
75
|
+
stdout, err = Open3.capture2(cmd)
|
76
|
+
|
77
|
+
(1..TEST_ITERATIONS).each do |n|
|
78
|
+
system "clear" or system "cls"
|
79
|
+
|
80
|
+
test_files = Dir.glob('test/**/*_test.rb')
|
81
|
+
test_files.shuffle!
|
82
|
+
|
83
|
+
test_files.each do |filename|
|
84
|
+
cmd = "rake test #{filename}"
|
85
|
+
|
86
|
+
puts "\n\nRunning command: #{cmd}\n"
|
87
|
+
stdout, err = Open3.capture2("rails test #{cmd}")
|
88
|
+
puts stdout
|
89
|
+
end
|
90
|
+
|
91
|
+
puts "Sleeping for #{SLEEP_TIME} seconds..."
|
92
|
+
puts "Dummy applications will be reset after #{TEST_ITERATIONS-n} more iterations..."
|
93
|
+
sleep SLEEP_TIME
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
task :test_file_glob do
|
99
|
+
puts "\nTracked test files...\n\n"
|
100
|
+
puts Dir.glob('test/**/*_test.rb')
|
101
|
+
puts "\n\n"
|
102
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,13 @@
|
|
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, vendor/assets/javascripts,
|
5
|
+
// or any plugin's 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_tree .
|
@@ -0,0 +1,46 @@
|
|
1
|
+
@import url('https://fonts.googleapis.com/css?family=Roboto');
|
2
|
+
|
3
|
+
body.ir-body, html {
|
4
|
+
height: 100%;
|
5
|
+
}
|
6
|
+
|
7
|
+
body.ir-body {
|
8
|
+
font-family: 'Roboto', sans-serif;
|
9
|
+
margin: 0;
|
10
|
+
color: rgb(75,75,75);
|
11
|
+
|
12
|
+
background-image: url(/assets/isaca/rails/geometric-1920-blue.png);
|
13
|
+
background-position: center;
|
14
|
+
background-repeat: no-repeat;
|
15
|
+
background-size: cover;
|
16
|
+
background-attachment: fixed;
|
17
|
+
}
|
18
|
+
|
19
|
+
|
20
|
+
/* Custom, iPhone Retina */
|
21
|
+
@media only screen and (min-width : 320px) {
|
22
|
+
|
23
|
+
}
|
24
|
+
|
25
|
+
/* Extra Small Devices, Phones */
|
26
|
+
@media only screen and (min-width : 480px) {
|
27
|
+
|
28
|
+
}
|
29
|
+
|
30
|
+
/* Small Devices, Tablets */
|
31
|
+
@media only screen and (min-width : 768px) {
|
32
|
+
body.ir-body {
|
33
|
+
background-image: none;
|
34
|
+
}
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
/* Medium Devices, Desktops */
|
39
|
+
@media only screen and (min-width : 992px) {
|
40
|
+
|
41
|
+
}
|
42
|
+
|
43
|
+
/* Large Devices, Wide Screens */
|
44
|
+
@media only screen and (min-width : 1200px) {
|
45
|
+
|
46
|
+
}
|
@@ -0,0 +1,15 @@
|
|
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, vendor/assets/stylesheets,
|
6
|
+
* or any plugin's 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
|
+
*/
|
@@ -0,0 +1,34 @@
|
|
1
|
+
.ir-btn {
|
2
|
+
border: none;
|
3
|
+
box-shadow: 0px 3px 2px rgba(0,0,0,0.9);
|
4
|
+
}
|
5
|
+
|
6
|
+
.ir-btn:hover {
|
7
|
+
cursor: pointer;
|
8
|
+
}
|
9
|
+
|
10
|
+
.ir-btn-primary {
|
11
|
+
color: white;
|
12
|
+
background-color: rgb(164,31,74);
|
13
|
+
box-shadow: 0px 3px 2px rgba(77, 0, 38, 0.9);
|
14
|
+
}
|
15
|
+
|
16
|
+
.ir-btn-primary:hover {
|
17
|
+
background-color: rgb(104, 0, 43);
|
18
|
+
}
|
19
|
+
|
20
|
+
input[type=submit].ir-btn-primary:disabled {
|
21
|
+
cursor: inherit;
|
22
|
+
background-color: rgba(164, 31, 74, 0.25);
|
23
|
+
box-shadow: 0px 3px 2px rgba(77, 0, 38, 0.39);
|
24
|
+
}
|
25
|
+
|
26
|
+
input[type=submit].ir-form-control {
|
27
|
+
width: 100%;
|
28
|
+
}
|
29
|
+
|
30
|
+
input[type=submit].ir-btn-lg {
|
31
|
+
padding: 20px;
|
32
|
+
font-size: 1.2em;
|
33
|
+
}
|
34
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
.ir-flash {
|
2
|
+
border: 1px solid #c9c9c9;
|
3
|
+
background-color: #eaeaea;
|
4
|
+
padding: 5px;
|
5
|
+
margin: 10px 0;
|
6
|
+
}
|
7
|
+
|
8
|
+
.ir-flash.ir-flash-alert {
|
9
|
+
background-color: #f7b4b4;
|
10
|
+
border-color: #d27474;
|
11
|
+
color: #eb4242;
|
12
|
+
}
|
13
|
+
|
14
|
+
.ir-flash.ir-flash-notice {
|
15
|
+
background-color: #a9ddf7;
|
16
|
+
border-color: #32aeec;
|
17
|
+
color: #0d5e87;
|
18
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
.ir-login-container {
|
2
|
+
display: flex;
|
3
|
+
height: 100%;
|
4
|
+
}
|
5
|
+
|
6
|
+
.ir-login-container > main {
|
7
|
+
width: 100%;
|
8
|
+
background-image: url(/assets/isaca/rails/geometric-1920-blue.png);
|
9
|
+
background-position: center;
|
10
|
+
background-repeat: no-repeat;
|
11
|
+
background-size: cover;
|
12
|
+
}
|
13
|
+
|
14
|
+
.ir-login-container > main > .ir-brand {
|
15
|
+
background-color: white;
|
16
|
+
padding-top: 20px;
|
17
|
+
padding-bottom: 20px;
|
18
|
+
border-bottom: 1px solid rgb(75,75,75);
|
19
|
+
}
|
20
|
+
|
21
|
+
.ir-login-container > main > .ir-brand > a > img {
|
22
|
+
height: 50px;
|
23
|
+
display: block;
|
24
|
+
margin: 0 auto;
|
25
|
+
}
|
26
|
+
|
27
|
+
.ir-login-container > aside {
|
28
|
+
display: none;
|
29
|
+
}
|
30
|
+
|
31
|
+
.ir-login-container > main > .ir-form-body {
|
32
|
+
padding: 20px;
|
33
|
+
background-color: white;
|
34
|
+
margin: 10px;
|
35
|
+
margin-top: 20px;
|
36
|
+
box-shadow: 0 3px 3px rgba(0,0,0,0.3);
|
37
|
+
}
|
38
|
+
|
39
|
+
ul.ir-shared-links {
|
40
|
+
list-style: none;
|
41
|
+
padding-left: 0;
|
42
|
+
}
|
43
|
+
|
44
|
+
/* Custom, iPhone Retina */
|
45
|
+
@media only screen and (min-width : 320px) {
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
/* Extra Small Devices, Phones */
|
50
|
+
@media only screen and (min-width : 480px) {
|
51
|
+
|
52
|
+
}
|
53
|
+
|
54
|
+
/* Small Devices, Tablets */
|
55
|
+
@media only screen and (min-width : 768px) {
|
56
|
+
.ir-login-container > main > .ir-brand {
|
57
|
+
border-bottom-color: transparent;
|
58
|
+
}
|
59
|
+
|
60
|
+
.ir-login-container > main > .ir-form-body {
|
61
|
+
background-color: transparent;
|
62
|
+
box-shadow: none;
|
63
|
+
}
|
64
|
+
|
65
|
+
.ir-login-container > main {
|
66
|
+
flex: 5;
|
67
|
+
background-color: #fafafa;
|
68
|
+
background-image: none;
|
69
|
+
border-right: 1px solid rgb(75,75,75);
|
70
|
+
}
|
71
|
+
|
72
|
+
.ir-login-container > aside {
|
73
|
+
display: inherit;
|
74
|
+
background-image: url(/assets/isaca/rails/geometric-1920-blue.png);
|
75
|
+
background-position: center;
|
76
|
+
background-repeat: no-repeat;
|
77
|
+
background-size: cover;
|
78
|
+
flex: 7;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
/* Medium Devices, Desktops */
|
83
|
+
@media only screen and (min-width : 992px) {
|
84
|
+
|
85
|
+
}
|
86
|
+
|
87
|
+
/* Large Devices, Wide Screens */
|
88
|
+
@media only screen and (min-width : 1200px) {
|
89
|
+
.ir-login-container > main {
|
90
|
+
flex: 3;
|
91
|
+
}
|
92
|
+
|
93
|
+
.ir-login-container > aside {
|
94
|
+
flex: 9;
|
95
|
+
}
|
96
|
+
}
|
@@ -0,0 +1,87 @@
|
|
1
|
+
.ir-consent-container {
|
2
|
+
display: flex;
|
3
|
+
}
|
4
|
+
|
5
|
+
.ir-consent-container > main > .ir-brand {
|
6
|
+
background-color: white;
|
7
|
+
padding-top: 20px;
|
8
|
+
padding-bottom: 20px;
|
9
|
+
border-bottom: 1px solid rgb(75,75,75);
|
10
|
+
}
|
11
|
+
|
12
|
+
.ir-consent-container > main > .ir-brand > a > img {
|
13
|
+
height: 50px;
|
14
|
+
display: block;
|
15
|
+
margin: 0 auto;
|
16
|
+
}
|
17
|
+
|
18
|
+
.ir-consent-container > main > .ir-form-body {
|
19
|
+
padding: 20px;
|
20
|
+
background-color: white;
|
21
|
+
margin: 10px;
|
22
|
+
margin-top: 20px;
|
23
|
+
box-shadow: 0 3px 3px rgba(0,0,0,0.3);
|
24
|
+
}
|
25
|
+
|
26
|
+
/* Custom, iPhone Retina */
|
27
|
+
@media only screen and (min-width : 320px) {
|
28
|
+
|
29
|
+
}
|
30
|
+
|
31
|
+
/* Extra Small Devices, Phones */
|
32
|
+
@media only screen and (min-width : 480px) {
|
33
|
+
|
34
|
+
}
|
35
|
+
|
36
|
+
/* Small Devices, Tablets */
|
37
|
+
@media only screen and (min-width : 768px) {
|
38
|
+
.ir-consent-container {
|
39
|
+
height: 100%;
|
40
|
+
}
|
41
|
+
|
42
|
+
.ir-consent-container > main > .ir-brand {
|
43
|
+
border-bottom-color: transparent;
|
44
|
+
}
|
45
|
+
|
46
|
+
.ir-consent-container > main > .ir-brand > img {
|
47
|
+
height: 50px;
|
48
|
+
}
|
49
|
+
|
50
|
+
.ir-consent-container > main {
|
51
|
+
flex: 9;
|
52
|
+
background-color: #fafafa;
|
53
|
+
background-image: none;
|
54
|
+
border-left: 1px solid rgb(75,75,75);
|
55
|
+
height: 100%;
|
56
|
+
}
|
57
|
+
|
58
|
+
.ir-consent-container > aside {
|
59
|
+
display: inherit;
|
60
|
+
background-image: url(/assets/isaca/rails/geometric-1920-blue.png);
|
61
|
+
background-position: center;
|
62
|
+
background-repeat: no-repeat;
|
63
|
+
background-size: cover;
|
64
|
+
flex: 3;
|
65
|
+
}
|
66
|
+
|
67
|
+
.ir-consent-container > main > .ir-form-body {
|
68
|
+
background-color: transparent;
|
69
|
+
box-shadow: none;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
/* Medium Devices, Desktops */
|
74
|
+
@media only screen and (min-width : 992px) {
|
75
|
+
|
76
|
+
}
|
77
|
+
|
78
|
+
/* Large Devices, Wide Screens */
|
79
|
+
@media only screen and (min-width : 1200px) {
|
80
|
+
.ir-consent-container > main {
|
81
|
+
flex: 5;
|
82
|
+
}
|
83
|
+
|
84
|
+
.ir-consent-container > aside {
|
85
|
+
flex: 7;
|
86
|
+
}
|
87
|
+
}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Isaca
|
2
|
+
module Rails
|
3
|
+
module Platform
|
4
|
+
class AdministratorsController < ApplicationController
|
5
|
+
def index
|
6
|
+
@administrators = Isaca::Rails.configuration.user_model.where(admin: true)
|
7
|
+
end
|
8
|
+
|
9
|
+
def edit
|
10
|
+
@administrator = Isaca::Rails.configuration.user_model.find(params[:id])
|
11
|
+
end
|
12
|
+
|
13
|
+
def show
|
14
|
+
@administrator = Isaca::Rails.configuration.user_model.find(params[:id])
|
15
|
+
end
|
16
|
+
|
17
|
+
def create
|
18
|
+
administrator = Isaca::Rails.configuration.user_model.find_by_email(administrator_params[:email])
|
19
|
+
|
20
|
+
if administrator
|
21
|
+
administrator.update_attribute(:admin, true)
|
22
|
+
|
23
|
+
respond_to do |format|
|
24
|
+
format.js
|
25
|
+
format.html do
|
26
|
+
redirect_to administrator_path(administrator), notice: t('isaca.rails.administrators.created')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
else
|
30
|
+
respond_to do |format|
|
31
|
+
format.js
|
32
|
+
format.html do
|
33
|
+
redirect_to new_administrator_path, alert: "#{t('isaca.rails.administrators.email_not_found')} #{administrator_params[:email]}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def destroy
|
40
|
+
administrator = Isaca::Rails.configuration.user_model.find(params[:id])
|
41
|
+
|
42
|
+
if administrator
|
43
|
+
administrator.update_attribute(:admin, false)
|
44
|
+
administrator.claims.destroy_all
|
45
|
+
|
46
|
+
respond_to do |format|
|
47
|
+
format.js
|
48
|
+
format.html do
|
49
|
+
redirect_to administrators_path, notice: t('isaca.rails.administrators.deleted')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
else
|
53
|
+
respond_to do |format|
|
54
|
+
format.js
|
55
|
+
format.html do
|
56
|
+
redirect_to administrators_path, alert: t('isaca.rails.administrators.administrator_not_found')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def administrator_params
|
63
|
+
params.require(:administrator).permit(:email)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Isaca
|
2
|
+
module Rails
|
3
|
+
module Platform
|
4
|
+
class ClaimsController < ApplicationController
|
5
|
+
def create
|
6
|
+
@administrator = Isaca::Rails.configuration.user_model.find(params[:administrator_id])
|
7
|
+
|
8
|
+
# Destroy claims that exist but need to be removed
|
9
|
+
@administrator.claims.where(privilege: claim_symbols(claim_params, :destroyable)).destroy_all
|
10
|
+
|
11
|
+
# Create claims that do not exist but need to be created
|
12
|
+
claim_symbols(claim_params, :creatable).each do |claim|
|
13
|
+
@administrator.claims.create(privilege: claim) unless user_has_privilege?(@administrator, claim)
|
14
|
+
end
|
15
|
+
|
16
|
+
@administrator.reload
|
17
|
+
|
18
|
+
respond_to do |format|
|
19
|
+
format.js
|
20
|
+
format.html do
|
21
|
+
redirect_to administrator_path(@administrator), notice: t('isaca.rails.claims.updated')
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def claim_params
|
29
|
+
params.require(:claims).permit(::Claim.privileges.keys.collect(&:to_sym))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class Isaca::Rails::SessionsController < Isaca::Rails::ApplicationController
|
2
|
+
def new
|
3
|
+
@form_object = Session::SignIn::FormObject.new
|
4
|
+
end
|
5
|
+
|
6
|
+
def create
|
7
|
+
begin
|
8
|
+
authenticate(sign_in_params[:username], sign_in_params[:password])
|
9
|
+
|
10
|
+
respond_to do |format|
|
11
|
+
format.html do
|
12
|
+
flash.notice = t('isaca.rails.sessions.sign_in_success')
|
13
|
+
redirect_after_sign_in_or root_path
|
14
|
+
end
|
15
|
+
|
16
|
+
format.json do
|
17
|
+
render json: current_isaca_user.to_json
|
18
|
+
end
|
19
|
+
end
|
20
|
+
rescue Isaca::ServiceError => e
|
21
|
+
respond_to do |format|
|
22
|
+
format.html do
|
23
|
+
flash.alert = e.message
|
24
|
+
redirect_to sign_in_path
|
25
|
+
end
|
26
|
+
|
27
|
+
format.json do
|
28
|
+
render json: { error: e.message }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def destroy
|
36
|
+
isaca_sign_out
|
37
|
+
|
38
|
+
respond_to do |format|
|
39
|
+
format.html do
|
40
|
+
flash.notice = t('isaca.rails.sessions.sign_out_success')
|
41
|
+
redirect_to root_path
|
42
|
+
end
|
43
|
+
|
44
|
+
format.json do
|
45
|
+
head :ok
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def sign_in_params
|
54
|
+
params.require(:sign_in).permit(:username, :password)
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Isaca::Rails::UsersConsentController < Isaca::Rails::ApplicationController
|
2
|
+
before_action :authenticate_isaca_user
|
3
|
+
|
4
|
+
def show
|
5
|
+
@form_object = UserConsent::Agreement::FormObject.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def create
|
9
|
+
@form_object = UserConsent::Agreement::FormObject.new(agreement_params)
|
10
|
+
|
11
|
+
if @form_object.report_consent(current_isaca_user.imis_id)
|
12
|
+
flash.notice = t('isaca.rails.user_consent.consent_submitted')
|
13
|
+
redirect_after_sign_in_or(root_path)
|
14
|
+
else
|
15
|
+
render :show
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def agreement_params
|
22
|
+
params.require(:agreements).permit(:marketing_policy, :privacy_policy)
|
23
|
+
end
|
24
|
+
end
|