diff --git a/packages/api/src/controllers/auth.js b/packages/api/src/controllers/auth.js index df33d4f57..9d326abd5 100644 --- a/packages/api/src/controllers/auth.js +++ b/packages/api/src/controllers/auth.js @@ -74,7 +74,7 @@ module.exports = { async login(params) { const { login, password } = params; - if (process.env.AD_URL && process.env.AD_BASEDN) { + if (process.env.AD_URL) { const adConfig = { url: process.env.AD_URL, baseDN: process.env.AD_BASEDN, diff --git a/packages/api/src/controllers/config.js b/packages/api/src/controllers/config.js index 8b59609dc..f6a3c8bd9 100644 --- a/packages/api/src/controllers/config.js +++ b/packages/api/src/controllers/config.js @@ -41,6 +41,7 @@ module.exports = { permissions, login, oauth: process.env.OAUTH_AUTH, + isLoginForm: !!process.env.AD_URL || (!!logins && !process.env.BASIC_AUTH), ...currentVersion, }; }, diff --git a/packages/web/src/clientAuth.ts b/packages/web/src/clientAuth.ts index 5b9a304a9..af8a6511f 100644 --- a/packages/web/src/clientAuth.ts +++ b/packages/web/src/clientAuth.ts @@ -33,7 +33,7 @@ export function handleOauthCallback() { } export async function handleAuthOnStartup(config) { - if (config.oauth) { + if (config.oauth || config.isLoginForm) { if (localStorage.getItem('accessToken')) { return; } @@ -45,12 +45,20 @@ export async function handleAuthOnStartup(config) { export async function redirectToLogin(config = null) { if (!config) config = await getConfig(); - const state = `dbg-oauth:${Math.random().toString().substr(2)}`; - sessionStorage.setItem('oauthState', state); - console.log('Redirecting to OAUTH provider'); - location.replace( - `${config.oauth}?client_id=dbgate&response_type=code&redirect_uri=${encodeURIComponent( - location.origin + location.pathname - )}&state=${encodeURIComponent(state)}` - ); + if (config.isLoginForm) { + const index = location.pathname.lastIndexOf('/'); + const loginPath = index >= 0 ? location.pathname.substring(0, index) + '/?page=login' : '/?page=login'; + location.replace(loginPath); + } + + if (config.oauth) { + const state = `dbg-oauth:${Math.random().toString().substr(2)}`; + sessionStorage.setItem('oauthState', state); + console.log('Redirecting to OAUTH provider'); + location.replace( + `${config.oauth}?client_id=dbgate&response_type=code&redirect_uri=${encodeURIComponent( + location.origin + location.pathname + )}&state=${encodeURIComponent(state)}` + ); + } }