fix: update 2fa enabled appropriately & delete files (#315)
* fix: update 2fa enabled appropriately * fix: a proper delete --------- Co-authored-by: dicedtomato <35403473+diced@users.noreply.github.com>
This commit is contained in:
parent
a16b516163
commit
656b900256
2 changed files with 30 additions and 19 deletions
|
@ -348,7 +348,7 @@ export default function Manage({ oauth_registration, oauth_providers: raw_oauth_
|
|||
useEffect(() => {
|
||||
getExports();
|
||||
interval.start();
|
||||
}, []);
|
||||
}, [totpEnabled]);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
|
@ -21,22 +21,23 @@ async function handler(req: NextApiReq, res: NextApiRes, user: UserExtended) {
|
|||
if (req.method === 'DELETE') {
|
||||
if (target.id === user.id) return res.badRequest("you can't delete your own account");
|
||||
if (target.administrator && !user.superAdmin) return res.forbidden('cannot delete administrator');
|
||||
let promises = [];
|
||||
|
||||
const newTarget = await prisma.user.delete({
|
||||
where: { id: target.id },
|
||||
});
|
||||
|
||||
logger.debug(`deleted user ${JSON.stringify(newTarget)}`);
|
||||
promises.push(
|
||||
prisma.user.delete({
|
||||
where: { id: target.id },
|
||||
})
|
||||
);
|
||||
|
||||
if (req.body.delete_files) {
|
||||
logger.debug(`attempting to delete ${newTarget.id}'s files`);
|
||||
|
||||
const files = await prisma.file.findMany({
|
||||
where: {
|
||||
userId: newTarget.id,
|
||||
userId: target.id,
|
||||
},
|
||||
});
|
||||
|
||||
logger.debug(`attempting to delete ${target.id}'s files`);
|
||||
|
||||
for (let i = 0; i !== files.length; ++i) {
|
||||
try {
|
||||
await datasource.delete(files[i].name);
|
||||
|
@ -45,21 +46,31 @@ async function handler(req: NextApiReq, res: NextApiRes, user: UserExtended) {
|
|||
}
|
||||
}
|
||||
|
||||
const { count } = await prisma.file.deleteMany({
|
||||
where: {
|
||||
userId: newTarget.id,
|
||||
},
|
||||
});
|
||||
Logger.get('users').info(
|
||||
`User ${user.username} (${user.id}) deleted ${count} files of user ${newTarget.username} (${newTarget.id})`
|
||||
promises.unshift(
|
||||
prisma.file.deleteMany({
|
||||
where: {
|
||||
userId: target.id,
|
||||
},
|
||||
})
|
||||
);
|
||||
}
|
||||
Promise.all(promises).then((promised) => {
|
||||
const newTarget = promised[1];
|
||||
const { count } = promised[0];
|
||||
logger.debug(`deleted user ${JSON.stringify(newTarget)}`);
|
||||
|
||||
logger.info(`User ${user.username} (${user.id}) deleted user ${newTarget.username} (${newTarget.id})`);
|
||||
req.body.delete_files
|
||||
? logger.info(
|
||||
`User ${user.username} (${user.id}) deleted ${count} files of user ${newTarget.username} (${newTarget.id})`
|
||||
)
|
||||
: logger.info(
|
||||
`User ${user.username} (${user.id}) deleted user ${newTarget.username} (${newTarget.id})`
|
||||
);
|
||||
|
||||
delete newTarget.password;
|
||||
delete newTarget.password;
|
||||
|
||||
return res.json(newTarget);
|
||||
return res.json(newTarget);
|
||||
});
|
||||
} else if (req.method === 'PATCH') {
|
||||
if (target.administrator && !user.superAdmin) return res.forbidden('cannot modify administrator');
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue