fix: harden booking and meeting flows

This commit is contained in:
2026-09-17 02:42:27 +02:00
parent cb30ecade9
commit 66710fc65c
42 changed files with 683 additions and 608 deletions
+5 -3
View File
@@ -3,6 +3,7 @@ import { isAdmin, isAdminFieldLevel, publishedOrAdmin } from "@/access";
import { slugField } from "@/fields/slug";
import { seoFields } from "@/fields/seo";
import { generateMeetingPassword } from "@/lib/meeting/password";
import { revokeChangedMeeting } from "@/lib/meeting/revoke";
export const EVENT_CATEGORIES = [
{ label: "Prozessbegleitung", value: "prozessbegleitung" },
@@ -18,9 +19,9 @@ export const EVENT_CATEGORIES = [
// Auto-generates the meeting password for new online events, and
// regenerates it whenever the admin ticks "Neues Passwort generieren".
// Never derived from the event id/slug — always a fresh random value.
const setMeetingPassword: CollectionBeforeChangeHook = ({ data }) => {
if (!data?.isOnline) return data;
if (!data.meetingPassword || data.regeneratePassword) {
const setMeetingPassword: CollectionBeforeChangeHook = ({ data, originalDoc }) => {
if (!(data.isOnline ?? originalDoc?.isOnline)) return data;
if (!(data.meetingPassword ?? originalDoc?.meetingPassword) || data.regeneratePassword || originalDoc?.isOnline === false) {
data.meetingPassword = generateMeetingPassword();
}
data.regeneratePassword = false;
@@ -52,6 +53,7 @@ export const Events: CollectionConfig = {
},
hooks: {
beforeChange: [setMeetingPassword],
afterChange: [revokeChangedMeeting],
},
fields: [
{