From 34f843bc84eb5e8dbdffa5f16e784423d5eb82d3 Mon Sep 17 00:00:00 2001 From: Benjamin Toby Date: Mon, 17 Mar 2025 08:48:58 +0100 Subject: [PATCH] Updates --- .../actions/users/login-user.d.ts | 3 ++- .../actions/users/login-user.js | 4 ++-- .../actions/users/reauth-user.d.ts | 3 ++- .../actions/users/reauth-user.js | 4 ++-- .../actions/users/social/github-auth.d.ts | 3 ++- .../actions/users/social/github-auth.js | 6 ++--- .../actions/users/social/google-auth.d.ts | 3 ++- .../actions/users/social/google-auth.js | 4 ++-- .../backend/auth/write-auth-files.js | 14 +++++++----- .../shell/grantFullPriviledges.js | 8 +++++-- .../utils/backend/names/grab-dir-names.d.ts | 7 ++++++ .../utils/backend/names/grab-dir-names.js | 18 ++++++++++++--- package-shared/actions/users/login-user.ts | 6 ++++- package-shared/actions/users/reauth-user.ts | 6 ++++- .../actions/users/social/github-auth.ts | 8 ++++--- .../actions/users/social/google-auth.ts | 6 ++++- .../backend/auth/write-auth-files.ts | 20 ++++++++++++----- package-shared/shell/grantFullPriviledges.ts | 12 +++++----- .../utils/backend/names/grab-dir-names.ts | 22 ++++++++++++++++--- package.json | 2 +- 20 files changed, 113 insertions(+), 46 deletions(-) diff --git a/dist/package-shared/actions/users/login-user.d.ts b/dist/package-shared/actions/users/login-user.d.ts index b593ac5..ead9866 100644 --- a/dist/package-shared/actions/users/login-user.d.ts +++ b/dist/package-shared/actions/users/login-user.d.ts @@ -25,9 +25,10 @@ type Param = { apiUserID?: string | number; dbUserId?: string | number; cleanupTokens?: boolean; + secureCookie?: boolean; }; /** * # Login A user */ -export default function loginUser({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, apiUserID, skipWriteAuthFile, dbUserId, debug, cleanupTokens, }: Param): Promise; +export default function loginUser({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, apiUserID, skipWriteAuthFile, dbUserId, debug, cleanupTokens, secureCookie, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/users/login-user.js b/dist/package-shared/actions/users/login-user.js index 8d7ec23..6b8c61e 100644 --- a/dist/package-shared/actions/users/login-user.js +++ b/dist/package-shared/actions/users/login-user.js @@ -25,7 +25,7 @@ const debug_log_1 = __importDefault(require("../../utils/logging/debug-log")); * # Login A user */ function loginUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, apiUserID, skipWriteAuthFile, dbUserId, debug, cleanupTokens, }) { + return __awaiter(this, arguments, void 0, function* ({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, apiUserID, skipWriteAuthFile, dbUserId, debug, cleanupTokens, secureCookie, }) { var _b, _c, _d; const grabedHostNames = (0, grab_host_names_1.default)({ userId: user_id || apiUserID }); const { host, port, scheme } = grabedHostNames; @@ -186,7 +186,7 @@ function loginUser(_a) { debugFn(encryptedPayload, "encryptedPayload"); } response === null || response === void 0 ? void 0 : response.setHeader("Set-Cookie", [ - `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, + `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true${secureCookie ? ";Secure=true" : ""}`, `${csrfName}=${(_d = httpResponse.payload) === null || _d === void 0 ? void 0 : _d.csrf_k};samesite=strict;path=/;HttpOnly=true`, ]); if (debug) { diff --git a/dist/package-shared/actions/users/reauth-user.d.ts b/dist/package-shared/actions/users/reauth-user.d.ts index 766ee67..f6531b7 100644 --- a/dist/package-shared/actions/users/reauth-user.d.ts +++ b/dist/package-shared/actions/users/reauth-user.d.ts @@ -11,9 +11,10 @@ type Param = { additionalFields?: string[]; encryptedUserString?: string; user_id?: string | number; + secureCookie?: boolean; }; /** * # Reauthorize User */ -export default function reauthUser({ key, database, response, request, level, encryptionKey, encryptionSalt, additionalFields, encryptedUserString, user_id, }: Param): Promise; +export default function reauthUser({ key, database, response, request, level, encryptionKey, encryptionSalt, additionalFields, encryptedUserString, user_id, secureCookie, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/users/reauth-user.js b/dist/package-shared/actions/users/reauth-user.js index 9cb52b5..56243d1 100644 --- a/dist/package-shared/actions/users/reauth-user.js +++ b/dist/package-shared/actions/users/reauth-user.js @@ -25,7 +25,7 @@ const get_auth_cookie_names_1 = __importDefault(require("../../functions/backend * # Reauthorize User */ function reauthUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, database, response, request, level, encryptionKey, encryptionSalt, additionalFields, encryptedUserString, user_id, }) { + return __awaiter(this, arguments, void 0, function* ({ key, database, response, request, level, encryptionKey, encryptionSalt, additionalFields, encryptedUserString, user_id, secureCookie, }) { var _b, _c; /** * Check Encryption Keys @@ -143,7 +143,7 @@ function reauthUser(_a) { const authKeyName = cookieNames.keyCookieName; const csrfName = cookieNames.csrfCookieName; response === null || response === void 0 ? void 0 : response.setHeader("Set-Cookie", [ - `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, + `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true${secureCookie ? ";Secure=true" : ""}`, `${csrfName}=${(_c = httpResponse.payload) === null || _c === void 0 ? void 0 : _c.csrf_k};samesite=strict;path=/;HttpOnly=true`, ]); if (httpResponse.csrf) { diff --git a/dist/package-shared/actions/users/social/github-auth.d.ts b/dist/package-shared/actions/users/social/github-auth.d.ts index 0b26c1c..64a823d 100644 --- a/dist/package-shared/actions/users/social/github-auth.d.ts +++ b/dist/package-shared/actions/users/social/github-auth.d.ts @@ -26,9 +26,10 @@ type Param = { [s: string]: string | number; }; user_id?: boolean; + secureCookie?: boolean; }; /** * # SERVER FUNCTION: Login with google Function */ -export default function githubAuth({ key, code, email, database, clientId, clientSecret, response, encryptionKey, encryptionSalt, additionalFields, user_id, additionalData, }: Param): Promise; +export default function githubAuth({ key, code, email, database, clientId, clientSecret, response, encryptionKey, encryptionSalt, additionalFields, user_id, additionalData, secureCookie, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/users/social/github-auth.js b/dist/package-shared/actions/users/social/github-auth.js index 52b4d42..b611c0b 100644 --- a/dist/package-shared/actions/users/social/github-auth.js +++ b/dist/package-shared/actions/users/social/github-auth.js @@ -22,7 +22,7 @@ const api_github_login_1 = __importDefault(require("../../../functions/api/users * # SERVER FUNCTION: Login with google Function */ function githubAuth(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, code, email, database, clientId, clientSecret, response, encryptionKey, encryptionSalt, additionalFields, user_id, additionalData, }) { + return __awaiter(this, arguments, void 0, function* ({ key, code, email, database, clientId, clientSecret, response, encryptionKey, encryptionSalt, additionalFields, user_id, additionalData, secureCookie, }) { /** * Check inputs * @@ -162,10 +162,8 @@ function githubAuth(_a) { const authKeyName = `datasquirel_${dsqlUserId}_${database}_auth_key`; const csrfName = `datasquirel_${dsqlUserId}_${database}_csrf`; response.setHeader("Set-Cookie", [ - `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, + `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true${secureCookie ? ";Secure=true" : ""}`, `${csrfName}=${user.csrf_k};samesite=strict;path=/;HttpOnly=true`, - `dsqluid=${dsqlUserId};samesite=strict;path=/;HttpOnly=true`, - `datasquirel_social_id=${user.social_id};samesite=strict;path=/`, ]); } return httpResponse; diff --git a/dist/package-shared/actions/users/social/google-auth.d.ts b/dist/package-shared/actions/users/social/google-auth.d.ts index fe4bbd2..470918d 100644 --- a/dist/package-shared/actions/users/social/google-auth.d.ts +++ b/dist/package-shared/actions/users/social/google-auth.d.ts @@ -13,9 +13,10 @@ type Param = { }; apiUserID?: string | number; debug?: boolean; + secureCookie?: boolean; }; /** * # SERVER FUNCTION: Login with google Function */ -export default function googleAuth({ key, token, database, response, encryptionKey, encryptionSalt, additionalFields, additionalData, apiUserID, debug, }: Param): Promise; +export default function googleAuth({ key, token, database, response, encryptionKey, encryptionSalt, additionalFields, additionalData, apiUserID, debug, secureCookie, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/users/social/google-auth.js b/dist/package-shared/actions/users/social/google-auth.js index ca57dcf..b4a0174 100644 --- a/dist/package-shared/actions/users/social/google-auth.js +++ b/dist/package-shared/actions/users/social/google-auth.js @@ -22,7 +22,7 @@ const write_auth_files_1 = require("../../../functions/backend/auth/write-auth-f * # SERVER FUNCTION: Login with google Function */ function googleAuth(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, token, database, response, encryptionKey, encryptionSalt, additionalFields, additionalData, apiUserID, debug, }) { + return __awaiter(this, arguments, void 0, function* ({ key, token, database, response, encryptionKey, encryptionSalt, additionalFields, additionalData, apiUserID, debug, secureCookie, }) { var _b; const grabedHostNames = (0, grab_host_names_1.default)({ userId: apiUserID || process.env.DSQL_API_USER_ID, @@ -150,7 +150,7 @@ function googleAuth(_a) { const authKeyName = cookieNames.keyCookieName; const csrfName = cookieNames.csrfCookieName; response === null || response === void 0 ? void 0 : response.setHeader("Set-Cookie", [ - `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, + `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true${secureCookie ? ";Secure=true" : ""}`, `${csrfName}=${(_b = httpResponse.payload) === null || _b === void 0 ? void 0 : _b.csrf_k};samesite=strict;path=/;HttpOnly=true`, ]); } diff --git a/dist/package-shared/functions/backend/auth/write-auth-files.js b/dist/package-shared/functions/backend/auth/write-auth-files.js index 0d23a60..6a70118 100644 --- a/dist/package-shared/functions/backend/auth/write-auth-files.js +++ b/dist/package-shared/functions/backend/auth/write-auth-files.js @@ -7,6 +7,10 @@ exports.checkAuthFile = exports.deleteAuthFile = exports.getAuthFile = exports.c const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const ejson_1 = __importDefault(require("../../../utils/ejson")); +const debug_log_1 = __importDefault(require("../../../utils/logging/debug-log")); +function debugFn(log, label) { + (0, debug_log_1.default)({ log, addTime: true, title: "write-auth-files", label }); +} const grabAuthDirs = () => { const DSQL_AUTH_DIR = process.env.DSQL_AUTH_DIR; const ROOT_DIR = (DSQL_AUTH_DIR === null || DSQL_AUTH_DIR === void 0 ? void 0 : DSQL_AUTH_DIR.match(/./)) @@ -39,14 +43,14 @@ exports.initAuthFiles = initAuthFiles; const writeAuthFile = (name, data, cleanup) => { (0, exports.initAuthFiles)(); try { - const { auth, root } = (0, exports.grabAuthDirs)(); + const { auth } = (0, exports.grabAuthDirs)(); if (cleanup) { (0, exports.cleanupUserAuthFiles)(cleanup.userId); } fs_1.default.writeFileSync(path_1.default.join(auth, name), data); return true; } - catch ( /** @type {any} */error) { + catch (error) { console.log(`Error writing Auth File: ${error.message}`); return false; } @@ -87,7 +91,7 @@ const getAuthFile = (name) => { const authFilePath = path_1.default.join((0, exports.grabAuthDirs)().auth, name); return fs_1.default.readFileSync(authFilePath, "utf-8"); } - catch ( /** @type {any} */error) { + catch (error) { console.log(`Error getting Auth File: ${error.message}`); return null; } @@ -101,7 +105,7 @@ const deleteAuthFile = (name) => { try { return fs_1.default.rmSync(path_1.default.join((0, exports.grabAuthDirs)().auth, name)); } - catch ( /** @type {any} */error) { + catch (error) { console.log(`Error deleting Auth File: ${error.message}`); return null; } @@ -116,7 +120,7 @@ const checkAuthFile = (name) => { return fs_1.default.existsSync(path_1.default.join((0, exports.grabAuthDirs)().auth, name)); return true; } - catch ( /** @type {any} */error) { + catch (error) { console.log(`Error checking Auth File: ${error.message}`); return false; } diff --git a/dist/package-shared/shell/grantFullPriviledges.js b/dist/package-shared/shell/grantFullPriviledges.js index 91e0c5a..9a54b44 100644 --- a/dist/package-shared/shell/grantFullPriviledges.js +++ b/dist/package-shared/shell/grantFullPriviledges.js @@ -32,8 +32,12 @@ function grantFullPrivileges(_a) { for (let i = 0; i < datasquirelUserDatabases.length; i++) { const datasquirelUserDatabase = datasquirelUserDatabases[i]; const { Database } = datasquirelUserDatabase; - const grantDbPriviledges = yield (0, noDatabaseDbHandler_1.default)(`GRANT ALL PRIVILEGES ON ${Database}.* TO '${process.env.DSQL_DB_FULL_ACCESS_USERNAME}'@'%' WITH GRANT OPTION`); - const grantRead = yield (0, noDatabaseDbHandler_1.default)(`GRANT SELECT ON ${Database}.* TO '${process.env.DSQL_DB_READ_ONLY_USERNAME}'@'%'`); + // const grantDbPriviledges = await noDatabaseDbHandler( + // `GRANT ALL PRIVILEGES ON ${Database}.* TO '${process.env.DSQL_DB_FULL_ACCESS_USERNAME}'@'%' WITH GRANT OPTION` + // ); + // const grantRead = await noDatabaseDbHandler( + // `GRANT SELECT ON ${Database}.* TO '${process.env.DSQL_DB_READ_ONLY_USERNAME}'@'%'` + // ); } const flushPriviledged = yield (0, noDatabaseDbHandler_1.default)(`FLUSH PRIVILEGES`); } diff --git a/dist/package-shared/utils/backend/names/grab-dir-names.d.ts b/dist/package-shared/utils/backend/names/grab-dir-names.d.ts index 66d0875..f44d7e0 100644 --- a/dist/package-shared/utils/backend/names/grab-dir-names.d.ts +++ b/dist/package-shared/utils/backend/names/grab-dir-names.d.ts @@ -2,8 +2,10 @@ import { DATASQUIREL_LoggedInUser, UserType } from "../../../types"; type Param = { user?: DATASQUIREL_LoggedInUser | UserType; userId?: string | number | null; + appDir?: string; }; export default function grabDirNames(param?: Param): { + appDir: string; schemasDir: string; userDirPath: string | undefined; mainShemaJSONFilePath: string; @@ -22,5 +24,10 @@ export default function grabDirNames(param?: Param): { userPrivateDbImportZipFileName: string; userPrivateDbImportZipFilePath: string | undefined; dbNginxLoadBalancerConfigFile: string; + dockerComposeFile: string; + testDockerComposeFile: string; + siteSetupFile: string; + envFile: string; + testEnvFile: string; }; export {}; diff --git a/dist/package-shared/utils/backend/names/grab-dir-names.js b/dist/package-shared/utils/backend/names/grab-dir-names.js index 63f3c96..c33e58b 100644 --- a/dist/package-shared/utils/backend/names/grab-dir-names.js +++ b/dist/package-shared/utils/backend/names/grab-dir-names.js @@ -7,11 +7,12 @@ exports.default = grabDirNames; const path_1 = __importDefault(require("path")); function grabDirNames(param) { var _a; - const appDir = process.env.DSQL_APP_DIR; - const schemasDir = process.env.DSQL_DB_SCHEMA_DIR; - const tempDirName = ".tmp"; + const appDir = (param === null || param === void 0 ? void 0 : param.appDir) || process.env.DSQL_APP_DIR; if (!appDir) throw new Error("Please provide the `DSQL_APP_DIR` env variable."); + const schemasDir = process.env.DSQL_DB_SCHEMA_DIR || + path_1.default.join(appDir, "jsonData", "dbSchemas"); + const tempDirName = ".tmp"; if (!schemasDir) throw new Error("Please provide the `DSQL_DB_SCHEMA_DIR` env variable."); const pakageSharedDir = path_1.default.join(appDir, `package-shared`); @@ -51,7 +52,13 @@ function grabDirNames(param) { ? path_1.default.join(userPrivateSQLExportsDir, userPrivateDbImportZipFileName) : undefined; const dbNginxLoadBalancerConfigFile = path_1.default.join(appDir, "docker/mariadb/load-balancer/config/template/nginx.conf"); + const dockerComposeFile = path_1.default.join(appDir, "docker-compose.yml"); + const testDockerComposeFile = path_1.default.join(appDir, "test.docker-compose.yml"); + const siteSetupFile = path_1.default.join(appDir, "site-setup.json"); + const envFile = path_1.default.join(appDir, ".env"); + const testEnvFile = path_1.default.join(appDir, "test.env"); return { + appDir, schemasDir, userDirPath, mainShemaJSONFilePath, @@ -70,5 +77,10 @@ function grabDirNames(param) { userPrivateDbImportZipFileName, userPrivateDbImportZipFilePath, dbNginxLoadBalancerConfigFile, + dockerComposeFile, + testDockerComposeFile, + siteSetupFile, + envFile, + testEnvFile, }; } diff --git a/package-shared/actions/users/login-user.ts b/package-shared/actions/users/login-user.ts index 25594cf..adb2960 100644 --- a/package-shared/actions/users/login-user.ts +++ b/package-shared/actions/users/login-user.ts @@ -36,6 +36,7 @@ type Param = { apiUserID?: string | number; dbUserId?: string | number; cleanupTokens?: boolean; + secureCookie?: boolean; }; /** @@ -60,6 +61,7 @@ export default async function loginUser({ dbUserId, debug, cleanupTokens, + secureCookie, }: Param): Promise { const grabedHostNames = grabHostNames({ userId: user_id || apiUserID }); const { host, port, scheme } = grabedHostNames; @@ -266,7 +268,9 @@ export default async function loginUser({ } response?.setHeader("Set-Cookie", [ - `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, + `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true${ + secureCookie ? ";Secure=true" : "" + }`, `${csrfName}=${httpResponse.payload?.csrf_k};samesite=strict;path=/;HttpOnly=true`, ]); diff --git a/package-shared/actions/users/reauth-user.ts b/package-shared/actions/users/reauth-user.ts index 852bc20..695111b 100644 --- a/package-shared/actions/users/reauth-user.ts +++ b/package-shared/actions/users/reauth-user.ts @@ -25,6 +25,7 @@ type Param = { additionalFields?: string[]; encryptedUserString?: string; user_id?: string | number; + secureCookie?: boolean; }; /** @@ -41,6 +42,7 @@ export default async function reauthUser({ additionalFields, encryptedUserString, user_id, + secureCookie, }: Param): Promise { /** * Check Encryption Keys @@ -188,7 +190,9 @@ export default async function reauthUser({ const csrfName = cookieNames.csrfCookieName; response?.setHeader("Set-Cookie", [ - `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, + `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true${ + secureCookie ? ";Secure=true" : "" + }`, `${csrfName}=${httpResponse.payload?.csrf_k};samesite=strict;path=/;HttpOnly=true`, ]); diff --git a/package-shared/actions/users/social/github-auth.ts b/package-shared/actions/users/social/github-auth.ts index d3843ba..af723cd 100644 --- a/package-shared/actions/users/social/github-auth.ts +++ b/package-shared/actions/users/social/github-auth.ts @@ -31,6 +31,7 @@ type Param = { additionalFields?: string[]; additionalData?: { [s: string]: string | number }; user_id?: boolean; + secureCookie?: boolean; }; /** @@ -49,6 +50,7 @@ export default async function githubAuth({ additionalFields, user_id, additionalData, + secureCookie, }: Param): Promise { /** * Check inputs @@ -228,10 +230,10 @@ export default async function githubAuth({ const csrfName = `datasquirel_${dsqlUserId}_${database}_csrf`; response.setHeader("Set-Cookie", [ - `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, + `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true${ + secureCookie ? ";Secure=true" : "" + }`, `${csrfName}=${user.csrf_k};samesite=strict;path=/;HttpOnly=true`, - `dsqluid=${dsqlUserId};samesite=strict;path=/;HttpOnly=true`, - `datasquirel_social_id=${user.social_id};samesite=strict;path=/`, ]); } diff --git a/package-shared/actions/users/social/google-auth.ts b/package-shared/actions/users/social/google-auth.ts index 05d7979..c2afa34 100644 --- a/package-shared/actions/users/social/google-auth.ts +++ b/package-shared/actions/users/social/google-auth.ts @@ -17,6 +17,7 @@ type Param = { additionalData?: { [s: string]: string | number }; apiUserID?: string | number; debug?: boolean; + secureCookie?: boolean; }; /** @@ -33,6 +34,7 @@ export default async function googleAuth({ additionalData, apiUserID, debug, + secureCookie, }: Param): Promise { const grabedHostNames = grabHostNames({ userId: apiUserID || process.env.DSQL_API_USER_ID, @@ -192,7 +194,9 @@ export default async function googleAuth({ const csrfName = cookieNames.csrfCookieName; response?.setHeader("Set-Cookie", [ - `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, + `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true${ + secureCookie ? ";Secure=true" : "" + }`, `${csrfName}=${httpResponse.payload?.csrf_k};samesite=strict;path=/;HttpOnly=true`, ]); } diff --git a/package-shared/functions/backend/auth/write-auth-files.ts b/package-shared/functions/backend/auth/write-auth-files.ts index 8d1520b..3ebddd7 100644 --- a/package-shared/functions/backend/auth/write-auth-files.ts +++ b/package-shared/functions/backend/auth/write-auth-files.ts @@ -2,6 +2,11 @@ import fs from "fs"; import path from "path"; import EJSON from "../../../utils/ejson"; import { DATASQUIREL_LoggedInUser } from "../../../types"; +import debugLog from "../../../utils/logging/debug-log"; + +function debugFn(log: any, label?: string) { + debugLog({ log, addTime: true, title: "write-auth-files", label }); +} export const grabAuthDirs = () => { const DSQL_AUTH_DIR = process.env.DSQL_AUTH_DIR; @@ -43,14 +48,15 @@ export const writeAuthFile = ( } ) => { initAuthFiles(); + try { - const { auth, root } = grabAuthDirs(); + const { auth } = grabAuthDirs(); if (cleanup) { cleanupUserAuthFiles(cleanup.userId); } fs.writeFileSync(path.join(auth, name), data); return true; - } catch (/** @type {any} */ error: any) { + } catch (error: any) { console.log(`Error writing Auth File: ${error.message}`); return false; } @@ -67,14 +73,16 @@ export const cleanupUserAuthFiles = (userId: string | number) => { for (let i = 0; i < loginFiles.length; i++) { const loginFile = loginFiles[i]; const loginFilePath = path.join(auth, loginFile); + try { const authPayload = EJSON.parse( fs.readFileSync(loginFilePath, "utf-8") ) as DATASQUIREL_LoggedInUser; + if (authPayload.id == userId) { fs.unlinkSync(loginFilePath); } - } catch (error) {} + } catch (error: any) {} } return true; } catch (error: any) { @@ -90,7 +98,7 @@ export const getAuthFile = (name: string) => { try { const authFilePath = path.join(grabAuthDirs().auth, name); return fs.readFileSync(authFilePath, "utf-8"); - } catch (/** @type {any} */ error: any) { + } catch (error: any) { console.log(`Error getting Auth File: ${error.message}`); return null; } @@ -103,7 +111,7 @@ export const getAuthFile = (name: string) => { export const deleteAuthFile = (name: string) => { try { return fs.rmSync(path.join(grabAuthDirs().auth, name)); - } catch (/** @type {any} */ error: any) { + } catch (error: any) { console.log(`Error deleting Auth File: ${error.message}`); return null; } @@ -117,7 +125,7 @@ export const checkAuthFile = (name: string) => { try { return fs.existsSync(path.join(grabAuthDirs().auth, name)); return true; - } catch (/** @type {any} */ error: any) { + } catch (error: any) { console.log(`Error checking Auth File: ${error.message}`); return false; } diff --git a/package-shared/shell/grantFullPriviledges.ts b/package-shared/shell/grantFullPriviledges.ts index 8fd6246..ff01ba8 100644 --- a/package-shared/shell/grantFullPriviledges.ts +++ b/package-shared/shell/grantFullPriviledges.ts @@ -25,13 +25,13 @@ async function grantFullPrivileges({ userId }: { userId: string | null }) { const datasquirelUserDatabase = datasquirelUserDatabases[i]; const { Database } = datasquirelUserDatabase; - const grantDbPriviledges = await noDatabaseDbHandler( - `GRANT ALL PRIVILEGES ON ${Database}.* TO '${process.env.DSQL_DB_FULL_ACCESS_USERNAME}'@'%' WITH GRANT OPTION` - ); + // const grantDbPriviledges = await noDatabaseDbHandler( + // `GRANT ALL PRIVILEGES ON ${Database}.* TO '${process.env.DSQL_DB_FULL_ACCESS_USERNAME}'@'%' WITH GRANT OPTION` + // ); - const grantRead = await noDatabaseDbHandler( - `GRANT SELECT ON ${Database}.* TO '${process.env.DSQL_DB_READ_ONLY_USERNAME}'@'%'` - ); + // const grantRead = await noDatabaseDbHandler( + // `GRANT SELECT ON ${Database}.* TO '${process.env.DSQL_DB_READ_ONLY_USERNAME}'@'%'` + // ); } const flushPriviledged = await noDatabaseDbHandler(`FLUSH PRIVILEGES`); diff --git a/package-shared/utils/backend/names/grab-dir-names.ts b/package-shared/utils/backend/names/grab-dir-names.ts index 29e629a..1ac7d13 100644 --- a/package-shared/utils/backend/names/grab-dir-names.ts +++ b/package-shared/utils/backend/names/grab-dir-names.ts @@ -4,15 +4,19 @@ import path from "path"; type Param = { user?: DATASQUIREL_LoggedInUser | UserType; userId?: string | number | null; + appDir?: string; }; export default function grabDirNames(param?: Param) { - const appDir = process.env.DSQL_APP_DIR; - const schemasDir = process.env.DSQL_DB_SCHEMA_DIR; - const tempDirName = ".tmp"; + const appDir = param?.appDir || process.env.DSQL_APP_DIR; if (!appDir) throw new Error("Please provide the `DSQL_APP_DIR` env variable."); + const schemasDir = + process.env.DSQL_DB_SCHEMA_DIR || + path.join(appDir, "jsonData", "dbSchemas"); + const tempDirName = ".tmp"; + if (!schemasDir) throw new Error( "Please provide the `DSQL_DB_SCHEMA_DIR` env variable." @@ -67,7 +71,14 @@ export default function grabDirNames(param?: Param) { "docker/mariadb/load-balancer/config/template/nginx.conf" ); + const dockerComposeFile = path.join(appDir, "docker-compose.yml"); + const testDockerComposeFile = path.join(appDir, "test.docker-compose.yml"); + const siteSetupFile = path.join(appDir, "site-setup.json"); + const envFile = path.join(appDir, ".env"); + const testEnvFile = path.join(appDir, "test.env"); + return { + appDir, schemasDir, userDirPath, mainShemaJSONFilePath, @@ -86,5 +97,10 @@ export default function grabDirNames(param?: Param) { userPrivateDbImportZipFileName, userPrivateDbImportZipFilePath, dbNginxLoadBalancerConfigFile, + dockerComposeFile, + testDockerComposeFile, + siteSetupFile, + envFile, + testEnvFile, }; } diff --git a/package.json b/package.json index beed334..e7950c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "4.1.9", + "version": "4.2.0", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {