diff --git a/apps/api/src/server.ts b/apps/api/src/server.ts index 99014228..b0306897 100644 --- a/apps/api/src/server.ts +++ b/apps/api/src/server.ts @@ -23,7 +23,13 @@ app.use( helmet({ contentSecurityPolicy: { directives: { - 'img-src': ["'self'", '*.githubusercontent.com', 'data:', 'dlrgbrahmseedigitalprod.blob.core.windows.net'], + 'img-src': [ + "'self'", + '*.githubusercontent.com', + 'blob:', + 'data:', + 'dlrgbrahmseedigitalprod.blob.core.windows.net', + ], 'connect-src': ["'self'", 'dlrgbrahmseedigitalprod.blob.core.windows.net'], }, }, diff --git a/apps/api/src/services/customFields/customFields.router.ts b/apps/api/src/services/customFields/customFields.router.ts index b3d6b8d6..926ee5d4 100644 --- a/apps/api/src/services/customFields/customFields.router.ts +++ b/apps/api/src/services/customFields/customFields.router.ts @@ -6,7 +6,7 @@ import { customFieldsList } from './customFieldsList.js' import { customFieldsTemplates } from './customFieldsTemplates.js' import { customFieldsUnterveranstaltungCreate } from './customFieldsUnterveranstaltungCreate.js' import { customFieldsVeranstaltungCreate } from './customFieldsVeranstaltungCreate.js' -import { customFieldsDelete } from './customFieldsDelete.js' +import { customFieldsVeranstaltungDelete, customFieldsUnterveranstaltungDelete } from './customFieldsDelete.js' import { customFieldsUpdate } from './customFieldsUpdate.js' import { customFieldValuesUpdate } from './customFieldValuesUpdate.js' // Import Routes here - do not delete this line @@ -16,7 +16,8 @@ export const customFieldsRouter = mergeRouters( customFieldsGet.router, customFieldsVeranstaltungCreate.router, customFieldsUpdate.router, - customFieldsDelete.router, + customFieldsVeranstaltungDelete.router, + customFieldsUnterveranstaltungDelete.router, customFieldsUnterveranstaltungCreate.router, customFieldValuesUpdate.router, customFieldsTemplates.router diff --git a/apps/api/src/services/customFields/customFieldsDelete.ts b/apps/api/src/services/customFields/customFieldsDelete.ts index 8f7adccc..46ea0f48 100644 --- a/apps/api/src/services/customFields/customFieldsDelete.ts +++ b/apps/api/src/services/customFields/customFieldsDelete.ts @@ -1,17 +1,34 @@ import { Role } from '@prisma/client' -import { TRPCError } from '@trpc/server' import { z } from 'zod' import prisma from '../../prisma.js' import { defineProtectedMutateProcedure } from '../../types/defineProcedure.js' +import { TRPCError } from '@trpc/server' -export const customFieldsDelete = defineProtectedMutateProcedure({ - key: 'delete', - roleIds: [Role.ADMIN, Role.GLIEDERUNG_ADMIN], +export const customFieldsVeranstaltungDelete = defineProtectedMutateProcedure({ + key: 'veranstaltungDelete', + roleIds: [Role.ADMIN], inputSchema: z.strictObject({ veranstaltungId: z.number(), fieldId: z.number(), }), + async handler({ input }) { + await prisma.customField.delete({ + where: { + id: input.fieldId, + veranstaltungId: input.veranstaltungId, + }, + }) + }, +}) + +export const customFieldsUnterveranstaltungDelete = defineProtectedMutateProcedure({ + key: 'unterveranstaltungDelete', + roleIds: [Role.ADMIN, Role.GLIEDERUNG_ADMIN], + inputSchema: z.strictObject({ + unterveranstaltungId: z.number(), + fieldId: z.number(), + }), async handler({ ctx, input }) { if (ctx.account.role === Role.GLIEDERUNG_ADMIN) { const { gliederungId: gliederungIdActor } = await prisma.person.findFirstOrThrow({ @@ -43,23 +60,9 @@ export const customFieldsDelete = defineProtectedMutateProcedure({ } } - const field = await prisma.customField.findUnique({ - where: { - id: input.fieldId, - veranstaltungId: input.veranstaltungId, - }, - }) - - if (field === null) { - throw new TRPCError({ - code: 'NOT_FOUND', - }) - } - await prisma.customField.delete({ where: { id: input.fieldId, - veranstaltungId: input.veranstaltungId, }, }) }, diff --git a/apps/frontend/src/components/CustomFields/CustomFieldDeleteModal.vue b/apps/frontend/src/components/CustomFields/CustomFieldDeleteModal.vue new file mode 100644 index 00000000..f5636596 --- /dev/null +++ b/apps/frontend/src/components/CustomFields/CustomFieldDeleteModal.vue @@ -0,0 +1,115 @@ + + + diff --git a/apps/frontend/src/components/CustomFields/CustomFieldsFormEdit.vue b/apps/frontend/src/components/CustomFields/CustomFieldsFormEdit.vue index f57a3658..66199826 100644 --- a/apps/frontend/src/components/CustomFields/CustomFieldsFormEdit.vue +++ b/apps/frontend/src/components/CustomFields/CustomFieldsFormEdit.vue @@ -1,6 +1,6 @@