add user backend documentation

This commit is contained in:
Arthur Lu 2024-04-04 18:53:36 +00:00
parent 69318a2dad
commit 9d31e00366

View File

@ -17,7 +17,7 @@ export default async () => {
backends[name] = new Backend(config); backends[name] = new Backend(config);
console.log(`backends: initialized backend ${name} from ${importPath}`); console.log(`backends: initialized backend ${name} from ${importPath}`);
} }
// assign backends to handlers depending // assign backends to handlers by type
const handlers = global.config.handlers; const handlers = global.config.handlers;
global.pve = backends[handlers.pve]; global.pve = backends[handlers.pve];
global.db = backends[handlers.db]; global.db = backends[handlers.db];
@ -34,8 +34,8 @@ export default async () => {
class BACKEND { class BACKEND {
/** /**
* Opens a session with the backend and creates session tokens if needed * Opens a session with the backend and creates session tokens if needed
* @param {Object} credentials object containing username and password fields * @param {{username: string, password: string}} credentials object containing username and password fields
* @returns {Object} response like object with ok, status, and list of session token objects with token name and value * @returns {{ok: boolean, status: number, cookies: {name: string, value: string}[]}} response like object with list of session token objects with token name and value
*/ */
openSession (credentials) { openSession (credentials) {
return { return {
@ -47,8 +47,8 @@ class BACKEND {
/** /**
* Closes an opened session with the backend if needed * Closes an opened session with the backend if needed
* @param {Object[]} token list of session token objects with token name and value, may include irrelevant tokens for a specific backend * @param {{name: string, value: string}[]} token list of session token objects with token name and value, may include irrelevant tokens for a specific backend
* @returns {Boolean} true if session was closed successfully, false otherwise * @returns {boolean} true if session was closed successfully, false otherwise
*/ */
closeSession (tokens) { closeSession (tokens) {
return { return {
@ -63,18 +63,74 @@ class BACKEND {
* Not all backends need to implement all interface methods. * Not all backends need to implement all interface methods.
*/ */
class USER_BACKEND extends BACKEND { class USER_BACKEND extends BACKEND {
addUser (username, attributes, params = null) {} /**
getUser (username, params = null) {} * Add user to backend
setUser (username, attributes, params = null) {} * @param {{id: string, realm: string}} user
deluser (username, params = null) {} * @param {Object} attributes user attributes
* @param {Object} params authentication params, usually req.cookies
*/
addUser (user, attributes, params = null) {}
/**
* Get user from backend
* @param {{id: string, realm: string}} user
* @param {Object} params authentication params, usually req.cookies
*/
getUser (user, params = null) {}
/**
* Modify user in backend
* @param {{id: string, realm: string}} user
* @param {Object} attributes new user attributes to modify
* @param {Object} params authentication params, usually req.cookies
*/
setUser (user, attributes, params = null) {}
/**
* Delete user from backend
* @param {{id: string, realm: string}} user
* @param {Object} params authentication params, usually req.cookies
*/
deluser (user, params = null) {}
addGroup (groupname, attributes, params = null) {} /**
getGroup (groupname, params = null) {} * Add group to backend
setGroup (groupname, attributes, params = null) {} * @param {{id: string}} group
delGroup (groupname, params = null) {} * @param {Object} attributes group attributes
* @param {Object} params authentication params, usually req.cookies
*/
addGroup (group, attributes, params = null) {}
/**
* Get group from backend
* @param {{id: string}} group
* @param {Object} params authentication params, usually req.cookies
*/
getGroup (group, params = null) {}
/**
* Modify group in backend
* @param {{id: string}} group
* @param {Object} attributes new group attributes to modify
* @param {Object} params authentication params, usually req.cookies
*/
setGroup (group, attributes, params = null) {}
/**
* Delete group from backend
* @param {{id: string}} group
* @param {Object} params authentication params, usually req.cookies
*/
delGroup (group, params = null) {}
addUserToGroup (username, groupname, params = null) {} /**
delUserFromGroup (username, groupname, params = null) {} * Add user to group
* @param {{id: string, realm: string}} user
* @param {{id: string}} group
* @param {Object} params authentication params, usually req.cookies
*/
addUserToGroup (user, group, params = null) {}
/**
* Remove user from group
* @param {{id: string, realm: string}} user
* @param {{id: string}} group
* @param {Object} params authentication params, usually req.cookies
*/
delUserFromGroup (user, group, params = null) {}
} }
/** /**