datasquirel/dist/package-shared/utils/create-user-sql-user.js
Benjamin Toby 7e8bb37c09 Updates
2025-07-05 14:59:30 +01:00

42 lines
1.5 KiB
JavaScript

import { generate } from "generate-password";
import dbHandler from "../functions/backend/dbHandler";
import dsqlCrud from "./data-fetching/crud";
import encrypt from "../functions/dsql/encrypt";
import grabUserMainSqlUserName from "./grab-user-main-sql-user-name";
import grabDbNames from "./grab-db-names";
import { createNewSQLUser } from "../functions/web-app/mariadb-user/handle-mariadb-user-creation";
export default async function createUserSQLUser(user) {
const { fullName, host, username: mariaDBUsername, webHost, } = grabUserMainSqlUserName({ user });
const { userDbPrefix } = grabDbNames({ user });
await dbHandler({
query: `DROP USER IF EXISTS '${mariaDBUsername}'@'${webHost}'`,
noErrorLogs: true,
});
const newPassword = generate({ length: 32 });
await createNewSQLUser({
host: webHost,
password: newPassword,
username: mariaDBUsername,
});
const updateWebHostGrants = (await dbHandler({
query: `GRANT ALL PRIVILEGES ON \`${userDbPrefix.replace(/\_/g, "\\_")}%\`.* TO '${mariaDBUsername}'@'${webHost}'`,
}));
const updateUser = await dsqlCrud({
action: "update",
table: "users",
targetField: "id",
targetValue: user.id,
data: {
mariadb_host: webHost,
mariadb_pass: encrypt({ data: newPassword }) || undefined,
mariadb_user: mariaDBUsername,
},
});
return {
fullName,
host,
username: mariaDBUsername,
password: newPassword,
};
}