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