onelogin 1.7.0 → 1.8.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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/README.md +46 -5
  4. data/examples/Gemfile.lock +15 -11
  5. data/examples/events-to-csv.rb +5 -4
  6. data/lib/onelogin/api/apiexception.rb +3 -0
  7. data/lib/onelogin/api/client.rb +30 -1
  8. data/lib/onelogin/api/cursor.rb +5 -2
  9. data/lib/onelogin/version.rb +1 -1
  10. data/onelogin.gemspec +2 -2
  11. metadata +4 -110
  12. data/.travis.yml +0 -6
  13. data/examples/rails-custom-login-page/.gitignore +0 -45
  14. data/examples/rails-custom-login-page/.ruby-version +0 -1
  15. data/examples/rails-custom-login-page/Gemfile +0 -57
  16. data/examples/rails-custom-login-page/Gemfile.lock +0 -212
  17. data/examples/rails-custom-login-page/README.md +0 -137
  18. data/examples/rails-custom-login-page/Rakefile +0 -6
  19. data/examples/rails-custom-login-page/app/assets/config/manifest.js +0 -3
  20. data/examples/rails-custom-login-page/app/assets/images/.keep +0 -0
  21. data/examples/rails-custom-login-page/app/assets/javascripts/application.js +0 -18
  22. data/examples/rails-custom-login-page/app/assets/javascripts/cable.js +0 -13
  23. data/examples/rails-custom-login-page/app/assets/javascripts/channels/.keep +0 -0
  24. data/examples/rails-custom-login-page/app/assets/javascripts/dashboard.coffee +0 -3
  25. data/examples/rails-custom-login-page/app/assets/javascripts/home.coffee +0 -3
  26. data/examples/rails-custom-login-page/app/assets/javascripts/sessions.coffee +0 -3
  27. data/examples/rails-custom-login-page/app/assets/stylesheets/application.css +0 -15
  28. data/examples/rails-custom-login-page/app/assets/stylesheets/dashboard.scss +0 -3
  29. data/examples/rails-custom-login-page/app/assets/stylesheets/home.scss +0 -3
  30. data/examples/rails-custom-login-page/app/assets/stylesheets/sessions.scss +0 -3
  31. data/examples/rails-custom-login-page/app/channels/application_cable/channel.rb +0 -4
  32. data/examples/rails-custom-login-page/app/channels/application_cable/connection.rb +0 -4
  33. data/examples/rails-custom-login-page/app/controllers/application_controller.rb +0 -23
  34. data/examples/rails-custom-login-page/app/controllers/concerns/.keep +0 -0
  35. data/examples/rails-custom-login-page/app/controllers/dashboard_controller.rb +0 -10
  36. data/examples/rails-custom-login-page/app/controllers/home_controller.rb +0 -5
  37. data/examples/rails-custom-login-page/app/controllers/sessions_controller.rb +0 -46
  38. data/examples/rails-custom-login-page/app/controllers/users_controller.rb +0 -120
  39. data/examples/rails-custom-login-page/app/helpers/application_helper.rb +0 -2
  40. data/examples/rails-custom-login-page/app/helpers/dashboard_helper.rb +0 -28
  41. data/examples/rails-custom-login-page/app/helpers/home_helper.rb +0 -2
  42. data/examples/rails-custom-login-page/app/helpers/sessions_helper.rb +0 -87
  43. data/examples/rails-custom-login-page/app/helpers/users_helper.rb +0 -3
  44. data/examples/rails-custom-login-page/app/jobs/application_job.rb +0 -2
  45. data/examples/rails-custom-login-page/app/mailers/application_mailer.rb +0 -4
  46. data/examples/rails-custom-login-page/app/models/application_record.rb +0 -3
  47. data/examples/rails-custom-login-page/app/models/concerns/.keep +0 -0
  48. data/examples/rails-custom-login-page/app/views/dashboard/index.html.erb +0 -43
  49. data/examples/rails-custom-login-page/app/views/home/index.html.erb +0 -272
  50. data/examples/rails-custom-login-page/app/views/layouts/application.html.erb +0 -31
  51. data/examples/rails-custom-login-page/app/views/layouts/mailer.html.erb +0 -13
  52. data/examples/rails-custom-login-page/app/views/layouts/mailer.text.erb +0 -1
  53. data/examples/rails-custom-login-page/app/views/users/_form.html.erb +0 -1
  54. data/examples/rails-custom-login-page/app/views/users/_user.json.jbuilder +0 -2
  55. data/examples/rails-custom-login-page/app/views/users/edit.html.erb +0 -33
  56. data/examples/rails-custom-login-page/app/views/users/index.html.erb +0 -33
  57. data/examples/rails-custom-login-page/app/views/users/index.json.jbuilder +0 -1
  58. data/examples/rails-custom-login-page/app/views/users/new.html.erb +0 -60
  59. data/examples/rails-custom-login-page/app/views/users/onboard.html.erb +0 -54
  60. data/examples/rails-custom-login-page/app/views/users/show.html.erb +0 -17
  61. data/examples/rails-custom-login-page/app/views/users/show.json.jbuilder +0 -1
  62. data/examples/rails-custom-login-page/bin/bundle +0 -3
  63. data/examples/rails-custom-login-page/bin/rails +0 -9
  64. data/examples/rails-custom-login-page/bin/rake +0 -9
  65. data/examples/rails-custom-login-page/bin/setup +0 -38
  66. data/examples/rails-custom-login-page/bin/spring +0 -17
  67. data/examples/rails-custom-login-page/bin/update +0 -29
  68. data/examples/rails-custom-login-page/bin/yarn +0 -11
  69. data/examples/rails-custom-login-page/config/application.rb +0 -18
  70. data/examples/rails-custom-login-page/config/boot.rb +0 -3
  71. data/examples/rails-custom-login-page/config/cable.yml +0 -10
  72. data/examples/rails-custom-login-page/config/database.yml +0 -25
  73. data/examples/rails-custom-login-page/config/environment.rb +0 -5
  74. data/examples/rails-custom-login-page/config/environments/development.rb +0 -54
  75. data/examples/rails-custom-login-page/config/environments/production.rb +0 -91
  76. data/examples/rails-custom-login-page/config/environments/test.rb +0 -42
  77. data/examples/rails-custom-login-page/config/initializers/application_controller_renderer.rb +0 -8
  78. data/examples/rails-custom-login-page/config/initializers/assets.rb +0 -14
  79. data/examples/rails-custom-login-page/config/initializers/backtrace_silencers.rb +0 -7
  80. data/examples/rails-custom-login-page/config/initializers/cookies_serializer.rb +0 -5
  81. data/examples/rails-custom-login-page/config/initializers/filter_parameter_logging.rb +0 -4
  82. data/examples/rails-custom-login-page/config/initializers/inflections.rb +0 -16
  83. data/examples/rails-custom-login-page/config/initializers/mime_types.rb +0 -4
  84. data/examples/rails-custom-login-page/config/initializers/onelogin.rb +0 -6
  85. data/examples/rails-custom-login-page/config/initializers/wrap_parameters.rb +0 -14
  86. data/examples/rails-custom-login-page/config/locales/en.yml +0 -33
  87. data/examples/rails-custom-login-page/config/puma.rb +0 -56
  88. data/examples/rails-custom-login-page/config/routes.rb +0 -23
  89. data/examples/rails-custom-login-page/config/secrets.yml.sample +0 -38
  90. data/examples/rails-custom-login-page/config/spring.rb +0 -6
  91. data/examples/rails-custom-login-page/config.ru +0 -5
  92. data/examples/rails-custom-login-page/db/seeds.rb +0 -7
  93. data/examples/rails-custom-login-page/lib/assets/.keep +0 -0
  94. data/examples/rails-custom-login-page/lib/tasks/.keep +0 -0
  95. data/examples/rails-custom-login-page/package.json +0 -5
  96. data/examples/rails-custom-login-page/public/404.html +0 -67
  97. data/examples/rails-custom-login-page/public/422.html +0 -67
  98. data/examples/rails-custom-login-page/public/500.html +0 -66
  99. data/examples/rails-custom-login-page/public/apple-touch-icon-precomposed.png +0 -0
  100. data/examples/rails-custom-login-page/public/apple-touch-icon.png +0 -0
  101. data/examples/rails-custom-login-page/public/favicon.ico +0 -0
  102. data/examples/rails-custom-login-page/public/robots.txt +0 -1
  103. data/examples/rails-custom-login-page/test/application_system_test_case.rb +0 -5
  104. data/examples/rails-custom-login-page/test/controllers/.keep +0 -0
  105. data/examples/rails-custom-login-page/test/controllers/dashboard_controller_test.rb +0 -9
  106. data/examples/rails-custom-login-page/test/controllers/home_controller_test.rb +0 -9
  107. data/examples/rails-custom-login-page/test/controllers/sessions_controller_test.rb +0 -7
  108. data/examples/rails-custom-login-page/test/controllers/users_controller_test.rb +0 -48
  109. data/examples/rails-custom-login-page/test/fixtures/.keep +0 -0
  110. data/examples/rails-custom-login-page/test/fixtures/files/.keep +0 -0
  111. data/examples/rails-custom-login-page/test/helpers/.keep +0 -0
  112. data/examples/rails-custom-login-page/test/integration/.keep +0 -0
  113. data/examples/rails-custom-login-page/test/mailers/.keep +0 -0
  114. data/examples/rails-custom-login-page/test/models/.keep +0 -0
  115. data/examples/rails-custom-login-page/test/system/.keep +0 -0
  116. data/examples/rails-custom-login-page/test/test_helper.rb +0 -9
  117. data/examples/rails-custom-login-page/vendor/.keep +0 -0
@@ -1,212 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- actioncable (5.1.5)
5
- actionpack (= 5.1.5)
6
- nio4r (~> 2.0)
7
- websocket-driver (~> 0.6.1)
8
- actionmailer (5.1.5)
9
- actionpack (= 5.1.5)
10
- actionview (= 5.1.5)
11
- activejob (= 5.1.5)
12
- mail (~> 2.5, >= 2.5.4)
13
- rails-dom-testing (~> 2.0)
14
- actionpack (5.1.5)
15
- actionview (= 5.1.5)
16
- activesupport (= 5.1.5)
17
- rack (~> 2.0)
18
- rack-test (>= 0.6.3)
19
- rails-dom-testing (~> 2.0)
20
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
21
- actionview (5.1.5)
22
- activesupport (= 5.1.5)
23
- builder (~> 3.1)
24
- erubi (~> 1.4)
25
- rails-dom-testing (~> 2.0)
26
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
27
- activejob (5.1.5)
28
- activesupport (= 5.1.5)
29
- globalid (>= 0.3.6)
30
- activemodel (5.1.5)
31
- activesupport (= 5.1.5)
32
- activerecord (5.1.5)
33
- activemodel (= 5.1.5)
34
- activesupport (= 5.1.5)
35
- arel (~> 8.0)
36
- activesupport (5.1.5)
37
- concurrent-ruby (~> 1.0, >= 1.0.2)
38
- i18n (~> 0.7)
39
- minitest (~> 5.1)
40
- tzinfo (~> 1.1)
41
- addressable (2.5.2)
42
- public_suffix (>= 2.0.2, < 4.0)
43
- arel (8.0.0)
44
- bindex (0.5.0)
45
- builder (3.2.3)
46
- byebug (10.0.1)
47
- capybara (2.18.0)
48
- addressable
49
- mini_mime (>= 0.1.3)
50
- nokogiri (>= 1.3.3)
51
- rack (>= 1.0.0)
52
- rack-test (>= 0.5.4)
53
- xpath (>= 2.0, < 4.0)
54
- childprocess (0.9.0)
55
- ffi (~> 1.0, >= 1.0.11)
56
- coffee-rails (4.2.2)
57
- coffee-script (>= 2.2.0)
58
- railties (>= 4.0.0)
59
- coffee-script (2.4.1)
60
- coffee-script-source
61
- execjs
62
- coffee-script-source (1.12.2)
63
- concurrent-ruby (1.1.5)
64
- crass (1.0.5)
65
- erubi (1.7.1)
66
- execjs (2.7.0)
67
- ffi (1.11.1)
68
- globalid (0.4.1)
69
- activesupport (>= 4.2.0)
70
- httparty (0.18.1)
71
- mime-types (~> 3.0)
72
- multi_xml (>= 0.5.2)
73
- i18n (0.9.5)
74
- concurrent-ruby (~> 1.0)
75
- jbuilder (2.7.0)
76
- activesupport (>= 4.2.0)
77
- multi_json (>= 1.2)
78
- jquery-rails (4.3.1)
79
- rails-dom-testing (>= 1, < 3)
80
- railties (>= 4.2.0)
81
- thor (>= 0.14, < 2.0)
82
- listen (3.1.5)
83
- rb-fsevent (~> 0.9, >= 0.9.4)
84
- rb-inotify (~> 0.9, >= 0.9.7)
85
- ruby_dep (~> 1.2)
86
- loofah (2.3.1)
87
- crass (~> 1.0.2)
88
- nokogiri (>= 1.5.9)
89
- mail (2.7.0)
90
- mini_mime (>= 0.1.1)
91
- method_source (0.9.0)
92
- mime-types (3.3.1)
93
- mime-types-data (~> 3.2015)
94
- mime-types-data (3.2020.1104)
95
- mini_mime (1.0.0)
96
- mini_portile2 (2.4.0)
97
- minitest (5.11.3)
98
- multi_json (1.13.1)
99
- multi_xml (0.6.0)
100
- nio4r (2.3.0)
101
- nokogiri (1.10.4)
102
- mini_portile2 (~> 2.4.0)
103
- onelogin (1.6.0)
104
- httparty (>= 0.13.7)
105
- nokogiri (>= 1.6.3.1)
106
- public_suffix (3.0.2)
107
- puma (3.12.2)
108
- rack (2.0.8)
109
- rack-test (0.8.3)
110
- rack (>= 1.0, < 3)
111
- rails (5.1.5)
112
- actioncable (= 5.1.5)
113
- actionmailer (= 5.1.5)
114
- actionpack (= 5.1.5)
115
- actionview (= 5.1.5)
116
- activejob (= 5.1.5)
117
- activemodel (= 5.1.5)
118
- activerecord (= 5.1.5)
119
- activesupport (= 5.1.5)
120
- bundler (>= 1.3.0)
121
- railties (= 5.1.5)
122
- sprockets-rails (>= 2.0.0)
123
- rails-dom-testing (2.0.3)
124
- activesupport (>= 4.2.0)
125
- nokogiri (>= 1.6)
126
- rails-html-sanitizer (1.0.4)
127
- loofah (~> 2.2, >= 2.2.2)
128
- railties (5.1.5)
129
- actionpack (= 5.1.5)
130
- activesupport (= 5.1.5)
131
- method_source
132
- rake (>= 0.8.7)
133
- thor (>= 0.18.1, < 2.0)
134
- rake (12.3.1)
135
- rb-fsevent (0.10.3)
136
- rb-inotify (0.9.10)
137
- ffi (>= 0.5.0, < 2)
138
- ruby_dep (1.5.0)
139
- rubyzip (1.3.0)
140
- sass (3.5.5)
141
- sass-listen (~> 4.0.0)
142
- sass-listen (4.0.0)
143
- rb-fsevent (~> 0.9, >= 0.9.4)
144
- rb-inotify (~> 0.9, >= 0.9.7)
145
- sass-rails (5.0.7)
146
- railties (>= 4.0.0, < 6)
147
- sass (~> 3.1)
148
- sprockets (>= 2.8, < 4.0)
149
- sprockets-rails (>= 2.0, < 4.0)
150
- tilt (>= 1.1, < 3)
151
- selenium-webdriver (3.11.0)
152
- childprocess (~> 0.5)
153
- rubyzip (~> 1.2)
154
- spring (2.0.2)
155
- activesupport (>= 4.2)
156
- spring-watcher-listen (2.0.1)
157
- listen (>= 2.7, < 4.0)
158
- spring (>= 1.2, < 3.0)
159
- sprockets (3.7.2)
160
- concurrent-ruby (~> 1.0)
161
- rack (> 1, < 3)
162
- sprockets-rails (3.2.1)
163
- actionpack (>= 4.0)
164
- activesupport (>= 4.0)
165
- sprockets (>= 3.0.0)
166
- sqlite3 (1.3.13)
167
- thor (0.20.0)
168
- thread_safe (0.3.6)
169
- tilt (2.0.8)
170
- turbolinks (5.1.0)
171
- turbolinks-source (~> 5.1)
172
- turbolinks-source (5.1.0)
173
- tzinfo (1.2.5)
174
- thread_safe (~> 0.1)
175
- uglifier (4.1.8)
176
- execjs (>= 0.3.0, < 3)
177
- web-console (3.5.1)
178
- actionview (>= 5.0)
179
- activemodel (>= 5.0)
180
- bindex (>= 0.4.0)
181
- railties (>= 5.0)
182
- websocket-driver (0.6.5)
183
- websocket-extensions (>= 0.1.0)
184
- websocket-extensions (0.1.3)
185
- xpath (3.0.0)
186
- nokogiri (~> 1.8)
187
-
188
- PLATFORMS
189
- ruby
190
-
191
- DEPENDENCIES
192
- byebug
193
- capybara (~> 2.13)
194
- coffee-rails (~> 4.2)
195
- jbuilder (~> 2.5)
196
- jquery-rails
197
- listen (>= 3.0.5, < 3.2)
198
- onelogin (~> 1.5.0)
199
- puma (~> 3.12)
200
- rails (~> 5.1.4)
201
- sass-rails (~> 5.0)
202
- selenium-webdriver
203
- spring
204
- spring-watcher-listen (~> 2.0.0)
205
- sqlite3
206
- turbolinks (~> 5)
207
- tzinfo-data
208
- uglifier (>= 1.3.0)
209
- web-console (>= 3.3.0)
210
-
211
- BUNDLED WITH
212
- 1.17.3
@@ -1,137 +0,0 @@
1
- # Customized Login Page
2
-
3
- This sample is a default [Ruby on Rails 5](http://rubyonrails.org/) app that makes use of the OneLogin ruby sdk for authenticating users.
4
-
5
- It is the recommended approach when building a customized login flow where you want complete control
6
- over the look &amp; feel.
7
-
8
- The downside to this approach is that you have to implement MFA and password resets etc yourself. However we do have the APIs for these actions available and have demonstrated how to use them in this app.
9
-
10
- If you want a standards based, out of the box way to authenticate users then we recommend you use [our OpenId Connect implementation](https://github.com/onelogin/onelogin-oidc-ruby).
11
-
12
- ## Get Started
13
-
14
- The sample tries to keep everything as simple as possible so only
15
- implements
16
- * Login - Authenticate users in a single request to OneLogin with out any redirects
17
- * MFA - Does MFA verification if required
18
- * Password Reset with user verification via MFA
19
- * Self sign Up / Create a new user
20
- * Onboard / Activate a user
21
- * User Apps - List apps available to a user and provides SSO links
22
- * User Roles - Lists a users roles
23
- * Logout - destroying the local session and revoking the token at OneLogin
24
-
25
- In order to run this sample you need API credentials for a OneLogin account. If you don't have a OneLogin developer account [you can sign up here](https://www.onelogin.com/developer-signup).
26
-
27
- 1. Clone this repo
28
-
29
- ```sh
30
- git clone https://github.com/onelogin/onelogin-ruby-sdk.git
31
- ```
32
-
33
- 2. Move to the rails example and install the required gems
34
- ```sh
35
- cd onelogin-ruby-sdk/examples/rails-custom-login-page && bundle install
36
- ```
37
-
38
- 3. Rename `config/secrets.yml.sample` to `config/secrets.yml` and update with your OneLogin API credentials, region and subdomain.
39
-
40
- If you are using a custom domain instance, set it
41
- in order to be used for the login demo.
42
-
43
- If you want to set the cookie via post-form set
44
- COOKIE_VIA_POST_FORM to true, otherwise the cookie
45
- will be set via javascript via the makeCors method
46
- described later.
47
-
48
- ```yaml
49
- development:
50
- secret_key_base: xxx
51
- ONELOGIN_CLIENT_ID: xxx
52
- ONELOGIN_CLIENT_SECRET: xxx
53
- ONELOGIN_REGION: us
54
- ONELOGIN_SUBDOMAIN: xxx
55
- CUSTOM_DOMAIN: xxx
56
- COOKIE_VIA_POST_FORM: true
57
- ```
58
- 4. Run the sample and browse to `http://localhost:3000`
59
- ```sh
60
- rails s
61
- ```
62
-
63
- The `/dashboard` route renders a protected page to prove the authentication works and creates a session. You will need to be authenticated to view it. If you are not authenticate you will be redirected back to the login page.
64
-
65
- ### Authenticate the user
66
-
67
- *helpers/sessions_helper.rb*
68
- ```ruby
69
- response = api_client.create_session_login_token({
70
- 'username_or_email' => username,
71
- 'password' => password,
72
- 'subdomain' => ONELOGIN_SUBDOMAIN,
73
- },
74
- request.base_url # included for CORS session cookie request
75
- )
76
- ```
77
-
78
- ### Verify MFA
79
-
80
- *helpers/sessions_helper.rb*
81
- ```ruby
82
- response = api_client.get_session_token_verified(
83
- device_id,
84
- session[:state_token],
85
- otp_token,
86
- request.base_url
87
- )
88
- ```
89
-
90
- ### Destroy the session
91
-
92
- *helpers/sessions_helper.rb*
93
- ```ruby
94
- api_client.log_user_out(current_user_id)
95
- session.delete(:user)
96
- ```
97
-
98
- ### Make CORS request to establish SSO session
99
-
100
- Using the `session_token` returned from the `session_controller` after a new login or successful MFA verification.
101
-
102
- *views/home/index.html.erb*
103
- ```javascript
104
- function makeCors(session_token) {
105
- var xhr = new XMLHttpRequest();
106
- xhr.withCredentials = true;
107
- method = "POST";
108
- var url = "https://" + ONELOGIN_SUBDOMAIN + ".onelogin.com/session_via_api_token";
109
- // var url = "https://" + CUSTOM_DOMAIN + "/session_via_api_token";
110
- xhr.open(method, url, true);
111
- xhr.setRequestHeader("Content-Type", "application/json");
112
- body = {"session_token": session_token};
113
- xhr.send(JSON.stringify(body));
114
- };
115
- ```
116
-
117
- ### Make form-based request to establish SSO session
118
- ```html
119
- <!doctype html>
120
- <html>
121
- <head>
122
- <meta charset="utf-8">
123
- </head>
124
- <body>
125
- <p>Auth API Test</p>
126
- <form action=
127
- "https://{onelogin_instance}/session_via_api_token" method="POST">
128
- <input type="hidden" name="session_token" value="{your session token value}">
129
- <input type="submit" placeholder="GO">
130
- <input id="auth_token" type="hidden">
131
- </form>
132
- </body>
133
- </html>
134
-
135
- where onelogin_instance is a custom domain or
136
- {subdomain}.onelogin.com
137
- ```
@@ -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,18 +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 turbolinks
15
- //= require_tree .
16
- //= require jquery
17
- //= require jquery_ujs
18
-
@@ -1,13 +0,0 @@
1
- // Action Cable provides the framework to deal with WebSockets in Rails.
2
- // You can generate new channels where WebSocket features live using the `rails generate channel` command.
3
- //
4
- //= require action_cable
5
- //= require_self
6
- //= require_tree ./channels
7
-
8
- (function() {
9
- this.App || (this.App = {});
10
-
11
- App.cable = ActionCable.createConsumer();
12
-
13
- }).call(this);
@@ -1,3 +0,0 @@
1
- # Place all the behaviors and hooks related to the matching controller here.
2
- # All this logic will automatically be available in application.js.
3
- # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -1,3 +0,0 @@
1
- # Place all the behaviors and hooks related to the matching controller here.
2
- # All this logic will automatically be available in application.js.
3
- # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -1,3 +0,0 @@
1
- # Place all the behaviors and hooks related to the matching controller here.
2
- # All this logic will automatically be available in application.js.
3
- # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -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,3 +0,0 @@
1
- // Place all the styles related to the Dashboard controller here.
2
- // They will automatically be included in application.css.
3
- // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -1,3 +0,0 @@
1
- // Place all the styles related to the Home controller here.
2
- // They will automatically be included in application.css.
3
- // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -1,3 +0,0 @@
1
- // Place all the styles related to the Sessions controller here.
2
- // They will automatically be included in application.css.
3
- // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -1,4 +0,0 @@
1
- module ApplicationCable
2
- class Channel < ActionCable::Channel::Base
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module ApplicationCable
2
- class Connection < ActionCable::Connection::Base
3
- end
4
- end
@@ -1,23 +0,0 @@
1
- require 'onelogin'
2
-
3
- class ApplicationController < ActionController::Base
4
- protect_from_forgery with: :exception
5
- include SessionsHelper
6
-
7
- def require_current_user
8
- if current_user
9
- return true
10
- else
11
- redirect_to root_url, error: "Please sign in."
12
- return false
13
- end
14
- end
15
-
16
- def api_client
17
- @api_client ||= OneLogin::Api::Client.new(
18
- client_id: ONELOGIN_CLIENT_ID,
19
- client_secret: ONELOGIN_CLIENT_SECRET,
20
- region: ONELOGIN_REGION
21
- )
22
- end
23
- end
@@ -1,10 +0,0 @@
1
- class DashboardController < ApplicationController
2
- include DashboardHelper
3
-
4
- before_action :require_current_user
5
-
6
- def index
7
- @apps = user_apps
8
- @roles = user_roles
9
- end
10
- end
@@ -1,5 +0,0 @@
1
- class HomeController < ApplicationController
2
- def index
3
- redirect_to "/dashboard" if session["user"]
4
- end
5
- end
@@ -1,46 +0,0 @@
1
- class SessionsController < ApplicationController
2
- def new
3
- response = log_in(params['username'], params['password'])
4
- status = response[:error] ? :unauthorized : :ok
5
-
6
- render json: response, status: status
7
- end
8
-
9
- def verify
10
- response = verify_mfa(params['device_id'], params['otp_token'])
11
- status = response ? :ok : :unauthorized
12
-
13
- render json: response, status: status
14
- end
15
-
16
- # Checks for user and gets MFA devices
17
- # available to verify token before
18
- # password reset is completed
19
- def forgot_password
20
- user = validate_user(params['forgot_username'])
21
-
22
- devices = get_mfa_devices(user.id)
23
-
24
- status = user ? :ok : :not_found
25
-
26
- render json: devices, status: status
27
- end
28
-
29
- # Verify MFA token and then update password
30
- def reset_password
31
- if verify_token(params['reset_device_id'], params['reset_otp_token'])
32
- status = :ok
33
- response = set_password(session[:user_id], params['new_password'])
34
- else
35
- status = :unauthorized
36
- response = 'Invalid token'
37
- end
38
-
39
- render json: response, status: status
40
- end
41
-
42
- def destroy
43
- log_out
44
- redirect_to root_url
45
- end
46
- end
@@ -1,120 +0,0 @@
1
- class UsersController < ApplicationController
2
-
3
- before_action :require_current_user, except: [:new, :create, :onboard, :activate]
4
- before_action :set_user, only: [:show, :edit, :update, :destroy]
5
-
6
- # GET /users
7
- # GET /users.json
8
- def index
9
- @users = api_client.get_users.take(25) # only fetch the first 50 users
10
- end
11
-
12
- # GET /users/1
13
- # GET /users/1.json
14
- def show
15
- end
16
-
17
- # GET /users/new
18
- def new
19
- end
20
-
21
- # GET /users/1/edit
22
- def edit
23
- end
24
-
25
- # POST /users
26
- # POST /users.json
27
- def create
28
- # Create a user
29
- user = api_client.create_user(user_params)
30
- # Update custom attributes
31
- api_client.set_custom_attribute_to_user(user.id, custom_user_params)
32
- # Set status to unactivated
33
- api_client.update_user(user.id, status: 0)
34
-
35
- if api_client.error
36
- puts api_client.error_description
37
- end
38
-
39
- redirect_to onboard_path, notice: 'User has been created with status set to unactivated'
40
- end
41
-
42
- # GET /onboard
43
- def onboard
44
- end
45
-
46
- # POST /activate
47
- def activate
48
- # Search for a user with this email address
49
- @user = api_client.get_users(email: user_params[:email]).first
50
-
51
- unless @user && verify_dob && verify_ssn
52
- return redirect_to onboard_path, notice: "User #{user_params[:email]} was not verified"
53
- end
54
-
55
- # Update password
56
- unless api_client.set_password_using_clear_text(@user.id, user_params[:password], user_params[:password])
57
- return redirect_to onboard_path, notice: "Password update failed. #{api_client.error_description}"
58
- end
59
-
60
- # Activate user
61
- api_client.update_user(@user.id, status: 1)
62
-
63
- # Redirect to login page
64
- redirect_to home_index_path
65
- end
66
-
67
- # Verify dob and ssn match
68
- def verify_ssn
69
- @user.custom_attributes["custom_ssn"].eql? (custom_user_params[:custom_ssn])
70
- end
71
-
72
- def verify_dob
73
- @user.custom_attributes["custom_dob"].eql? (custom_user_params[:custom_dob])
74
- end
75
-
76
- # PATCH/PUT /users/1
77
- # PATCH/PUT /users/1.json
78
- def update
79
- # update the user
80
- api_client.update_user(params[:id], user_params)
81
-
82
- # update custom attributes
83
- api_client.set_custom_attribute_to_user(params[:id], custom_user_params)
84
-
85
- respond_to do |format|
86
- unless api_client.error
87
- format.html { redirect_to user_path(params[:id]), notice: 'User was successfully updated.' }
88
- format.json { render :show, status: :ok, location: @user }
89
- else
90
- format.html { render :edit }
91
- format.json { render json: @user.errors, status: :unprocessable_entity }
92
- end
93
- end
94
- end
95
-
96
- # DELETE /users/1
97
- # DELETE /users/1.json
98
- def destroy
99
- @user.destroy
100
- respond_to do |format|
101
- format.html { redirect_to users_url, notice: 'User was successfully destroyed.' }
102
- format.json { head :no_content }
103
- end
104
- end
105
-
106
- private
107
-
108
- def set_user
109
- @user = api_client.get_user(params[:id])
110
- end
111
-
112
- # Never trust parameters from the scary internet, only allow the white list through.
113
- def user_params
114
- params.permit(:firstname, :lastname, :email, :phone, :username, :password)
115
- end
116
-
117
- def custom_user_params
118
- params.permit(:custom_field, :custom_dob, :custom_ssn)
119
- end
120
- end
@@ -1,2 +0,0 @@
1
- module ApplicationHelper
2
- end