datasquirel/package-shared/functions/api/users/api-reset-user-password.ts
Benjamin Toby 5ab079f687 Updates
2025-07-10 11:48:20 +01:00

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,
};
}