strongmind-auth 1.0.10 → 1.0.11

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f48f262a82aa122f2c2e02f24a80af05e8ddc16c47b03f74e2ae6cd1e75f7b02
4
- data.tar.gz: 178b4506c5e76422842f944e74f4fb24e94785085be8a3fa62699a3d12d1b88c
3
+ metadata.gz: 5744571fb4c34f46eab563a74d0f09ff0da1a5d88be521d785d42bf11537b354
4
+ data.tar.gz: '036694d87a468271a854342b34823357649def9b7ee12fbccbaa9e1384c90a70'
5
5
  SHA512:
6
- metadata.gz: 0fc9d5270f0f4c4f94db091278e00b928c3ba566d1a6eaa0c400ca6aa5b2ed59cbe1bf3169d69ad22906394a9c0a9cfe9195d4e65069cb465db54321eb87edb0
7
- data.tar.gz: 3e3a8968049708aa7cf9db09d2a08387c95c59b92a19f84bdeaf070319ea85e7c3b19eb46160cb6ecc6cfe0acb75d34d244ee451e6dd90afdc3786f054e8812f
6
+ metadata.gz: 56e34ffb177bf0949cf0d8e670dd407e8c554ad88138432054b9bd1439ca989b6d5a020a461c9dc9204b5ead7dd81ef852e89114b7ea2d534dca7c44e6e8d610
7
+ data.tar.gz: 144c638476dabe423587f743b175a49a0e3a325ac64db51af008aab7ef3282e37e0471e99ff7c9698721bd74852e50d246cc7bf75e5fa6f4e5d4a5fc111dbc28
@@ -12,6 +12,9 @@ module StrongMindNav
12
12
  @theme_css = navbar[:theme_css]
13
13
  rescue Strongmind::CommonNavFetcher::TokenNotFoundError, Strongmind::CommonNavFetcher::UserNotFoundError => e
14
14
  Sentry.capture_exception(e)
15
+ Rails.logger.error(e)
16
+ flash[:alert] = e.inspect if Rails.env.development?
17
+ @stop_redirect = true if Rails.env.development?
15
18
  render 'logins/index'
16
19
  rescue Exception => e
17
20
  Sentry.capture_exception(e)
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Users
4
+ class SessionsController < Devise::SessionsController
5
+ skip_before_action :fetch_common_nav
6
+
7
+ def login
8
+ redirect_to user_strongmind_omniauth_authorize_url
9
+ end
10
+
11
+ def new
12
+ redirect_to user_strongmind_omniauth_authorize_url
13
+ end
14
+
15
+ end
16
+ end
@@ -22,13 +22,22 @@
22
22
 
23
23
  // Submit the form on load
24
24
  window.addEventListener("load", (event) => {
25
+ <% if @stop_redirect %>
26
+ return;
27
+ <% end %>
25
28
  submitForm();
26
29
  });
27
30
 
28
31
  </script>
29
32
  <div id="loading">
33
+ <% flash.each do |type, message| %>
34
+ <div class="alert alert-<%= type %>"><%= message %></div>
35
+ <% end %>
36
+ <% flash.clear %>
30
37
  <div class="sm-loader">
31
- <img src="https://prod-backpack-ui.strongmind.com/assets/images/strongmind-loader.svg">
38
+ <% unless @stop_redirect %>
39
+ <img src="https://prod-backpack-ui.strongmind.com/assets/images/strongmind-loader.svg">
40
+ <% end %>
32
41
  </div>
33
42
 
34
43
  </div>
@@ -1,32 +1,129 @@
1
- Your StrongMind identity client does not appear to be configured correctly.
2
- <br/>
3
- Please follow these steps:
4
- <br/>
5
- <br/>
6
1
  <%
7
- app_name = Rails.application.class.name.split("::").first
8
- app_url = ENV['APP_BASE_URL']
9
- stage_url = "https://devlogin.strongmind.com/Clients/Create?ClientID=#{app_name}&RedirectURL=#{app_url}/users/auth/strongmind/callback"
10
- prod_url = "https://login.strongmind.com/Clients/Create?ClientID=#{app_name}&RedirectURL=#{app_url}/users/auth/strongmind/callback"
2
+ require 'json'
3
+
4
+ if Rails.env.development?
5
+ app_name = Rails.application.class.name.split("::").first.underscore.dasherize
6
+ if app_name == "app"
11
7
  %>
