This commit is contained in:
Benjamin Toby
2024-12-06 12:55:03 +01:00
parent 34868ee0cf
commit 8a8257d17e
48 changed files with 360 additions and 221 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
declare function _exports({ userId }: {
declare function _exports({ userId, useLocal }: {
userId: number | string;
useLocal?: boolean;
}): Promise<any>;
export = _exports;
@@ -5,6 +5,7 @@ const DB_HANDLER = require("../../utils/backend/global-db/DB_HANDLER");
const NO_DB_HANDLER = require("../../utils/backend/global-db/NO_DB_HANDLER");
const addDbEntry = require("./db/addDbEntry");
const encrypt = require("../dsql/encrypt");
const LOCAL_DB_HANDLER = require("../../utils/backend/global-db/LOCAL_DB_HANDLER");
/**
* # Add Mariadb User
@@ -13,10 +14,11 @@ const encrypt = require("../dsql/encrypt");
*
* @param {object} params - parameters object *
* @param {number | string} params.userId - invited user object
* @param {boolean} [params.useLocal]
*
* @returns {Promise<any>} new user auth object payload
*/
module.exports = async function addMariadbUser({ userId }) {
module.exports = async function addMariadbUser({ userId, useLocal }) {
try {
const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1";
@@ -30,14 +32,20 @@ module.exports = async function addMariadbUser({ userId }) {
});
const encryptedPassword = encrypt({ data: password });
await NO_DB_HANDLER(
`CREATE USER IF NOT EXISTS '${username}'@'127.0.0.1' IDENTIFIED BY '${password}' REQUIRE SSL`
);
const createMariadbUsersQuery = `CREATE USER IF NOT EXISTS '${username}'@'127.0.0.1' IDENTIFIED BY '${password}' REQUIRE SSL`;
const updateUser = await DB_HANDLER(
`UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1', mariadb_pass = ? WHERE id = ?`,
[username, encryptedPassword, userId]
);
if (useLocal) {
await LOCAL_DB_HANDLER(createMariadbUsersQuery);
} else {
await NO_DB_HANDLER(createMariadbUsersQuery);
}
const updateUserQuery = `UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1', mariadb_pass = ? WHERE id = ?`;
const updateUserValues = [username, encryptedPassword, userId];
const updateUser = useLocal
? await LOCAL_DB_HANDLER(updateUserQuery, updateUserValues)
: await DB_HANDLER(updateUserQuery, updateUserValues);
const addMariadbUser = await addDbEntry({
tableName: "mariadb_users",
@@ -50,6 +58,7 @@ module.exports = async function addMariadbUser({ userId }) {
grants: '[{"database":"*","table":"*","privileges":["ALL"]}]',
},
dbContext: "Master",
useLocal,
});
console.log(`User ${userId} SQL credentials successfully added.`);
+2 -1
View File
@@ -1,5 +1,6 @@
declare function _exports({ userId, database }: {
declare function _exports({ userId, database, useLocal, }: {
userId: number;
database: string;
useLocal?: boolean;
}): Promise<any>;
export = _exports;
@@ -9,6 +9,7 @@ const { default: grabUserSchemaData } = require("./grabUserSchemaData");
const { default: setUserSchemaData } = require("./setUserSchemaData");
const addDbEntry = require("./db/addDbEntry");
const createDbFromSchema = require("../../shell/createDbFromSchema");
const LOCAL_DB_HANDLER = require("../../utils/backend/global-db/LOCAL_DB_HANDLER");
/**
* # Add User Table to Database
@@ -16,10 +17,15 @@ const createDbFromSchema = require("../../shell/createDbFromSchema");
* @param {object} params
* @param {number} params.userId - user id
* @param {string} params.database
* @param {boolean} [params.useLocal]
*
* @returns {Promise<any>} new user auth object payload
*/
module.exports = async function addUsersTableToDb({ userId, database }) {
module.exports = async function addUsersTableToDb({
userId,
database,
useLocal,
}) {
/**
* Initialize
*
@@ -59,10 +65,15 @@ module.exports = async function addUsersTableToDb({ userId, database }) {
setUserSchemaData({ schemaData: userSchemaData, userId });
const targetDb = await DB_HANDLER(
`SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`,
[userId, database]
);
const targetDb = useLocal
? await LOCAL_DB_HANDLER(
`SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`,
[userId, database]
)
: await DB_HANDLER(
`SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`,
[userId, database]
);
if (targetDb && targetDb[0]) {
const newTableEntry = await addDbEntry({
@@ -75,6 +86,7 @@ module.exports = async function addUsersTableToDb({ userId, database }) {
table_name: "Users",
table_slug: "users",
},
useLocal,
});
}
+3 -1
View File
@@ -19,10 +19,11 @@ export = addDbEntry;
* @param {boolean} [params.update] - Update this row if it exists
* @param {string} [params.encryptionKey] - Update this row if it exists
* @param {string} [params.encryptionSalt] - Update this row if it exists
* @param {boolean} [params.useLocal]
*
* @returns {Promise<any>}
*/
declare function addDbEntry({ dbContext, paradigm, dbFullName, tableName, data, tableSchema, duplicateColumnName, duplicateColumnValue, update, encryptionKey, encryptionSalt, }: {
declare function addDbEntry({ dbContext, paradigm, dbFullName, tableName, data, tableSchema, duplicateColumnName, duplicateColumnValue, update, encryptionKey, encryptionSalt, useLocal, }: {
dbContext?: ("Master" | "Dsql User");
paradigm?: ("Read Only" | "Full Access");
dbFullName?: string;
@@ -34,4 +35,5 @@ declare function addDbEntry({ dbContext, paradigm, dbFullName, tableName, data,
update?: boolean;
encryptionKey?: string;
encryptionSalt?: string;
useLocal?: boolean;
}): Promise<any>;
@@ -8,6 +8,7 @@ const _ = require("lodash");
const DB_HANDLER = require("../../../utils/backend/global-db/DB_HANDLER");
const DSQL_USER_DB_HANDLER = require("../../../utils/backend/global-db/DSQL_USER_DB_HANDLER");
const encrypt = require("../../dsql/encrypt");
const LOCAL_DB_HANDLER = require("../../../utils/backend/global-db/LOCAL_DB_HANDLER");
/**
* Add a db Entry Function
@@ -29,6 +30,7 @@ const encrypt = require("../../dsql/encrypt");
* @param {boolean} [params.update] - Update this row if it exists
* @param {string} [params.encryptionKey] - Update this row if it exists
* @param {string} [params.encryptionSalt] - Update this row if it exists
* @param {boolean} [params.useLocal]
*
* @returns {Promise<any>}
*/
@@ -44,6 +46,7 @@ async function addDbEntry({
update,
encryptionKey,
encryptionSalt,
useLocal,
}) {
/**
* Initialize variables
@@ -55,7 +58,11 @@ async function addDbEntry({
: true;
/** @type { any } */
const dbHandler = isMaster ? DB_HANDLER : DSQL_USER_DB_HANDLER;
const dbHandler = useLocal
? LOCAL_DB_HANDLER
: isMaster
? DB_HANDLER
: DSQL_USER_DB_HANDLER;
////////////////////////////////////////
////////////////////////////////////////
+3 -1
View File
@@ -18,10 +18,11 @@ export = deleteDbEntry;
* @param {import("../../../types").DSQL_TableSchemaType} [params.tableSchema] - Table schema
* @param {string} params.identifierColumnName - Update row identifier column name
* @param {string|number} params.identifierValue - Update row identifier column value
* @param {boolean} [params.useLocal]
*
* @returns {Promise<object|null>}
*/
declare function deleteDbEntry({ dbContext, paradigm, dbFullName, tableName, identifierColumnName, identifierValue, }: {
declare function deleteDbEntry({ dbContext, paradigm, dbFullName, tableName, identifierColumnName, identifierValue, useLocal, }: {
dbContext?: string;
paradigm?: ("Read Only" | "Full Access");
dbFullName: string;
@@ -29,4 +30,5 @@ declare function deleteDbEntry({ dbContext, paradigm, dbFullName, tableName, ide
tableSchema?: import("../../../types").DSQL_TableSchemaType;
identifierColumnName: string;
identifierValue: string | number;
useLocal?: boolean;
}): Promise<object | null>;
@@ -2,6 +2,7 @@
const DB_HANDLER = require("../../../utils/backend/global-db/DB_HANDLER");
const DSQL_USER_DB_HANDLER = require("../../../utils/backend/global-db/DSQL_USER_DB_HANDLER");
const LOCAL_DB_HANDLER = require("../../../utils/backend/global-db/LOCAL_DB_HANDLER");
/**
* Imports: Handle imports
@@ -23,6 +24,7 @@ const DSQL_USER_DB_HANDLER = require("../../../utils/backend/global-db/DSQL_USER
* @param {import("../../../types").DSQL_TableSchemaType} [params.tableSchema] - Table schema
* @param {string} params.identifierColumnName - Update row identifier column name
* @param {string|number} params.identifierValue - Update row identifier column value
* @param {boolean} [params.useLocal]
*
* @returns {Promise<object|null>}
*/
@@ -33,6 +35,7 @@ async function deleteDbEntry({
tableName,
identifierColumnName,
identifierValue,
useLocal,
}) {
try {
/**
@@ -45,7 +48,11 @@ async function deleteDbEntry({
: true;
/** @type { (a1:any, a2?:any) => any } */
const dbHandler = isMaster ? DB_HANDLER : DSQL_USER_DB_HANDLER;
const dbHandler = useLocal
? LOCAL_DB_HANDLER
: isMaster
? DB_HANDLER
: DSQL_USER_DB_HANDLER;
////////////////////////////////////////
////////////////////////////////////////
@@ -107,6 +107,8 @@ async function runQuery({
}
if (local) {
console.log("Using Local ...");
const rawResults = await LOCAL_DB_HANDLER(
formattedQuery,
queryValuesArray
+3 -1
View File
@@ -18,10 +18,11 @@ export = updateDbEntry;
* @param {import("../../../types").DSQL_TableSchemaType} [params.tableSchema] - Table schema
* @param {string} params.identifierColumnName - Update row identifier column name
* @param {string | number} params.identifierValue - Update row identifier column value
* @param {boolean} [params.useLocal]
*
* @returns {Promise<object|null>}
*/
declare function updateDbEntry({ dbContext, paradigm, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, }: {
declare function updateDbEntry({ dbContext, paradigm, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, useLocal, }: {
dbContext?: ("Master" | "Dsql User");
paradigm?: ("Read Only" | "Full Access");
dbFullName?: string;
@@ -32,4 +33,5 @@ declare function updateDbEntry({ dbContext, paradigm, dbFullName, tableName, dat
tableSchema?: import("../../../types").DSQL_TableSchemaType;
identifierColumnName: string;
identifierValue: string | number;
useLocal?: boolean;
}): Promise<object | null>;
@@ -8,6 +8,7 @@ const sanitizeHtmlOptions = require("../html/sanitizeHtmlOptions");
const DB_HANDLER = require("../../../utils/backend/global-db/DB_HANDLER");
const DSQL_USER_DB_HANDLER = require("../../../utils/backend/global-db/DSQL_USER_DB_HANDLER");
const encrypt = require("../../dsql/encrypt");
const LOCAL_DB_HANDLER = require("../../../utils/backend/global-db/LOCAL_DB_HANDLER");
/**
* Update DB Function
@@ -28,6 +29,7 @@ const encrypt = require("../../dsql/encrypt");
* @param {import("../../../types").DSQL_TableSchemaType} [params.tableSchema] - Table schema
* @param {string} params.identifierColumnName - Update row identifier column name
* @param {string | number} params.identifierValue - Update row identifier column value
* @param {boolean} [params.useLocal]
*
* @returns {Promise<object|null>}
*/
@@ -42,6 +44,7 @@ async function updateDbEntry({
identifierValue,
encryptionKey,
encryptionSalt,
useLocal,
}) {
/**
* Check if data is valid
@@ -55,7 +58,11 @@ async function updateDbEntry({
: true;
/** @type {(a1:any, a2?:any)=> any } */
const dbHandler = isMaster ? DB_HANDLER : DSQL_USER_DB_HANDLER;
const dbHandler = useLocal
? LOCAL_DB_HANDLER
: isMaster
? DB_HANDLER
: DSQL_USER_DB_HANDLER;
////////////////////////////////////////
////////////////////////////////////////