Catch Blocks #158
@@ -142,73 +142,77 @@ const removeConnectedAircrafts = async () => {
|
||||
});
|
||||
};
|
||||
const removePermissionsForBannedUsers = async () => {
|
||||
const removePermissionsPenaltys = await prisma.penalty.findMany({
|
||||
where: {
|
||||
removePermissionApplied: false,
|
||||
User: {
|
||||
DiscordAccount: { isNot: null },
|
||||
},
|
||||
},
|
||||
include: {
|
||||
User: {
|
||||
include: {
|
||||
DiscordAccount: true,
|
||||
FormerDiscordAccounts: true,
|
||||
try {
|
||||
const removePermissionsPenaltys = await prisma.penalty.findMany({
|
||||
where: {
|
||||
removePermissionApplied: false,
|
||||
User: {
|
||||
DiscordAccount: { isNot: null },
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const addPermissionsPenaltys = await prisma.penalty.findMany({
|
||||
where: {
|
||||
addPermissionApplied: false,
|
||||
User: {
|
||||
DiscordAccount: { isNot: null },
|
||||
},
|
||||
OR: [{ suspended: true }, { until: { lt: new Date().toISOString() } }],
|
||||
},
|
||||
include: {
|
||||
User: {
|
||||
include: {
|
||||
DiscordAccount: true,
|
||||
FormerDiscordAccounts: true,
|
||||
include: {
|
||||
User: {
|
||||
include: {
|
||||
DiscordAccount: true,
|
||||
FormerDiscordAccounts: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
for (const penalty of removePermissionsPenaltys) {
|
||||
const user = penalty.User;
|
||||
console.log(`Removing roles for user ${user.id} due to penalty ${penalty.id}`);
|
||||
const addPermissionsPenaltys = await prisma.penalty.findMany({
|
||||
where: {
|
||||
addPermissionApplied: false,
|
||||
User: {
|
||||
DiscordAccount: { isNot: null },
|
||||
},
|
||||
OR: [{ suspended: true }, { until: { lt: new Date().toISOString() } }],
|
||||
},
|
||||
include: {
|
||||
User: {
|
||||
include: {
|
||||
DiscordAccount: true,
|
||||
FormerDiscordAccounts: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await changeMemberRoles(
|
||||
user.DiscordAccount!.discordId,
|
||||
[DISCORD_ROLES.PILOT, DISCORD_ROLES.DISPATCHER],
|
||||
"remove",
|
||||
);
|
||||
for (const penalty of removePermissionsPenaltys) {
|
||||
const user = penalty.User;
|
||||
console.log(`Removing roles for user ${user.id} due to penalty ${penalty.id}`);
|
||||
|
||||
for (const formerAccount of user.FormerDiscordAccounts) {
|
||||
await changeMemberRoles(
|
||||
formerAccount.discordId,
|
||||
user.DiscordAccount!.discordId,
|
||||
[DISCORD_ROLES.PILOT, DISCORD_ROLES.DISPATCHER],
|
||||
"remove",
|
||||
);
|
||||
|
||||
for (const formerAccount of user.FormerDiscordAccounts) {
|
||||
await changeMemberRoles(
|
||||
formerAccount.discordId,
|
||||
[DISCORD_ROLES.PILOT, DISCORD_ROLES.DISPATCHER],
|
||||
"remove",
|
||||
);
|
||||
}
|
||||
await prisma.penalty.update({
|
||||
where: { id: penalty.id },
|
||||
data: { removePermissionApplied: true },
|
||||
});
|
||||
}
|
||||
await prisma.penalty.update({
|
||||
where: { id: penalty.id },
|
||||
data: { removePermissionApplied: true },
|
||||
});
|
||||
}
|
||||
for (const penalty of addPermissionsPenaltys) {
|
||||
console.log(`Restoring roles for user ${penalty.userId} due to penalty ${penalty.id}`);
|
||||
await setUserStandardNamePermissions({
|
||||
memberId: penalty.User.DiscordAccount!.discordId,
|
||||
userId: penalty.userId,
|
||||
});
|
||||
await prisma.penalty.update({
|
||||
where: { id: penalty.id },
|
||||
data: { addPermissionApplied: true },
|
||||
});
|
||||
for (const penalty of addPermissionsPenaltys) {
|
||||
console.log(`Restoring roles for user ${penalty.userId} due to penalty ${penalty.id}`);
|
||||
await setUserStandardNamePermissions({
|
||||
memberId: penalty.User.DiscordAccount!.discordId,
|
||||
userId: penalty.userId,
|
||||
});
|
||||
await prisma.penalty.update({
|
||||
where: { id: penalty.id },
|
||||
data: { addPermissionApplied: true },
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error removing permissions for banned users:", error);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -66,6 +66,8 @@ export const setUserStandardNamePermissions = async ({
|
||||
const publicUser = getPublicUser(user);
|
||||
const member = await getMember(memberId);
|
||||
|
||||
if (!member) throw new Error("Member not found");
|
||||
|
||||
await member.setNickname(`${publicUser.fullName} - ${user.publicId}`);
|
||||
const isPilot = user.permissions.includes("PILOT");
|
||||
const isDispatcher = user.permissions.includes("DISPO");
|
||||
@@ -79,10 +81,14 @@ export const setUserStandardNamePermissions = async ({
|
||||
};
|
||||
|
||||
router.post("/set-standard-name", async (req, res) => {
|
||||
const { memberId, userId } = req.body;
|
||||
try {
|
||||
const { memberId, userId } = req.body;
|
||||
|
||||
await setUserStandardNamePermissions({ memberId, userId });
|
||||
res.status(200).json({ message: "Standard name and permissions set" });
|
||||
await setUserStandardNamePermissions({ memberId, userId });
|
||||
res.status(200).json({ message: "Standard name and permissions set" });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: (error as unknown as Error).message });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
||||
@@ -20,12 +20,12 @@ export const getMember = async (memberId: string) => {
|
||||
try {
|
||||
let member = guild.members.cache.get(memberId);
|
||||
if (!member) {
|
||||
member = await guild.members.fetch(memberId);
|
||||
member = await guild.members.fetch(memberId).catch((e) => undefined);
|
||||
}
|
||||
return member;
|
||||
} catch (error) {
|
||||
console.error("Error fetching member:", error);
|
||||
throw new Error("Member not found");
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -37,6 +37,10 @@ router.post("/rename", async (req: Request, res: Response) => {
|
||||
}
|
||||
try {
|
||||
const member = await getMember(memberId);
|
||||
if (!member) {
|
||||
res.status(404).json({ error: "Member not found" });
|
||||
return;
|
||||
}
|
||||
await member.setNickname(newName);
|
||||
console.log(`Member ${member.id} renamed to ${newName}`);
|
||||
res.status(200).json({ message: "Member renamed successfully" });
|
||||
@@ -52,6 +56,9 @@ export const changeMemberRoles = async (
|
||||
action: "add" | "remove",
|
||||
) => {
|
||||
const member = await getMember(memberId);
|
||||
if (!member) {
|
||||
throw new Error("Member not found");
|
||||
}
|
||||
|
||||
const currentRoleIds = member.roles.cache.map((role) => role.id);
|
||||
const filteredRoleIds =
|
||||
|
||||
@@ -54,7 +54,7 @@ import {
|
||||
} from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { ColumnDef } from "@tanstack/react-table";
|
||||
import { Error } from "_components/Error";
|
||||
import { Error as ErrorComponent } from "_components/Error";
|
||||
import { useSession } from "next-auth/react";
|
||||
import { setStandardName } from "../../../../../../helper/discord";
|
||||
import { penaltyColumns } from "(app)/admin/penalty/columns";
|
||||
@@ -73,7 +73,7 @@ export const ProfileForm: React.FC<ProfileFormProps> = ({ user }: ProfileFormPro
|
||||
defaultValues: user,
|
||||
resolver: zodResolver(UserOptionalDefaultsSchema),
|
||||
});
|
||||
if (!user) return <Error title="User not found" statusCode={404} />;
|
||||
if (!user) return <ErrorComponent title="User not found" statusCode={404} />;
|
||||
return (
|
||||
<form
|
||||
className="card-body"
|
||||
@@ -663,16 +663,25 @@ export const AdminForm = ({
|
||||
>
|
||||
<Button
|
||||
onClick={async () => {
|
||||
await setStandardName({
|
||||
memberId: discordAccount.discordId,
|
||||
userId: user.id,
|
||||
});
|
||||
toast.success("Standard Name wurde gesetzt!", {
|
||||
style: {
|
||||
background: "var(--color-base-100)",
|
||||
color: "var(--color-base-content)",
|
||||
},
|
||||
});
|
||||
try {
|
||||
const response = await setStandardName({
|
||||
memberId: discordAccount.discordId,
|
||||
userId: user.id,
|
||||
});
|
||||
if (response?.error) {
|
||||
throw new Error(response.error);
|
||||
}
|
||||
toast.success("Standard Name wurde gesetzt!", {
|
||||
style: {
|
||||
background: "var(--color-base-100)",
|
||||
color: "var(--color-base-content)",
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
toast.error(
|
||||
"Fehler beim setzen des Standard Namens: " + (error as Error).message,
|
||||
);
|
||||
}
|
||||
}}
|
||||
className="btn-sm btn-outline btn-info w-full"
|
||||
>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"use server";
|
||||
import axios from "axios";
|
||||
import axios, { AxiosError } from "axios";
|
||||
|
||||
const discordAxiosClient = axios.create({
|
||||
baseURL: process.env.CORE_SERVER_URL || "http://localhost:3005",
|
||||
@@ -55,12 +55,14 @@ export const setStandardName = async ({
|
||||
memberId: string;
|
||||
userId: string;
|
||||
}) => {
|
||||
discordAxiosClient
|
||||
.post("/helper/set-standard-name", {
|
||||
try {
|
||||
await discordAxiosClient.post("/helper/set-standard-name", {
|
||||
memberId,
|
||||
userId,
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("Error removing roles from member:", error);
|
||||
});
|
||||
} catch (error) {
|
||||
return {
|
||||
error: (error as AxiosError<{ error: string }>).response?.data.error || "Unknown error",
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user