Initial commit: ANOUMA website with Payload CMS, WebRTC meetings, and booking system
- Next.js 16 App Router site with the ANOUMA design system - Payload CMS (PostgreSQL) for offers, events, posts and page content - WebRTC video-call system with custom signaling server - SMTP email reminders and booking-request notifications - Customer accounts, calendar-based availability, and booking workflow
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import type { CollectionConfig } from "payload";
|
||||
import { isAdmin, isAdminFieldLevel } from "@/access";
|
||||
|
||||
export const Users: CollectionConfig = {
|
||||
slug: "users",
|
||||
labels: {
|
||||
singular: "Benutzer:in",
|
||||
plural: "Benutzer:innen",
|
||||
},
|
||||
admin: {
|
||||
useAsTitle: "name",
|
||||
defaultColumns: ["name", "email", "role"],
|
||||
description: "Zugänge für den geschützten Admin-Bereich.",
|
||||
},
|
||||
auth: {
|
||||
// Payload shows a "create first user" screen automatically when this
|
||||
// collection is empty, bypassing normal access control just for that
|
||||
// one-time setup — no hardcoded default password is ever needed.
|
||||
maxLoginAttempts: 5,
|
||||
lockTime: 10 * 60 * 1000,
|
||||
},
|
||||
access: {
|
||||
read: isAdmin,
|
||||
create: isAdmin,
|
||||
update: isAdmin,
|
||||
delete: isAdmin,
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
name: "name",
|
||||
type: "text",
|
||||
label: "Name",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "role",
|
||||
type: "select",
|
||||
label: "Rolle",
|
||||
required: true,
|
||||
defaultValue: "admin",
|
||||
// Only "admin" exists today; add further roles here later and extend
|
||||
// the checks in access/index.ts to match.
|
||||
options: [{ label: "Administrator:in", value: "admin" }],
|
||||
access: {
|
||||
update: isAdminFieldLevel,
|
||||
},
|
||||
},
|
||||
// "email" and "password" are added automatically by `auth: true`-style config.
|
||||
],
|
||||
};
|
||||
Reference in New Issue
Block a user