add: working JSON data insert
This commit is contained in:
@@ -15,7 +15,9 @@ const dirname = path.dirname(filename)
|
||||
export const Media: CollectionConfig = {
|
||||
slug: 'media',
|
||||
access: {
|
||||
|
||||
create: ({ req: { user } }) => Boolean(user),
|
||||
update: ({ req: { user } }) => Boolean(user && user.role === 'admin'),
|
||||
delete: ({ req: { user } }) => Boolean(user && user.role === 'admin'),
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
import type { CollectionConfig } from "payload";
|
||||
|
||||
|
||||
|
||||
|
||||
export const Papers: CollectionConfig = {
|
||||
slug: "papers",
|
||||
labels: {
|
||||
@@ -18,49 +15,61 @@ export const Papers: CollectionConfig = {
|
||||
if (!user || !id) return false; // Explicitly handle missing ID
|
||||
|
||||
const paper = await payload.findByID({
|
||||
collection: 'papers',
|
||||
collection: "papers",
|
||||
id,
|
||||
depth: 1,
|
||||
});
|
||||
|
||||
if (!paper) return false;
|
||||
|
||||
return paper.authors.some((author: any) => author.user.id === user.id);
|
||||
return paper.authors.some((author: any) => author.user.name === user.name);
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
admin: {
|
||||
useAsTitle: "title",
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
name: "published",
|
||||
type: "checkbox",
|
||||
defaultValue: false,
|
||||
label: "Veröffentlicht",
|
||||
access: {
|
||||
update: ({ req: { user } }) => Boolean(user?.type === "admin"),
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "title",
|
||||
type: "text",
|
||||
required: true,
|
||||
unique: true,
|
||||
},
|
||||
{
|
||||
name: "department",
|
||||
type: "select",
|
||||
options: [
|
||||
{ label: "WI", value: "WI" },
|
||||
{ label: "CI", value: "CI" },
|
||||
{ label: "MD", value: "MD" },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "year",
|
||||
type: "text",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "issue",
|
||||
label: "Problemstellung",
|
||||
type: "textarea",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "goal",
|
||||
label: "Zielsetzung",
|
||||
type: "textarea",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "result",
|
||||
label: "Ergebnis",
|
||||
type: "textarea",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "technologies",
|
||||
@@ -75,7 +84,6 @@ export const Papers: CollectionConfig = {
|
||||
{
|
||||
name: "description",
|
||||
type: "text",
|
||||
required: true,
|
||||
admin: {
|
||||
placeholder: "... wurde für das Frontend verwendet",
|
||||
},
|
||||
@@ -90,32 +98,26 @@ export const Papers: CollectionConfig = {
|
||||
name: "image",
|
||||
type: "upload",
|
||||
relationTo: "media",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "description",
|
||||
type: "text",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
name: "mentor",
|
||||
type: "text",
|
||||
label: "Betreuer",
|
||||
},
|
||||
{
|
||||
name: "authors",
|
||||
type: "array",
|
||||
label: "Projektmitglieder",
|
||||
required: true,
|
||||
fields: [
|
||||
{
|
||||
name: "profilePicture",
|
||||
type: "upload",
|
||||
relationTo: "media",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: "user",
|
||||
type: "relationship",
|
||||
relationTo: "users",
|
||||
name: "name",
|
||||
type: "text",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
@@ -136,7 +138,6 @@ export const Papers: CollectionConfig = {
|
||||
{
|
||||
name: "description",
|
||||
type: "text",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
validate: (authors) => {
|
||||
|
||||
@@ -1,20 +1,52 @@
|
||||
import type { CollectionConfig } from 'payload'
|
||||
import type { CollectionConfig } from 'payload';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const filename = fileURLToPath(import.meta.url);
|
||||
const dirname = path.dirname(filename);
|
||||
|
||||
export const Users: CollectionConfig = {
|
||||
slug: 'users',
|
||||
admin: {
|
||||
useAsTitle: 'email',
|
||||
},
|
||||
access: {
|
||||
create: ({ req: { user } }) => Boolean(user && user.type === 'admin'),
|
||||
update: ({ req: { user } }) => {
|
||||
if (!user) return false;
|
||||
if(user.type === 'admin') return true;
|
||||
return false;
|
||||
},
|
||||
delete: ({ req: { user } }) => Boolean(user && user.type === 'admin'),
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
name: 'type',
|
||||
name: 'type',
|
||||
type: 'select',
|
||||
options: [
|
||||
{ label: 'Admin', value: 'admin' },
|
||||
{ label: 'Schüler', value: 'student' },
|
||||
],
|
||||
}
|
||||
defaultValue: 'student',
|
||||
},
|
||||
{
|
||||
name: 'email',
|
||||
type: 'email',
|
||||
required: true,
|
||||
unique: true,
|
||||
|
||||
},
|
||||
{
|
||||
name: 'emailVerified',
|
||||
type: 'date',
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
name: 'image',
|
||||
type: 'text',
|
||||
required: false,
|
||||
},
|
||||
// Email added by default
|
||||
// Add more fields as needed
|
||||
],
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user