import { APIError } from 'payload'; /** * Blocks deletion of a page assigned a System Page role (homepage, * privacyPolicy, cookiePolicy, termsOfService). An editor deleting the privacy * policy or homepage by accident would break routing and compliance links; this * stops it with a clear error. They must unassign the role first (deliberate). * * Reads the role assignments from SiteSettings (which page holds which role). * * hooks: { beforeDelete: [buildPreventDeleteSystemPage({ settingsSlug: 'site-settings' })] } */ export function buildPreventDeleteSystemPage(args = {}) { const settingsSlug = args.settingsSlug ?? 'site-settings'; const roleFields = args.roleFields ?? [ 'homepage', 'privacyPolicy', 'cookiePolicy', 'termsOfService' ]; return async ({ id, req })=>{ const settings = await req.payload.findGlobal({ slug: settingsSlug, depth: 0 }).catch(()=>null); if (!settings) { return; } for (const field of roleFields){ const assigned = settings[field]; const assignedId = assigned && typeof assigned === 'object' ? assigned.id : assigned; if (assignedId != null && String(assignedId) === String(id)) { throw new APIError(`Nie można usunąć strony przypisanej do roli systemowej "${field}". ` + `Najpierw odłącz rolę w Site Settings.`, 400); } } }; } //# sourceMappingURL=preventDeleteSystemPage.js.map