major rework of backend loading and usage:
- split config from user data to config.json, add config.hson.template - moved default user data localdb to root folder - moved pve, localdb, ldap backend handlers to backends sub folder - add dynamic loading of all backends - add dynamic mapping for auth backends to support multiple auth sources - update affected endpoints
This commit is contained in:
28
src/backends/backends.js
Normal file
28
src/backends/backends.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import path from "path";
|
||||
import url from "url";
|
||||
|
||||
export default async () => {
|
||||
const backends = {};
|
||||
for (const name in global.config.backends) {
|
||||
// get files and config
|
||||
const target = global.config.backends[name].import;
|
||||
const config = global.config.backends[name].config;
|
||||
// get import path
|
||||
const thisPath = path.dirname(url.fileURLToPath(import.meta.url));
|
||||
const fromPath = path.relative(".", path.dirname(url.fileURLToPath(import.meta.url)));
|
||||
const targetPath = path.relative(".", `${fromPath}/${target}`);
|
||||
const importPath = `./${path.relative(thisPath, targetPath)}`;
|
||||
// import and add to list of imported handlers
|
||||
const Backend = (await import(importPath)).default;
|
||||
backends[name] = new Backend(config);
|
||||
console.log(`backends: initialized backend ${name} from ${importPath}`);
|
||||
}
|
||||
// assign backends to handlers depending
|
||||
const handlers = global.config.handlers;
|
||||
global.pve = backends[handlers.pve];
|
||||
global.db = backends[handlers.db];
|
||||
global.auth = handlers.auth;
|
||||
Object.keys(global.auth).forEach((e) => {
|
||||
global.auth[e] = backends[global.auth[e]];
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user