diff --git a/packages/api/src/auth/authProvider.js b/packages/api/src/auth/authProvider.js index fa1d71459..7af8d0079 100644 --- a/packages/api/src/auth/authProvider.js +++ b/packages/api/src/auth/authProvider.js @@ -178,7 +178,7 @@ function detectEnvAuthProvider() { return 'none'; } -function createAuthProvider() { +function createEnvAuthProvider() { const authProvider = detectEnvAuthProvider(); switch (authProvider) { case 'oauth': @@ -192,7 +192,18 @@ function createAuthProvider() { } } +let authProvider = createEnvAuthProvider(); + +function getAuthProvider() { + return authProvider; +} + +function setAuthProvider(value) { + authProvider = value; +} + module.exports = { detectEnvAuthProvider, - createAuthProvider, + getAuthProvider, + setAuthProvider, }; diff --git a/packages/api/src/controllers/auth.js b/packages/api/src/controllers/auth.js index 16f7e59e1..a5732b29a 100644 --- a/packages/api/src/controllers/auth.js +++ b/packages/api/src/controllers/auth.js @@ -5,7 +5,7 @@ const { getLogger } = require('dbgate-tools'); const AD = require('activedirectory2').promiseWrapper; const crypto = require('crypto'); const { getTokenSecret, getTokenLifetime } = require('../auth/authCommon'); -const { createAuthProvider } = require('../auth/authProvider'); +const { getAuthProvider } = require('../auth/authProvider'); const { create } = require('lodash'); const logger = getLogger('auth'); @@ -23,7 +23,7 @@ function unauthorizedResponse(req, res, text) { function authMiddleware(req, res, next) { const SKIP_AUTH_PATHS = ['/config/get', '/auth/oauth-token', '/auth/login', '/stream']; - if (!createAuthProvider().shouldAuthorizeApi()) { + if (!getAuthProvider().shouldAuthorizeApi()) { return next(); } let skipAuth = !!SKIP_AUTH_PATHS.find(x => req.path == getExpressPath(x)); @@ -54,13 +54,13 @@ function authMiddleware(req, res, next) { module.exports = { oauthToken_meta: true, async oauthToken(params) { - return createAuthProvider().oauthToken(params); + return getAuthProvider().oauthToken(params); }, login_meta: true, async login(params) { const { login, password } = params; - return createAuthProvider().login(login, password); + return getAuthProvider().login(login, password); }, authMiddleware, diff --git a/packages/api/src/controllers/config.js b/packages/api/src/controllers/config.js index 6fcb55eb6..2a1d28fdf 100644 --- a/packages/api/src/controllers/config.js +++ b/packages/api/src/controllers/config.js @@ -11,7 +11,7 @@ const AsyncLock = require('async-lock'); const currentVersion = require('../currentVersion'); const platformInfo = require('../utility/platformInfo'); const connections = require('../controllers/connections'); -const { createAuthProvider } = require('../auth/authProvider'); +const { getAuthProvider } = require('../auth/authProvider'); const lock = new AsyncLock(); @@ -28,7 +28,7 @@ module.exports = { get_meta: true, async get(_params, req) { - const authProvider = createAuthProvider(); + const authProvider = getAuthProvider(); const login = authProvider.getCurrentLogin(req); const permissions = authProvider.getCurrentPermissions(req); const isLoginForm = authProvider.isLoginForm(); diff --git a/packages/api/src/main.js b/packages/api/src/main.js index 659c3f7d7..731d882ae 100644 --- a/packages/api/src/main.js +++ b/packages/api/src/main.js @@ -34,7 +34,7 @@ const platformInfo = require('./utility/platformInfo'); const getExpressPath = require('./utility/getExpressPath'); const _ = require('lodash'); const { getLogger } = require('dbgate-tools'); -const { createAuthProvider } = require('./auth/authProvider'); +const { getAuthProvider } = require('./auth/authProvider'); const logger = getLogger('main'); @@ -48,7 +48,7 @@ function start() { if (process.env.BASIC_AUTH) { async function authorizer(username, password, cb) { try { - const resp = await createAuthProvider().login(username, password); + const resp = await getAuthProvider().login(username, password); if (resp.accessToken) { cb(null, true); } else { diff --git a/packages/api/src/utility/hasPermission.js b/packages/api/src/utility/hasPermission.js index 2dcc36a9d..1d6b63abf 100644 --- a/packages/api/src/utility/hasPermission.js +++ b/packages/api/src/utility/hasPermission.js @@ -1,6 +1,6 @@ const { compilePermissions, testPermission } = require('dbgate-tools'); const _ = require('lodash'); -const { createAuthProvider } = require('../auth/authProvider'); +const { getAuthProvider } = require('../auth/authProvider'); const cachedPermissions = {}; @@ -10,7 +10,7 @@ function hasPermission(tested, req) { return true; } - const permissions = createAuthProvider().getCurrentPermissions(req); + const permissions = getAuthProvider().getCurrentPermissions(req); if (!cachedPermissions[permissions]) { cachedPermissions[permissions] = compilePermissions(permissions);