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 +4 -4
- data/app/controllers/concerns/strong_mind_nav.rb +3 -0
- data/app/controllers/users/sessions_controller.rb +16 -0
- data/app/views/logins/index.html.erb +10 -1
- data/app/views/users/omniauth_callbacks/failure.html.erb +126 -29
- data/config/routes.rb +2 -1
- data/lib/strongmind/auth/version.rb +1 -1
- data/lib/strongmind/common_nav_fetcher.rb +4 -1
- metadata +4 -3
- /data/app/jobs/{rails → strongmind}/auth/application_job.rb +0 -0
- /data/app/mailers/{rails → strongmind}/auth/application_mailer.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5744571fb4c34f46eab563a74d0f09ff0da1a5d88be521d785d42bf11537b354
|
4
|
+
data.tar.gz: '036694d87a468271a854342b34823357649def9b7ee12fbccbaa9e1384c90a70'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
<
|
14
|
-
|
15
|
-
|
16
|
-
|
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:
|
6
|
+
omniauth_callbacks: 'users/omniauth_callbacks',
|
7
|
+
sessions: 'users/sessions'
|
7
8
|
}
|
8
9
|
|
9
10
|
devise_scope :user do
|
@@ -52,7 +52,10 @@ module Strongmind
|
|
52
52
|
|
53
53
|
def token
|
54
54
|
cache_data = Rails.cache.fetch(user.uid)
|
55
|
-
|
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.
|
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/
|
113
|
-
- app/mailers/
|
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
|
File without changes
|
File without changes
|