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 { 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 ); } } //////////////////////////////////////////////// //////////////////////////////////////////////// ////////////////////////////////////////////////