Добавил возможность удалять пользователей и менять им пароли

This commit is contained in:
Artem VV 2023-05-19 21:15:26 +07:00
parent a287fec381
commit 8a7231cdd2
5 changed files with 239 additions and 0 deletions

View file

@ -0,0 +1,46 @@
import type { APIContext } from "astro";
import { deleteUser, getSessionUser } from "../../db";
import { Prisma } from "@prisma/client";
export async function post({ request, cookies }: APIContext) {
const response: { ok: boolean; reason?: string } = {
ok: true,
};
try {
const sessId = cookies.get("session").value!;
const user = (await getSessionUser(sessId))!;
if (!user.is_admin) {
throw new Error("Доступно только администраторам");
}
const formData = await request.formData();
const login = formData.get("login");
if (login === null) {
throw new Error("Не предоставлены данные для удаления пользователя");
}
if (login.toString() === user.login) {
throw new Error("Невозможно удалить самого себя");
}
const deletedUser = await deleteUser(login.toString());
if (deletedUser === null) {
throw new Error("Не удалось удалить пользователя");
}
response.ok = true;
} catch (e: any) {
response.ok = false;
if (e instanceof Prisma.PrismaClientKnownRequestError) {
response.reason = `Неизвестная ошибка базы данных. Код ${e.code}`;
} else if (e instanceof Error) {
response.reason = e.message.trim();
} else {
response.reason = e.toString().trim();
}
}
return {
body: JSON.stringify(response),
};
}