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';
}
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,
};

View File

@@ -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,

View File

@@ -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();

View File

@@ -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 {

View File

@@ -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);