Prevents slef delet
This commit is contained in:
parent
caab669d51
commit
8e7de074c1
|
|
@ -1,23 +1,37 @@
|
|||
"use server";
|
||||
|
||||
import prisma from "@/db";
|
||||
import getCurrentUser from "@/modules/auth/utils/getCurrentUser";
|
||||
import checkPermission from "@/modules/dashboard/services/checkPermission";
|
||||
import ServerResponseAction from "@/modules/dashboard/types/ServerResponseAction";
|
||||
import handleCatch from "@/modules/dashboard/utils/handleCatch";
|
||||
import notFound from "@/modules/dashboard/utils/notFound";
|
||||
import unauthorized from "@/modules/dashboard/utils/unauthorized";
|
||||
import { revalidatePath } from "next/cache";
|
||||
import UserManagementError from "../errors/UserManagementError";
|
||||
|
||||
export default async function deleteUser(
|
||||
id: string
|
||||
): Promise<ServerResponseAction> {
|
||||
try {
|
||||
if (!(await checkPermission("users.delete"))) return unauthorized();
|
||||
const currentUser = await getCurrentUser();
|
||||
|
||||
if (!(await checkPermission("users.delete")) || !currentUser)
|
||||
return unauthorized();
|
||||
|
||||
//prevents self delete
|
||||
if (currentUser.id === id) {
|
||||
throw new UserManagementError({
|
||||
errorCode: "CANNOT_DELETE_SELF",
|
||||
message: "You cannot delete yourself",
|
||||
});
|
||||
}
|
||||
|
||||
const user = await prisma.user.delete({
|
||||
where: { id },
|
||||
});
|
||||
|
||||
if (!user) notFound({message: "The user does not exists"});
|
||||
if (!user) notFound({ message: "The user does not exists" });
|
||||
|
||||
revalidatePath(".");
|
||||
|
||||
|
|
|
|||
25
src/modules/userManagement/errors/UserManagementError.ts
Normal file
25
src/modules/userManagement/errors/UserManagementError.ts
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import DashboardError from "@/modules/dashboard/errors/DashboardError";
|
||||
|
||||
export const UserManagementErrorCodes = [
|
||||
"CANNOT_DELETE_SELF"
|
||||
] as const;
|
||||
|
||||
interface UserManagementErrorOptions {
|
||||
message?: string;
|
||||
errorCode: (typeof UserManagementErrorCodes)[number] | (string & {});
|
||||
formErrors?: Record<string, string>
|
||||
}
|
||||
|
||||
export default class UserManagementError extends DashboardError {
|
||||
public readonly errorCode: UserManagementErrorOptions['errorCode'];
|
||||
public readonly formErrors?: UserManagementErrorOptions['formErrors']
|
||||
|
||||
constructor(options: UserManagementErrorOptions) {
|
||||
super({
|
||||
errorCode: options.errorCode,
|
||||
message: options.message,
|
||||
});
|
||||
|
||||
this.errorCode = options.errorCode;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user