71 lines
1.8 KiB
TypeScript
71 lines
1.8 KiB
TypeScript
import { UserType } from "../../types";
|
|
import dbHandler from "./dbHandler";
|
|
import dsqlCrud from "../../utils/data-fetching/crud";
|
|
import { DSQL_DATASQUIREL_USERS, DsqlTables } from "../../types/dsql";
|
|
import decrypt from "../dsql/decrypt";
|
|
import createUserSQLUser from "../../utils/create-user-sql-user";
|
|
import grabUserMainSqlUserName from "../../utils/grab-user-main-sql-user-name";
|
|
|
|
type Params = {
|
|
user: UserType;
|
|
};
|
|
|
|
type Return = {
|
|
fullName?: string;
|
|
host?: string;
|
|
username?: string;
|
|
password?: string;
|
|
};
|
|
|
|
export default async function grabMariadbMainUserForUser({
|
|
user,
|
|
}: Params): Promise<Return> {
|
|
const {
|
|
fullName,
|
|
host,
|
|
username: mariaDBUsername,
|
|
webHost,
|
|
} = grabUserMainSqlUserName({ user });
|
|
|
|
const existingWebAppUser = (await dbHandler({
|
|
query: `SELECT * FROM mysql.user WHERE user=? AND host=?`,
|
|
values: [mariaDBUsername, webHost],
|
|
})) as any[];
|
|
|
|
if (!existingWebAppUser?.[0]) {
|
|
return await createUserSQLUser(user);
|
|
} else {
|
|
const existingUserRecord = await dsqlCrud<
|
|
DSQL_DATASQUIREL_USERS,
|
|
(typeof DsqlTables)[number]
|
|
>({
|
|
action: "get",
|
|
table: "users",
|
|
query: {
|
|
query: {
|
|
id: {
|
|
value: String(user.id),
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
const targetUser = (
|
|
existingUserRecord?.payload as DSQL_DATASQUIREL_USERS[] | undefined
|
|
)?.[0];
|
|
|
|
if (!targetUser?.id) {
|
|
return {};
|
|
}
|
|
|
|
return {
|
|
fullName,
|
|
host,
|
|
username: mariaDBUsername,
|
|
password: decrypt({
|
|
encryptedString: targetUser.mariadb_pass || "",
|
|
}),
|
|
};
|
|
}
|
|
}
|