42 lines
1.5 KiB
JavaScript
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,
|
|
};
|
|
}
|