fix: harden booking and meeting flows
This commit is contained in:
@@ -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: [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user