Replace legacy isDeveloper/isAdmin/hasRoles checks with hasPermission/requirePermission across all collections. Add roleDocs relationship to Users, enlistmentDate to Profiles, and field-level intel_excerpt permission gate on Profiles. Auto-generated payload-types updated to reflect the new Roles collection and roleDocs field.
71 lines
1.5 KiB
TypeScript
71 lines
1.5 KiB
TypeScript
import { CollectionConfig } from "payload";
|
|
import { requirePermission } from "@/utils/access-control/hasPermission";
|
|
|
|
export const Campaigns: CollectionConfig = {
|
|
slug: "campaigns",
|
|
admin: {
|
|
group: "Intelligence",
|
|
useAsTitle: "name",
|
|
},
|
|
access: {
|
|
create: requirePermission("campaigns:create"),
|
|
update: requirePermission("campaigns:update"),
|
|
delete: requirePermission("campaigns:delete"),
|
|
read: ({ req }) => !!req.user,
|
|
},
|
|
fields: [
|
|
{
|
|
name: "name",
|
|
type: "text",
|
|
required: true,
|
|
unique: true,
|
|
},
|
|
{
|
|
name: "summary",
|
|
type: "textarea",
|
|
required: true,
|
|
defaultValue: "An Arma 3 campaign.",
|
|
},
|
|
{
|
|
name: "status",
|
|
type: "select",
|
|
options: [
|
|
{
|
|
label: "Concept",
|
|
value: "concept",
|
|
},
|
|
{
|
|
label: "In Progress",
|
|
value: "inProgress",
|
|
},
|
|
{
|
|
label: "Completed",
|
|
value: "completed",
|
|
},
|
|
],
|
|
required: true,
|
|
defaultValue: "concept",
|
|
},
|
|
{
|
|
name: "description",
|
|
type: "richText",
|
|
},
|
|
{
|
|
name: "startDate",
|
|
type: "date",
|
|
},
|
|
{
|
|
name: "endDate",
|
|
type: "date",
|
|
},
|
|
{
|
|
name: "coverImage",
|
|
type: "upload",
|
|
relationTo: "media",
|
|
admin: {
|
|
description:
|
|
"Background image for the campaign selector card on the campaigns page. Renders translucent with hover effects. Recommended aspect ratio: 16:9 or square.",
|
|
},
|
|
},
|
|
],
|
|
};
|