8
+ Please set the name of your application in the module line of config/application.rb and restart your server.
9
+ <%
10
+ else
11
+ %>
12
+ <script>
13
+ function toggleInstructions() {
14
+ if (document.getElementById('new_app_yes').checked) {
15
+ document.getElementById('new_app_instructions').style.display = 'block';
16
+ document.getElementById('existing_app_instructions').style.display = 'none';
17
+ } else {
18
+ document.getElementById('new_app_instructions').style.display = 'none';
19
+ document.getElementById('existing_app_instructions').style.display = 'block';
20
+ }
21
+ }
22
+ </script>
23
+ <div>
24
+ Your StrongMind Identity client does not appear to be configured correctly.
25
+ </div>
26
+ <div>
27
+ Is this a brand new app that needs to be setup in StrongMind Identity?
28
+ </div>
29
+ <div class="flex">
30
+ <input type="radio" name="new_app" value="yes" id="new_app_yes" onclick="toggleInstructions()">
31
+ <label for="new_app_yes" style="margin-left: 5px">Yes</label>
32
+ </div>
33
+ <div class="flex">
34
+ <input type="radio" name="new_app" value="no" id="new_app_no" onclick="toggleInstructions()">
35
+ <label for="new_app_no" style="margin-left: 5px">No</label>
36
+ </div>
37
+
38
+ <div id="existing_app_instructions" style="display: none; margin-top: 10px">
39
+ Grab the .env file from Bitwarden and place it in the root of your project. Restart your server.
40
+ </div>
41
+ <div id="new_app_instructions" style="display: none; margin-top: 10px">
42
+ <div>
43
+ Please follow these steps:
44
+ </div>
45
+ <%
46
+ local_app_url = "http://localhost:3000"
47
+ stage_app_url = "https://stage-#{app_name}.strongmind.com"
48
+ prod_app_url = "https://#{app_name}.strongmind.com"
49
+ local_redirect_url = "#{local_app_url}/users/auth/strongmind/callback"
50
+ stage_redirect_url = "#{stage_app_url}/users/auth/strongmind/callback"
51
+ prod_redirect_url = "#{prod_app_url}/users/auth/strongmind/callback"
52
+ stage_post_logout_redirect_url = "https://stage-#{app_name}.strongmind.com"
53
+ prod_post_logout_redirect_url = "https://#{app_name}.strongmind.com"
54
+ stage_backchannel_logout_url = "https://stage-#{app_name}.strongmind.com/users/endsession"
55
+ prod_backchannel_logout_url = "https://#{app_name}.strongmind.com/users/endsession"
56
+
57
+ stage_login_base_url = "https://devlogin.strongmind.com"
58
+ prod_login_base_url = "https://login.strongmind.com"
59
+ stage_secret = SecureRandom.hex(16)
60
+ prod_secret = SecureRandom.hex(16)
61
+ stage_url = "#{stage_login_base_url}/Clients/Create?"
62
+ stage_url += "ClientID=#{app_name}&"
63
+ stage_url += "RedirectURL=#{local_redirect_url}&"
64
+ stage_url += "RedirectURL=#{stage_redirect_url}&"
65
+ stage_url += "PostLogoutRedirectURL=#{stage_post_logout_redirect_url}&"
66
+ stage_url += "BackChannelLogoutUri=#{stage_backchannel_logout_url}&"
67
+ stage_url += "ClientSecret=#{stage_secret}"
68
+
69
+ prod_url = "#{prod_login_base_url}/Clients/Create?"
70
+ prod_url += "ClientID=#{app_name}&"
71
+ prod_url += "RedirectURL=#{prod_redirect_url}&"
72
+ prod_url += "PostLogoutRedirectURL=#{prod_post_logout_redirect_url}&"
73
+ prod_url += "BackChannelLogoutUri=#{prod_backchannel_logout_url}&"
74
+ prod_url += "ClientSecret=#{prod_secret}"
75
+
76
+ env_file_additions = "IDENTITY_CLIENT_ID=#{app_name}\nIDENTITY_CLIENT_SECRET=#{stage_secret}\n# Production\n#IDENTITY_CLIENT_SECRET=#{prod_secret}"
77
+ %>
78
+
79
+ <ol style="list-style: decimal">
80
+ <li>
81
+ <%= link_to "Create Client in Staging Identity Server", stage_url, { target: "_blank" } %>
82
+ </li>
83
+ <li>
84
+ <%= link_to "Create Client in Production Identity Server", prod_url, { target: "_blank" } %>
85
+ </li>
86
+ <li>
87
+ <div>
88
+ Set the following environment variables in your .env file:
89
+ </div>
90
+ <textarea style="width: 100%; height: 200px"><%= env_file_additions %></textarea>
91
+ <br/>
92
+ <button onclick="navigator.clipboard.writeText(document.querySelector('textarea').value)">
93
+ Copy to clipboard
94
+ </button>
95
+ <br/><br/>
96
+ </li>
97
+ <li>
98
+ Save the .env file into a new Bitwarden item called "<%= app_name %> .env"
99
+ </li>
100
+ <li>
101
+ Restart your server.
102
+ </li>
103
+ </ol>
104
+ </div>
105
+ <%
106
+ end
107
+ else %>
108
+ This application is not configured properly.
109
+ <br/>
110
+ Please contact your nearest engineer using a ticket.
111
+ <br/>
112
+
113
+ Provide them this information:
114
+ <%
115
+ info = {
116
+ url: request.url,
117
+ error: request.env['omniauth.error']
118
+ }
119
+ %>
120
+ <textarea style="width: 100%; height: 200px"><%= JSON.pretty_generate(info) %></textarea>
121
+ <!-- copy to clipboard -->
122
+ <button onclick="navigator.clipboard.writeText(document.querySelector('textarea').value)">
123
+ Copy to clipboard
124
+ </button>
12
125
 
