1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Allow adminAuth to auto-login users when using passport strategy

Fixes #3467
This commit is contained in:
Nick O'Leary 2022-04-04 21:23:39 +01:00
parent cb88409102
commit b8435efc97
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
2 changed files with 25 additions and 13 deletions

View File

@ -106,9 +106,15 @@ async function login(req,res) {
urlPrefix += "/"; urlPrefix += "/";
} }
response = { response = {
"type":"strategy", "type":"strategy"
"prompts":[{type:"button",label:mergedAdminAuth.strategy.label, url: urlPrefix + "auth/strategy"}]
} }
if (mergedAdminAuth.strategy.autoLogin) {
response.autoLogin = true
response.loginRedirect = urlPrefix + "auth/strategy"
}
response.prompts = [
{type:"button",label:mergedAdminAuth.strategy.label, url: urlPrefix + "auth/strategy"}
]
if (mergedAdminAuth.strategy.icon) { if (mergedAdminAuth.strategy.icon) {
response.prompts[0].icon = mergedAdminAuth.strategy.icon; response.prompts[0].icon = mergedAdminAuth.strategy.icon;
} }

View File

@ -118,13 +118,10 @@ RED.user = (function() {
}); });
} else if (data.type == "strategy") { } else if (data.type == "strategy") {
i = 0;
for (;i<data.prompts.length;i++) {
var field = data.prompts[i];
var sessionMessage = /[?&]session_message=(.*?)(?:$|&)/.exec(window.location.search); var sessionMessage = /[?&]session_message=(.*?)(?:$|&)/.exec(window.location.search);
if (sessionMessage) {
RED.sessionMessages = RED.sessionMessages || []; RED.sessionMessages = RED.sessionMessages || [];
RED.sessionMessages.push(sessionMessage[1]); if (sessionMessage) {
RED.sessionMessages.push(decodeURIComponent(sessionMessage[1]));
if (history.pushState) { if (history.pushState) {
var newurl = window.location.protocol+"//"+window.location.host+window.location.pathname var newurl = window.location.protocol+"//"+window.location.host+window.location.pathname
window.history.replaceState({ path: newurl }, "", newurl); window.history.replaceState({ path: newurl }, "", newurl);
@ -132,6 +129,15 @@ RED.user = (function() {
window.location.search = ""; window.location.search = "";
} }
} }
if (RED.sessionMessages.length === 0 && data.autoLogin) {
document.location = data.loginRedirect
return
}
i = 0;
for (;i<data.prompts.length;i++) {
var field = data.prompts[i];
if (RED.sessionMessages) { if (RED.sessionMessages) {
var sessionMessages = $("<div/>",{class:"form-row",style:"text-align: center"}).appendTo("#node-dialog-login-fields"); var sessionMessages = $("<div/>",{class:"form-row",style:"text-align: center"}).appendTo("#node-dialog-login-fields");
RED.sessionMessages.forEach(function (msg) { RED.sessionMessages.forEach(function (msg) {