getAuthProvider

This commit is contained in:
Jan Prochazka
2024-07-26 14:17:33 +02:00
parent 6a942a5058
commit 83e15ede5c
5 changed files with 23 additions and 12 deletions

View File

@@ -178,7 +178,7 @@ function detectEnvAuthProvider() {
return 'none'; return 'none';
} }
function createAuthProvider() { function createEnvAuthProvider() {
const authProvider = detectEnvAuthProvider(); const authProvider = detectEnvAuthProvider();
switch (authProvider) { switch (authProvider) {
case 'oauth': case 'oauth':
@@ -192,7 +192,18 @@ function createAuthProvider() {
} }
} }
let authProvider = createEnvAuthProvider();
function getAuthProvider() {
return authProvider;
}
function setAuthProvider(value) {
authProvider = value;
}
module.exports = { module.exports = {
detectEnvAuthProvider, detectEnvAuthProvider,
createAuthProvider, getAuthProvider,
setAuthProvider,
}; };

View File

@@ -5,7 +5,7 @@ const { getLogger } = require('dbgate-tools');
const AD = require('activedirectory2').promiseWrapper; const AD = require('activedirectory2').promiseWrapper;
const crypto = require('crypto'); const crypto = require('crypto');
const { getTokenSecret, getTokenLifetime } = require('../auth/authCommon'); const { getTokenSecret, getTokenLifetime } = require('../auth/authCommon');
const { createAuthProvider } = require('../auth/authProvider'); const { getAuthProvider } = require('../auth/authProvider');
const { create } = require('lodash'); const { create } = require('lodash');
const logger = getLogger('auth'); const logger = getLogger('auth');
@@ -23,7 +23,7 @@ function unauthorizedResponse(req, res, text) {
function authMiddleware(req, res, next) { function authMiddleware(req, res, next) {
const SKIP_AUTH_PATHS = ['/config/get', '/auth/oauth-token', '/auth/login', '/stream']; const SKIP_AUTH_PATHS = ['/config/get', '/auth/oauth-token', '/auth/login', '/stream'];
if (!createAuthProvider().shouldAuthorizeApi()) { if (!getAuthProvider().shouldAuthorizeApi()) {
return next(); return next();
} }
let skipAuth = !!SKIP_AUTH_PATHS.find(x => req.path == getExpressPath(x)); let skipAuth = !!SKIP_AUTH_PATHS.find(x => req.path == getExpressPath(x));
@@ -54,13 +54,13 @@ function authMiddleware(req, res, next) {
module.exports = { module.exports = {
oauthToken_meta: true, oauthToken_meta: true,
async oauthToken(params) { async oauthToken(params) {
return createAuthProvider().oauthToken(params); return getAuthProvider().oauthToken(params);
}, },
login_meta: true, login_meta: true,
async login(params) { async login(params) {
const { login, password } = params; const { login, password } = params;
return createAuthProvider().login(login, password); return getAuthProvider().login(login, password);
}, },
authMiddleware, authMiddleware,

View File

@@ -11,7 +11,7 @@ const AsyncLock = require('async-lock');
const currentVersion = require('../currentVersion'); const currentVersion = require('../currentVersion');
const platformInfo = require('../utility/platformInfo'); const platformInfo = require('../utility/platformInfo');
const connections = require('../controllers/connections'); const connections = require('../controllers/connections');
const { createAuthProvider } = require('../auth/authProvider'); const { getAuthProvider } = require('../auth/authProvider');
const lock = new AsyncLock(); const lock = new AsyncLock();
@@ -28,7 +28,7 @@ module.exports = {
get_meta: true, get_meta: true,
async get(_params, req) { async get(_params, req) {
const authProvider = createAuthProvider(); const authProvider = getAuthProvider();
const login = authProvider.getCurrentLogin(req); const login = authProvider.getCurrentLogin(req);
const permissions = authProvider.getCurrentPermissions(req); const permissions = authProvider.getCurrentPermissions(req);
const isLoginForm = authProvider.isLoginForm(); const isLoginForm = authProvider.isLoginForm();

View File

@@ -34,7 +34,7 @@ const platformInfo = require('./utility/platformInfo');
const getExpressPath = require('./utility/getExpressPath'); const getExpressPath = require('./utility/getExpressPath');
const _ = require('lodash'); const _ = require('lodash');
const { getLogger } = require('dbgate-tools'); const { getLogger } = require('dbgate-tools');
const { createAuthProvider } = require('./auth/authProvider'); const { getAuthProvider } = require('./auth/authProvider');
const logger = getLogger('main'); const logger = getLogger('main');
@@ -48,7 +48,7 @@ function start() {
if (process.env.BASIC_AUTH) { if (process.env.BASIC_AUTH) {
async function authorizer(username, password, cb) { async function authorizer(username, password, cb) {
try { try {
const resp = await createAuthProvider().login(username, password); const resp = await getAuthProvider().login(username, password);
if (resp.accessToken) { if (resp.accessToken) {
cb(null, true); cb(null, true);
} else { } else {

View File

@@ -1,6 +1,6 @@
const { compilePermissions, testPermission } = require('dbgate-tools'); const { compilePermissions, testPermission } = require('dbgate-tools');
const _ = require('lodash'); const _ = require('lodash');
const { createAuthProvider } = require('../auth/authProvider'); const { getAuthProvider } = require('../auth/authProvider');
const cachedPermissions = {}; const cachedPermissions = {};
@@ -10,7 +10,7 @@ function hasPermission(tested, req) {
return true; return true;
} }
const permissions = createAuthProvider().getCurrentPermissions(req); const permissions = getAuthProvider().getCurrentPermissions(req);
if (!cachedPermissions[permissions]) { if (!cachedPermissions[permissions]) {
cachedPermissions[permissions] = compilePermissions(permissions); cachedPermissions[permissions] = compilePermissions(permissions);