54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import updateDbEntry from "../../backend/db/updateDbEntry";
|
|
import hashPassword from "../../dsql/hashPassword";
|
|
import dbHandler from "../../backend/dbHandler";
|
|
import { APIResponseObject, ResetPasswordParams } from "../../../types";
|
|
import grabDbFullName from "../../../utils/grab-db-full-name";
|
|
import { DSQL_DATASQUIREL_USERS } from "../../../types/dsql";
|
|
|
|
/**
|
|
* # Update API User Function
|
|
*/
|
|
export default async function apiResetUserPassword({
|
|
updatedUserId,
|
|
database,
|
|
dbUserId,
|
|
newPassword,
|
|
encryptionKey,
|
|
}: ResetPasswordParams): Promise<APIResponseObject> {
|
|
const dbFullName = grabDbFullName({ dbName: database, userId: dbUserId });
|
|
|
|
const existingUserQuery = `SELECT * FROM users WHERE id = ?`;
|
|
const existingUserValues = [updatedUserId];
|
|
|
|
const existingUser = (await dbHandler({
|
|
query: existingUserQuery,
|
|
values: existingUserValues,
|
|
database: dbFullName,
|
|
})) as any[];
|
|
|
|
if (!existingUser?.[0]) {
|
|
return {
|
|
success: false,
|
|
msg: "User not found",
|
|
};
|
|
}
|
|
|
|
const newPasswordHashed = hashPassword({
|
|
password: newPassword,
|
|
encryptionKey,
|
|
});
|
|
|
|
const updateUser = await updateDbEntry<DSQL_DATASQUIREL_USERS>({
|
|
dbFullName,
|
|
tableName: "users",
|
|
identifierColumnName: "id",
|
|
identifierValue: updatedUserId,
|
|
data: { password: newPasswordHashed },
|
|
});
|
|
|
|
return {
|
|
success: true,
|
|
payload: updateUser,
|
|
};
|
|
}
|