datasquirel/package-shared/functions/backend/addMariadbUser.ts
Benjamin Toby c37d105dee Updates
2025-07-09 20:30:45 +01:00

67 lines
2.2 KiB
TypeScript

import generator from "generate-password";
import addDbEntry from "./db/addDbEntry";
import encrypt from "../dsql/encrypt";
import grabSQLKeyName from "../../utils/grab-sql-key-name";
import dbHandler from "./dbHandler";
type Param = {
userId: number | string;
};
/**
* # Add Mariadb User
*/
export default async function addMariadbUser({ userId }: Param): Promise<any> {
try {
const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1";
const username = grabSQLKeyName({ type: "user", userId });
const password = generator.generate({
length: 16,
numbers: true,
symbols: true,
uppercase: true,
exclude: "*#.'`\"",
});
const encryptedPassword = encrypt({ data: password });
const createMariadbUsersQuery = `CREATE USER IF NOT EXISTS '${username}'@'127.0.0.1' IDENTIFIED BY '${password}'`;
await dbHandler({
query: createMariadbUsersQuery,
});
const updateUserQuery = `UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1', mariadb_pass = ? WHERE id = ?`;
const updateUserValues = [username, encryptedPassword, userId];
await dbHandler({
query: updateUserQuery,
values: updateUserValues,
});
const addMariadbUser = await addDbEntry({
tableName: "mariadb_users",
data: {
user_id: userId,
username,
host: defaultMariadbUserHost,
password: encryptedPassword,
primary: "1",
grants: '[{"database":"*","table":"*","privileges":["ALL"]}]',
},
dbContext: "Master",
});
console.log(`User ${userId} SQL credentials successfully added.`);
} catch (/** @type {any} */ error: any) {
console.log(
`Error in adding SQL user in 'addMariadbUser' function =>`,
error.message
);
}
}
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////