13
- <ol style="list-style: decimal">
14
- <li>
15
- <%= link_to "Create Client in Staging Identity Server", stage_url %>
16
- </li>
17
- <li>
18
- <%= link_to "Create Client in Production Identity Server", prod_url %>
19
- </li>
20
- <li>
21
- Set the following environment variables in your .env file:
22
- <br/>
23
- <br/>
24
- <pre>
25
- IDENTITY_CLIENT_ID=<%= app_name %><br/>IDENTITY_CLIENT_SECRET={use the secret you generated for the client}
26
- </pre>
27
-
28
- </li>
29
- <li>
30
- Restart your server.
31
- </li>
32
- </ol>
126
+ <div>
127
+ <%= link_to "Back to Home", "/", data: { turbo: false } %>
128
+ </div>
129
+ <% end %>
data/config/routes.rb CHANGED
@@ -3,7 +3,8 @@ Rails.application.routes.draw do
3
3
  return if defined? Rails::Generators
4
4
 
5
5
  devise_for :users, controllers: {
6
- omniauth_callbacks: "users/omniauth_callbacks"
6
+ omniauth_callbacks: 'users/omniauth_callbacks',
7
+ sessions: 'users/sessions'
7
8
  }
8
9
 
9
10
  devise_scope :user do
@@ -1,5 +1,5 @@
1
1
  module Strongmind
2
2
  module Auth
3
- VERSION = "1.0.10"
3
+ VERSION = "1.0.11"
4
4
  end
5
5
  end
@@ -52,7 +52,10 @@ module Strongmind
52
52
 
53
53
  def token
54
54
  cache_data = Rails.cache.fetch(user.uid)
55
- raise TokenNotFoundError, "Token not found for user #{user.id}" unless cache_data&.key?(:access_token)
55
+ cache_missing_message = " - check your caching settings (switch to file or redis)" if Rails.env.development?
56
+ unless cache_data&.key?(:access_token)
57
+ raise TokenNotFoundError, "Token not found for user #{user.uid}#{cache_missing_message}"
58
+ end
56
59
 
57
60
  cache_data[:access_token]
58
61
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strongmind-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Team Belding
@@ -108,9 +108,10 @@ files:
108
108
  - app/controllers/concerns/strong_mind_nav.rb
109
109
  - app/controllers/logins_controller.rb
110
110
  - app/controllers/users/omniauth_callbacks_controller.rb
111
+ - app/controllers/users/sessions_controller.rb
111
112
  - app/helpers/strongmind/auth/application_helper.rb
112
- - app/jobs/rails/auth/application_job.rb
113
- - app/mailers/rails/auth/application_mailer.rb
113
+ - app/jobs/strongmind/auth/application_job.rb
114
+ - app/mailers/strongmind/auth/application_mailer.rb
114
115
  - app/models/user_base.rb
115
116
  - app/views/layouts/_loading_navbar.html.erb
116
117
  - app/views/logins/index.html.erb