major: Rename legalconsenthub to gremiumhub
All checks were successful
CI/CD Pipeline / frontend (push) Successful in 5m52s
CI/CD Pipeline / backend (push) Successful in 7m58s
CI/CD Pipeline / deploy (push) Successful in 1s

This commit is contained in:
2026-03-16 10:28:32 +01:00
parent 52fe6b6392
commit afec157b35
326 changed files with 566 additions and 1004 deletions

View File

@@ -1,12 +1,12 @@
---
name: feature-implementer
description: "Use this agent when the user requests implementation of a new feature, enhancement, or functionality for the Legal Consent Hub platform. This includes adding new form elements, creating new API endpoints, implementing UI components, or extending existing capabilities."
description: "Use this agent when the user requests implementation of a new feature, enhancement, or functionality for the GremiumHub platform. This includes adding new form elements, creating new API endpoints, implementing UI components, or extending existing capabilities."
model: sonnet
color: green
tools: Read, Write, Edit, Bash, Glob, Grep
---
You are an elite full-stack feature architect for the Legal Consent Hub platform, specializing in implementing cohesive features across the entire technology stack. You have deep expertise in the platform's architecture, conventions, and design patterns.
You are an elite full-stack feature architect for the GremiumHub platform, specializing in implementing cohesive features across the entire technology stack. You have deep expertise in the platform's architecture, conventions, and design patterns.
## Your Core Responsibilities
@@ -83,10 +83,10 @@ When implementing a feature:
## Key Files Reference
- `api/legalconsenthub.yml` - OpenAPI specification
- `legalconsenthub-backend/src/main/resources/templates/application_form_latex_template.tex` - PDF template
- `legalconsenthub-backend/src/main/resources/seed/*.yaml` - Seed data
- `legalconsenthub-backend/src/main/resources/db/changelog/` - Database migrations
- `api/gremiumhub.yml` - OpenAPI specification
- `gremiumhub-backend/src/main/resources/templates/application_form_latex_template.tex` - PDF template
- `gremiumhub-backend/src/main/resources/seed/*.yaml` - Seed data
- `gremiumhub-backend/src/main/resources/db/changelog/` - Database migrations
- `.github/workflows/pipeline.yaml` - CI/CD configuration
## Composables to Leverage

View File

@@ -7,7 +7,7 @@ description: Use when modifying seed files in template/ or demo/ directories - e
## Overview
The Legal Consent Hub has two interdependent seed file directories that must stay synchronized:
GremiumHub has two interdependent seed file directories that must stay synchronized:
1. **Template** (`seed/template/`) - `isTemplate: true` - defines the form structure, element types, options, visibility conditions, section spawn triggers, and template sections.
2. **Demo form** (`seed/demo/`) - `isTemplate: false` - a realistic SAP S/4HANA application form with pre-filled values derived from the template. Used for development testing and UI validation.
@@ -17,7 +17,7 @@ Changes to either directory can break the other. This skill ensures consistency.
## File Structure
```
legalconsenthub-backend/src/main/resources/seed/
gremiumhub-backend/src/main/resources/seed/
├── template/ # Template (source of truth for structure)
│ ├── _main.yaml # Main file: isTemplate, name, !include directives
│ ├── section_01_angaben_zum_itsystem.yaml

View File

@@ -4,16 +4,16 @@ run-name: ${{ github.actor }} triggered pipeline on ${{ github.ref_name }}
on:
pull_request:
paths:
- 'legalconsenthub/**'
- 'legalconsenthub-backend/**'
- 'gremiumhub/**'
- 'gremiumhub-backend/**'
- 'api/**'
- '.github/workflows/pipeline.yaml'
push:
branches:
- main
paths:
- 'legalconsenthub/**'
- 'legalconsenthub-backend/**'
- 'gremiumhub/**'
- 'gremiumhub-backend/**'
- 'api/**'
- '.github/workflows/pipeline.yaml'
@@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./legalconsenthub
working-directory: ./gremiumhub
steps:
- name: Checkout code
@@ -89,7 +89,7 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
images: git.gremiumhub.de/${{ github.repository_owner }}/legalconsenthub
images: git.gremiumhub.de/${{ github.repository_owner }}/gremiumhub
tags: |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=sha,prefix=,format=long
@@ -98,7 +98,7 @@ jobs:
uses: docker/build-push-action@v5
with:
context: .
file: ./legalconsenthub/Dockerfile
file: ./gremiumhub/Dockerfile
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
platforms: linux/amd64
tags: ${{ steps.meta.outputs.tags }}
@@ -110,8 +110,8 @@ jobs:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
run: |
echo "✅ Docker image built and pushed successfully"
echo "📦 Image: git.gremiumhub.de/${{ github.repository_owner }}/legalconsenthub:latest"
echo "📦 Image: git.gremiumhub.de/${{ github.repository_owner }}/legalconsenthub:${{ github.sha }}"
echo "📦 Image: git.gremiumhub.de/${{ github.repository_owner }}/gremiumhub:latest"
echo "📦 Image: git.gremiumhub.de/${{ github.repository_owner }}/gremiumhub:${{ github.sha }}"
- name: Dry-run completed
if: github.event_name == 'pull_request'
@@ -123,7 +123,7 @@ jobs:
defaults:
run:
working-directory: ./legalconsenthub-backend
working-directory: ./gremiumhub-backend
steps:
- name: Checkout code
@@ -141,7 +141,7 @@ jobs:
path: |
~/.gradle/caches
~/.gradle/wrapper
legalconsenthub-backend/.gradle
gremiumhub-backend/.gradle
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
@@ -172,7 +172,7 @@ jobs:
id: meta
uses: docker/metadata-action@v5
with:
images: git.gremiumhub.de/${{ github.repository_owner }}/legalconsenthub-backend
images: git.gremiumhub.de/${{ github.repository_owner }}/gremiumhub-backend
tags: |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
type=sha,prefix=,format=long
@@ -181,7 +181,7 @@ jobs:
uses: docker/build-push-action@v5
with:
context: .
file: ./legalconsenthub-backend/Dockerfile
file: ./gremiumhub-backend/Dockerfile
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
platforms: linux/amd64
tags: ${{ steps.meta.outputs.tags }}
@@ -193,8 +193,8 @@ jobs:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
run: |
echo "✅ Docker image built and pushed successfully"
echo "📦 Image: git.gremiumhub.de/${{ github.repository_owner }}/legalconsenthub-backend:latest"
echo "📦 Image: git.gremiumhub.de/${{ github.repository_owner }}/legalconsenthub-backend:${{ github.sha }}"
echo "📦 Image: git.gremiumhub.de/${{ github.repository_owner }}/gremiumhub-backend:latest"
echo "📦 Image: git.gremiumhub.de/${{ github.repository_owner }}/gremiumhub-backend:${{ github.sha }}"
- name: Dry-run completed
if: github.event_name == 'pull_request'

9
.gitignore vendored
View File

@@ -58,18 +58,19 @@ bin/
.kotlin
### OpenAPI ###
legalconsenthub/.api-client
legalconsenthub/.api-client-middleware
gremiumhub/.api-client
gremiumhub/.api-client-middleware
### TestContainers persistent data ###
legalconsenthub-backend/postgres-data/
gremiumhub-backend/postgres-data/
### Docker BuildKit cache ###
.buildx-cache/
### Version PDF cache (dev) ###
legalconsenthub-backend/.pdf-store/*
gremiumhub-backend/.pdf-store/*
data
.playwright-*
coverage
.worktrees/

View File

@@ -3,8 +3,8 @@
<option name="ACTIVE_PROFILES" value="h2" />
<option name="ALTERNATIVE_JRE_PATH" value="ms-21" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<module name="com.betriebsratkanzlei.legalconsenthub.main" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.betriebsratkanzlei.legalconsenthub.LegalconsenthubApplication" />
<module name="gremiumhub.main" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.betriebsratkanzlei.gremiumhub.GremiumhubApplication" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@@ -3,9 +3,9 @@
<option name="ACTIVE_PROFILES" value="testcontainers" />
<option name="ALTERNATIVE_JRE_PATH" value="ms-21" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<module name="com.betriebsratkanzlei.legalconsenthub.main" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.betriebsratkanzlei.legalconsenthub.LegalconsenthubApplication" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/legalconsenthub-backend" />
<module name="com.betriebsratkanzlei.gremiumhub.main" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.betriebsratkanzlei.gremiumhub.GremiumhubApplication" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/gremiumhub-backend" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="server: nuxt" type="NodeJSConfigurationType" application-parameters="dev --port 3001 --host" path-to-js-file="node_modules/nuxt/bin/nuxt.mjs" working-dir="$PROJECT_DIR$/legalconsenthub">
<configuration default="false" name="server: nuxt" type="NodeJSConfigurationType" application-parameters="dev --port 3001 --host" path-to-js-file="node_modules/nuxt/bin/nuxt.mjs" working-dir="$PROJECT_DIR$/gremiumhub">
<method v="2" />
</configuration>
</component>

4
.vscode/launch.json vendored
View File

@@ -8,13 +8,13 @@
"request": "launch",
"name": "client: chrome",
"url": "http://192.168.178.114:3001",
"webRoot": "${workspaceFolder}/legalconsenthub"
"webRoot": "${workspaceFolder}/gremiumhub"
},
{
"request": "launch",
"name": "server: nuxt",
"outputCapture": "std",
"cwd": "${workspaceFolder}/legalconsenthub",
"cwd": "${workspaceFolder}/gremiumhub",
"type": "node-terminal",
"command": "pnpm run dev"
}

View File

@@ -1,4 +1,4 @@
# Legal Consent Hub - AI Context
# GremiumHub - AI Context
## Overview
@@ -73,9 +73,9 @@ ApplicationForm
## Project Structure
```
legalconsenthub/ # Frontend (Nuxt 4, Vue 3) - see legalconsenthub/CLAUDE.md
api/ # OpenAPI spec - see api/CLAUDE.md
legalconsenthub-backend/ # Backend (Spring Boot, Kotlin) - see legalconsenthub-backend/CLAUDE.md
gremiumhub/ # Frontend (Nuxt 4, Vue 3) - see gremiumhub/CLAUDE.md
api/ # OpenAPI spec - see api/CLAUDE.md
gremiumhub-backend/ # Backend (Spring Boot, Kotlin) - see gremiumhub-backend/CLAUDE.md
```
---
@@ -84,20 +84,20 @@ legalconsenthub-backend/ # Backend (Spring Boot, Kotlin) - see legalconsen
```bash
# Frontend (port 3001)
cd legalconsenthub && pnpm install && pnpm run dev
cd gremiumhub && pnpm install && pnpm run dev
# Backend (port 8080)
cd legalconsenthub-backend && ./gradlew bootRun
cd gremiumhub-backend && ./gradlew bootRun
# Generate API clients (REQUIRED after modifying api/legalconsenthub.yml)
cd legalconsenthub && pnpm run api:generate # Frontend TypeScript client
cd legalconsenthub-backend && ./gradlew generate_legalconsenthub_server # Backend Kotlin server stubs
# Generate API clients (REQUIRED after modifying api/gremiumhub.yml)
cd gremiumhub && pnpm run api:generate # Frontend TypeScript client
cd gremiumhub-backend && ./gradlew generate_gremiumhub_server # Backend Kotlin server stubs
```
**⚠️ CRITICAL: API Client Regeneration**
After ANY change to `api/legalconsenthub.yml`, you MUST regenerate BOTH clients:
After ANY change to `api/gremiumhub.yml`, you MUST regenerate BOTH clients:
1. Frontend: `pnpm run api:generate` (TypeScript client)
2. Backend: `./gradlew generate_legalconsenthub_server` (Kotlin server stubs)
2. Backend: `./gradlew generate_gremiumhub_server` (Kotlin server stubs)
Compilation/runtime will fail if clients are out of sync with the OpenAPI spec.
@@ -107,7 +107,7 @@ Compilation/runtime will fail if clients are out of sync with the OpenAPI spec.
| File | Purpose |
|------|---------|
| `api/legalconsenthub.yml` | OpenAPI spec (source of truth) |
| `api/gremiumhub.yml` | OpenAPI spec (source of truth) |
| `.github/workflows/pipeline.yaml` | CI/CD workflow |
See subproject CLAUDE.md files for component-specific key files.
@@ -117,9 +117,9 @@ See subproject CLAUDE.md files for component-specific key files.
## Rules for AI
1. **API-first workflow** - ALWAYS follow this sequence when modifying APIs:
a. Modify `api/legalconsenthub.yml` OpenAPI spec first
b. Regenerate frontend client: `cd legalconsenthub && pnpm run api:generate`
c. Regenerate backend stubs: `cd legalconsenthub-backend && ./gradlew generate_legalconsenthub_server`
a. Modify `api/gremiumhub.yml` OpenAPI spec first
b. Regenerate frontend client: `cd gremiumhub && pnpm run api:generate`
c. Regenerate backend stubs: `cd gremiumhub-backend && ./gradlew generate_gremiumhub_server`
d. **Update backend entity class AND mapper class** for every new DTO field — fields missing from the entity silently return `null` from the API. If the new field requires database storage, note that a SQL migration is needed (the user handles migrations).
e. Implement backend controller methods (they implement generated interfaces)
f. Use generated client in frontend (never write manual API calls)
@@ -127,6 +127,7 @@ See subproject CLAUDE.md files for component-specific key files.
3. **Form structure is 3-level** - Section → SubSection → Element
4. **Roles managed in Keycloak** - Not in application database
5. **Subproject-specific rules** - See `CLAUDE.md` files in each subproject directory
6. **Don't create worktrees, don't commit** - Directly modify the main branch. The user will handle branching and PRs.
### Code Style
- Order functions top-down by abstraction (public API first, helpers below)

View File

@@ -1,4 +1,4 @@
# Legal Consent Hub
# GremiumHub
A comprehensive platform for digital applications, approvals, and discussions, designed for organizational workflows involving employee data processing and consent management.

View File

@@ -43,13 +43,13 @@ DELETE /notifications/clear-all
| File | Purpose |
|------|---------|
| `legalconsenthub.yml` | OpenAPI 3.0.3 specification (source of truth) |
| `gremiumhub.yml` | OpenAPI 3.0.3 specification (source of truth) |
---
## API-First Workflow
1. **Modify OpenAPI spec** (`api/legalconsenthub.yml`)
1. **Modify OpenAPI spec** (`api/gremiumhub.yml`)
- Add/update endpoints, request/response schemas
- Follow OpenAPI 3.0.3 standards
- Document all parameters and responses
@@ -57,10 +57,10 @@ DELETE /notifications/clear-all
2. **Generate clients**
```bash
# Frontend TypeScript client
cd legalconsenthub && pnpm run api:generate
cd gremiumhub && pnpm run api:generate
# Backend Kotlin server stubs
cd legalconsenthub-backend && ./gradlew generate_legalconsenthub_server
cd gremiumhub-backend && ./gradlew generate_gremiumhub_server
```
3. **Implement backend logic**

View File

@@ -1,6 +1,6 @@
openapi: "3.0.3"
info:
title: legalconsenthub
title: gremiumhub
version: 0.1.0
description: A platform for digital applications, approvals and discussions.
contact:

View File

@@ -1,9 +1,9 @@
# Same file as .env in Synology docker directory
# Database Configuration
LEGALCONSENTHUB_POSTGRES_USER=legalconsenthub
LEGALCONSENTHUB_POSTGRES_PASSWORD=legalconsenthub
LEGALCONSENTHUB_POSTGRES_DB=legalconsenthub
GREMIUMHUB_POSTGRES_USER=gremiumhub
GREMIUMHUB_POSTGRES_PASSWORD=gremiumhub
GREMIUMHUB_POSTGRES_DB=gremiumhub
KEYCLOAK_POSTGRES_USER=keycloak
KEYCLOAK_POSTGRES_PASSWORD=keycloak
@@ -16,17 +16,17 @@ MAIL_HOST=maildev
KEYCLOAK_ADMIN=admin
KEYCLOAK_ADMIN_PASSWORD=
KEYCLOAK_HOSTNAME=keycloak.lugnas.de
KEYCLOAK_REALM=legalconsenthub
KEYCLOAK_REALM=gremiumhub
# Frontend Configuration (Nuxt)
NUXT_PUBLIC_CLIENT_PROXY_BASE_PATH=/api
NUXT_PUBLIC_SERVER_API_BASE_URL=http://backend:8080
NUXT_PUBLIC_SERVER_API_BASE_PATH=/
NUXT_PUBLIC_KEYCLOAK_TOKEN_URL=http://keycloak.lugnas.de/realms/legalconsenthub/protocol/openid-connect/token
NUXT_PUBLIC_KEYCLOAK_TOKEN_URL=http://keycloak.lugnas.de/realms/gremiumhub/protocol/openid-connect/token
NUXT_OAUTH_KEYCLOAK_CLIENT_ID=legalconsenthub
NUXT_OAUTH_KEYCLOAK_CLIENT_ID=gremiumhub
NUXT_OAUTH_KEYCLOAK_CLIENT_SECRET=
NUXT_OAUTH_KEYCLOAK_REALM=legalconsenthub
NUXT_OAUTH_KEYCLOAK_REALM=gremiumhub
NUXT_OAUTH_KEYCLOAK_SERVER_URL=http://keycloak.lugnas.de
NUXT_OAUTH_KEYCLOAK_SERVER_URL_INTERNAL=http://keycloak.lugnas.de
# Make sure to add the host to (1) Keycloak valid redirect URIs and (2) web origins!

View File

@@ -1,18 +1,18 @@
name: legalconsenthub-dev
name: gremiumhub-dev
networks:
legalconsenthub-net:
gremiumhub-net:
driver: bridge
volumes:
legalconsenthub_postgres_data:
legalconsenthub_pdf_cache:
gremiumhub_postgres_data:
gremiumhub_pdf_cache:
keycloak_postgres_data:
services:
keycloak:
image: quay.io/keycloak/keycloak:26.4.0
container_name: legalconsenthub-keycloak
container_name: gremiumhub-keycloak
command: start-dev
environment:
KC_DB: postgres
@@ -37,7 +37,7 @@ services:
keycloak-db:
condition: service_healthy
networks:
- legalconsenthub-net
- gremiumhub-net
healthcheck:
test: ["CMD-SHELL", "curl --head -fsS http://localhost:9000/health/ready | echo $?"]
interval: 30s
@@ -47,7 +47,7 @@ services:
keycloak-db:
image: postgres:latest
container_name: legalconsenthub-keycloak-postgres
container_name: gremiumhub-keycloak-postgres
environment:
POSTGRES_USER: ${KEYCLOAK_POSTGRES_USER}
POSTGRES_PASSWORD: ${KEYCLOAK_POSTGRES_PASSWORD}
@@ -57,7 +57,7 @@ services:
ports:
- "5532:5432"
networks:
- legalconsenthub-net
- gremiumhub-net
volumes:
- keycloak_postgres_data:/var/lib/postgresql
healthcheck:
@@ -69,63 +69,63 @@ services:
maildev:
image: maildev/maildev:2.2.1
container_name: legalconsenthub-maildev
container_name: gremiumhub-maildev
ports:
- "1080:1080"
- "1025:1025"
networks:
- legalconsenthub-net
- gremiumhub-net
###############################################
#
# backend:
# image: gitea.lugnas.de/denis/legalconsenthub-backend:latest
# container_name: legalconsenthub-backend-local
# image: gitea.lugnas.de/denis/gremiumhub-backend:latest
# container_name: gremiumhub-backend-local
# restart: on-failure:2
# environment:
# LOGGING_LEVEL_ROOT: ${LOGGING_LEVEL_ROOT:-DEBUG}
# LOGGING_LEVEL_APP: ${LOGGING_LEVEL_APP:-DEBUG}
# LEGALCONSENTHUB_DB_URL: jdbc:postgresql://legalconsenthub-db:5432/${LEGALCONSENTHUB_POSTGRES_DB}
# LEGALCONSENTHUB_DB_APP_USER: ${LEGALCONSENTHUB_POSTGRES_USER}
# LEGALCONSENTHUB_DB_PASSWORD: ${LEGALCONSENTHUB_POSTGRES_PASSWORD}
# GREMIUMHUB_DB_URL: jdbc:postgresql://gremiumhub-db:5432/${GREMIUMHUB_POSTGRES_DB}
# GREMIUMHUB_DB_APP_USER: ${GREMIUMHUB_POSTGRES_USER}
# GREMIUMHUB_DB_PASSWORD: ${GREMIUMHUB_POSTGRES_PASSWORD}
# SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: ${KEYCLOAK_ISSUER_URL}/realms/${KEYCLOAK_REALM}
# SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI: http://keycloak:8080/realms/${KEYCLOAK_REALM}/protocol/openid-connect/certs
# SERVER_PORT: 8080
# LEGALCONSENTHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR: /var/lib/legalconsenthub/pdfs
# GREMIUMHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR: /var/lib/gremiumhub/pdfs
# ports:
# - "8081:8080"
# volumes:
# - legalconsenthub_pdf_cache:/var/lib/legalconsenthub/pdfs
# - gremiumhub_pdf_cache:/var/lib/gremiumhub/pdfs
# depends_on:
# legalconsenthub-db:
# gremiumhub-db:
# condition: service_started
# networks:
# - legalconsenthub-net
# - gremiumhub-net
# env_file:
# - .env.dev
#
# frontend:
# image: gitea.lugnas.de/denis/legalconsenthub:latest
# container_name: legalconsenthub-frontend-local
# image: gitea.lugnas.de/denis/gremiumhub:latest
# container_name: gremiumhub-frontend-local
# ports:
# - "3211:3000"
# networks:
# - legalconsenthub-net
# - gremiumhub-net
# env_file:
# - .env.dev
#
# legalconsenthub-db:
# gremiumhub-db:
# image: postgres:latest
# container_name: legalconsenthub-postgres-local
# container_name: gremiumhub-postgres-local
# environment:
# POSTGRES_USER: ${LEGALCONSENTHUB_POSTGRES_USER}
# POSTGRES_PASSWORD: ${LEGALCONSENTHUB_POSTGRES_PASSWORD}
# POSTGRES_DB: ${LEGALCONSENTHUB_POSTGRES_DB}
# POSTGRES_USER: ${GREMIUMHUB_POSTGRES_USER}
# POSTGRES_PASSWORD: ${GREMIUMHUB_POSTGRES_PASSWORD}
# POSTGRES_DB: ${GREMIUMHUB_POSTGRES_DB}
# ports:
# - "5446:5432"
# networks:
# - legalconsenthub-net
# - gremiumhub-net
# volumes:
# - legalconsenthub_postgres_data:/var/lib/postgresql
# - gremiumhub_postgres_data:/var/lib/postgresql
# env_file:
# - .env.dev

View File

@@ -1,66 +1,66 @@
networks:
legalconsenthub-net:
gremiumhub-net:
driver: bridge
volumes:
legalconsenthub_postgres_data:
gremiumhub_postgres_data:
keycloak_postgres_data:
legalconsenthub_pdf_cache:
gremiumhub_pdf_cache:
services:
backend:
image: gitea.lugnas.de/denis/legalconsenthub-backend:latest
container_name: legalconsenthub-backend
image: gitea.lugnas.de/denis/gremiumhub-backend:latest
container_name: gremiumhub-backend
restart: on-failure:2
environment:
LOGGING_LEVEL_ROOT: ${LOGGING_LEVEL_ROOT:-WARN}
LOGGING_LEVEL_APP: ${LOGGING_LEVEL_APP:-WARN}
LEGALCONSENTHUB_DB_URL: jdbc:postgresql://legalconsenthub-db:5432/${LEGALCONSENTHUB_POSTGRES_DB}
LEGALCONSENTHUB_DB_APP_USER: ${LEGALCONSENTHUB_POSTGRES_USER}
LEGALCONSENTHUB_DB_PASSWORD: ${LEGALCONSENTHUB_POSTGRES_PASSWORD}
GREMIUMHUB_DB_URL: jdbc:postgresql://gremiumhub-db:5432/${GREMIUMHUB_POSTGRES_DB}
GREMIUMHUB_DB_APP_USER: ${GREMIUMHUB_POSTGRES_USER}
GREMIUMHUB_DB_PASSWORD: ${GREMIUMHUB_POSTGRES_PASSWORD}
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: ${KEYCLOAK_ISSUER_URL}/realms/${KEYCLOAK_REALM}
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI: ${KEYCLOAK_ISSUER_URL}/realms/${KEYCLOAK_REALM}/protocol/openid-connect/certs
SERVER_PORT: 8080
LEGALCONSENTHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR: /var/lib/legalconsenthub/pdfs
GREMIUMHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR: /var/lib/gremiumhub/pdfs
ports:
- "8080:8080"
volumes:
- legalconsenthub_pdf_cache:/var/lib/legalconsenthub/pdfs
- gremiumhub_pdf_cache:/var/lib/gremiumhub/pdfs
- ./keycloak-theme:/opt/keycloak/themes
depends_on:
legalconsenthub-db:
gremiumhub-db:
condition: service_started
keycloak:
condition: service_started
networks:
- legalconsenthub-net
- gremiumhub-net
env_file:
- .env.prod
frontend:
image: gitea.lugnas.de/denis/legalconsenthub:latest
container_name: legalconsenthub-frontend
image: gitea.lugnas.de/denis/gremiumhub:latest
container_name: gremiumhub-frontend
ports:
- "3210:3000"
depends_on:
keycloak:
condition: service_started
networks:
- legalconsenthub-net
- gremiumhub-net
env_file:
- .env.prod
landing:
image: gitea.lugnas.de/denis/legalconsenthub-landing:latest
container_name: legalconsenthub-landing
image: gitea.lugnas.de/denis/gremiumhub-landing:latest
container_name: gremiumhub-landing
ports:
- "3211:3000"
networks:
- legalconsenthub-net
- gremiumhub-net
keycloak:
image: quay.io/keycloak/keycloak:26.4.0
container_name: legalconsenthub-keycloak
container_name: gremiumhub-keycloak
command: start-dev
environment:
KC_DB: postgres
@@ -82,13 +82,13 @@ services:
keycloak-db:
condition: service_started
networks:
- legalconsenthub-net
- gremiumhub-net
env_file:
- .env.prod
keycloak-db:
image: postgres:latest
container_name: legalconsenthub-keycloak-postgres
container_name: gremiumhub-keycloak-postgres
environment:
POSTGRES_USER: ${KEYCLOAK_POSTGRES_USER}
POSTGRES_PASSWORD: ${KEYCLOAK_POSTGRES_PASSWORD}
@@ -96,33 +96,33 @@ services:
ports:
- "5445:5432"
networks:
- legalconsenthub-net
- gremiumhub-net
volumes:
- keycloak_postgres_data:/var/lib/postgresql
env_file:
- .env.prod
legalconsenthub-db:
gremiumhub-db:
image: postgres:latest
container_name: legalconsenthub-postgres
container_name: gremiumhub-postgres
environment:
POSTGRES_USER: ${LEGALCONSENTHUB_POSTGRES_USER}
POSTGRES_PASSWORD: ${LEGALCONSENTHUB_POSTGRES_PASSWORD}
POSTGRES_DB: ${LEGALCONSENTHUB_POSTGRES_DB}
POSTGRES_USER: ${GREMIUMHUB_POSTGRES_USER}
POSTGRES_PASSWORD: ${GREMIUMHUB_POSTGRES_PASSWORD}
POSTGRES_DB: ${GREMIUMHUB_POSTGRES_DB}
ports:
- "5444:5432"
networks:
- legalconsenthub-net
- gremiumhub-net
volumes:
- legalconsenthub_postgres_data:/var/lib/postgresql
- gremiumhub_postgres_data:/var/lib/postgresql
env_file:
- .env.prod
maildev:
image: maildev/maildev:2.2.1
container_name: legalconsenthub-maildev
container_name: gremiumhub-maildev
ports:
- "1080:1080"
- "1026:1025"
networks:
- legalconsenthub-net
- gremiumhub-net

View File

@@ -1,4 +1,4 @@
# LegalConsentHub Keycloak Theme - German translations
# GremiumHub Keycloak Theme - German translations
# Override default Keycloak messages here
# Login page

View File

@@ -1,4 +1,4 @@
# LegalConsentHub Keycloak Theme - English translations
# GremiumHub Keycloak Theme - English translations
# Override default Keycloak messages here
# Login page

View File

@@ -1,4 +1,4 @@
/* LegalConsentHub Keycloak Theme - Matching Nuxt UI 4 Styling */
/* GremiumHub Keycloak Theme - Matching Nuxt UI 4 Styling */
/* Compatible with Keycloak 26+ PatternFly-based themes */
/* CSS Variables matching Nuxt UI teal/cyan/violet theme */

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -8,7 +8,7 @@
## Context
The Legal Consent Hub requires real-time notification delivery to users. When events occur (e.g., form submissions, approvals, comments), affected users should receive notifications immediately without refreshing the page.
The GremiumHub requires real-time notification delivery to users. When events occur (e.g., form submissions, approvals, comments), affected users should receive notifications immediately without refreshing the page.
### Constraint: Stateless Backend
@@ -18,7 +18,7 @@ The backend **must be stateless** for horizontal scaling. Multiple backend insta
## Current Implementation
**Location:** `src/main/kotlin/com/betriebsratkanzlei/legalconsenthub/notification/`
**Location:** `src/main/kotlin/com/betriebsratkanzlei/gremiumhub/notification/`
### Files

View File

@@ -21,7 +21,7 @@
./gradlew build
# Generate server stubs (after OpenAPI spec changes)
./gradlew generate_legalconsenthub_server
./gradlew generate_gremiumhub_server
# Database migrations
# Never create Liquibase changesets in src/main/resources/db/changelog/
@@ -88,7 +88,7 @@ formElementSections:
| `src/main/resources/seed/demo/` | Demo form sections (11 files) |
| `src/main/kotlin/.../seed/SplitYamlLoader.kt` | YAML merger for !include directives |
| `src/main/resources/db/changelog/` | Liquibase migrations |
| `src/main/kotlin/com/legalconsenthub/service/ApplicationFormFormatService.kt` | HTML/PDF export logic |
| `src/main/kotlin/com/betriebsratkanzlei/gremiumhub/application_form_version/ApplicationFormFormatService.kt` | HTML/PDF export logic |
| `docs/form-flow-diagram.md` | Visual form flow diagram (update after template changes) |
---

View File

@@ -4,18 +4,18 @@ WORKDIR /workspace/app
RUN mkdir -p ../api
COPY api/legalconsenthub.yml ../api/
COPY api/gremiumhub.yml ../api/
COPY legalconsenthub-backend/gradlew .
COPY legalconsenthub-backend/gradle gradle
COPY legalconsenthub-backend/build.gradle .
COPY legalconsenthub-backend/settings.gradle .
COPY gremiumhub-backend/gradlew .
COPY gremiumhub-backend/gradle gradle
COPY gremiumhub-backend/build.gradle .
COPY gremiumhub-backend/settings.gradle .
RUN chmod +x ./gradlew
RUN ./gradlew dependencies --no-daemon
COPY legalconsenthub-backend/src src
COPY gremiumhub-backend/src src
RUN ./gradlew bootJar -x test --no-daemon
@@ -35,14 +35,14 @@ RUN apk add --no-cache \
RUN addgroup -S spring && adduser -S spring -G spring
# PDF cache directory must be writable by the non-root user (and ideally mounted as a volume in production)
RUN mkdir -p /var/lib/legalconsenthub/pdfs && chown -R spring:spring /var/lib/legalconsenthub
RUN mkdir -p /var/lib/gremiumhub/pdfs && chown -R spring:spring /var/lib/gremiumhub
USER spring:spring
COPY --from=builder /workspace/app/build/libs/*.jar app.jar
ENV SPRING_PROFILES_ACTIVE=prod
ENV JAVA_OPTS="-Xms256m -Xmx512m"
ENV LEGALCONSENTHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR=/var/lib/legalconsenthub/pdfs
ENV GREMIUMHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR=/var/lib/gremiumhub/pdfs
EXPOSE 8080

View File

@@ -1,4 +1,4 @@
# Legal Consent Hub Backend
# GremiumHub Backend
## Pipeline Triggering

View File

@@ -68,11 +68,11 @@ ktlint {
}
}
def generatedSourcesServerLegalconsenthubDir = "$buildDir/generated/server".toString()
def generatedSourcesServerGremiumhubDir = "$buildDir/generated/server".toString()
sourceSets {
main {
kotlin.srcDirs += generatedSourcesServerLegalconsenthubDir + '/src/main/kotlin'
kotlin.srcDirs += generatedSourcesServerGremiumhubDir + '/src/main/kotlin'
}
}
@@ -80,14 +80,14 @@ tasks.named('test') {
useJUnitPlatform()
}
task generate_legalconsenthub_server(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
task generate_gremiumhub_server(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
generatorName = 'kotlin-spring'
inputSpec = "$rootDir/../api/legalconsenthub.yml".toString()
outputDir = generatedSourcesServerLegalconsenthubDir
apiPackage = 'com.betriebsratkanzlei.legalconsenthub_api.api'
modelPackage = 'com.betriebsratkanzlei.legalconsenthub_api.model'
inputSpec = "$rootDir/../api/gremiumhub.yml".toString()
outputDir = generatedSourcesServerGremiumhubDir
apiPackage = 'com.betriebsratkanzlei.gremiumhub_api.api'
modelPackage = 'com.betriebsratkanzlei.gremiumhub_api.model'
groupId = 'com.betriebsratkanzlei'
id = 'legalconsenthub_api'
id = 'gremiumhub_api'
configOptions = [useTags : 'true',
enumPropertyNaming: 'original',
interfaceOnly : 'true',
@@ -96,5 +96,5 @@ task generate_legalconsenthub_server(type: org.openapitools.generator.gradle.plu
importMappings = [Instant: "java.time.Instant"]
}
compileKotlin.dependsOn(tasks.generate_legalconsenthub_server)
runKtlintCheckOverMainSourceSet.dependsOn(generate_legalconsenthub_server)
compileKotlin.dependsOn(tasks.generate_gremiumhub_server)
runKtlintCheckOverMainSourceSet.dependsOn(generate_gremiumhub_server)

View File

@@ -0,0 +1 @@
rootProject.name = 'gremiumhub'

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub
package com.betriebsratkanzlei.gremiumhub
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@@ -10,8 +10,8 @@ import org.springframework.scheduling.annotation.EnableScheduling
@EnableJpaAuditing
@EnableAsync
@EnableScheduling
class LegalconsenthubApplication
class GremiumhubApplication
fun main(args: Array<String>) {
runApplication<LegalconsenthubApplication>(*args)
runApplication<GremiumhubApplication>(*args)
}

View File

@@ -1,9 +1,9 @@
package com.betriebsratkanzlei.legalconsenthub.application_form
package com.betriebsratkanzlei.gremiumhub.application_form
import com.betriebsratkanzlei.legalconsenthub.application_form_version.ApplicationFormVersion
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementSection
import com.betriebsratkanzlei.legalconsenthub.user.User
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormStatus
import com.betriebsratkanzlei.gremiumhub.application_form_version.ApplicationFormVersion
import com.betriebsratkanzlei.gremiumhub.form_element.FormElementSection
import com.betriebsratkanzlei.gremiumhub.user.User
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormStatus
import jakarta.persistence.CascadeType
import jakarta.persistence.Column
import jakarta.persistence.Entity

View File

@@ -1,9 +1,9 @@
package com.betriebsratkanzlei.legalconsenthub.application_form
package com.betriebsratkanzlei.gremiumhub.application_form
import com.betriebsratkanzlei.legalconsenthub_api.api.ApplicationFormApi
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementDto
import com.betriebsratkanzlei.legalconsenthub_api.model.PagedApplicationFormDto
import com.betriebsratkanzlei.gremiumhub_api.api.ApplicationFormApi
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.gremiumhub_api.model.FormElementDto
import com.betriebsratkanzlei.gremiumhub_api.model.PagedApplicationFormDto
import org.springframework.http.ResponseEntity
import org.springframework.security.access.prepost.PreAuthorize
import org.springframework.web.bind.annotation.RestController

View File

@@ -1,16 +1,16 @@
package com.betriebsratkanzlei.legalconsenthub.application_form
package com.betriebsratkanzlei.gremiumhub.application_form
import com.betriebsratkanzlei.legalconsenthub.application_form.export.latex.LatexEscaper
import com.betriebsratkanzlei.legalconsenthub.application_form.export.latex.LatexExportModel
import com.betriebsratkanzlei.legalconsenthub.application_form.export.latex.LatexFormElement
import com.betriebsratkanzlei.legalconsenthub.application_form.export.latex.LatexPdfRenderer
import com.betriebsratkanzlei.legalconsenthub.application_form.export.latex.LatexSection
import com.betriebsratkanzlei.legalconsenthub.application_form.export.latex.LatexSubSection
import com.betriebsratkanzlei.legalconsenthub.application_form.export.latex.RichTextToLatexConverter
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormSnapshotDto
import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSectionSnapshotDto
import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSnapshotDto
import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSubSectionSnapshotDto
import com.betriebsratkanzlei.gremiumhub.application_form.export.latex.LatexEscaper
import com.betriebsratkanzlei.gremiumhub.application_form.export.latex.LatexExportModel
import com.betriebsratkanzlei.gremiumhub.application_form.export.latex.LatexFormElement
import com.betriebsratkanzlei.gremiumhub.application_form.export.latex.LatexPdfRenderer
import com.betriebsratkanzlei.gremiumhub.application_form.export.latex.LatexSection
import com.betriebsratkanzlei.gremiumhub.application_form.export.latex.LatexSubSection
import com.betriebsratkanzlei.gremiumhub.application_form.export.latex.RichTextToLatexConverter
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormSnapshotDto
import com.betriebsratkanzlei.gremiumhub_api.model.FormElementSectionSnapshotDto
import com.betriebsratkanzlei.gremiumhub_api.model.FormElementSnapshotDto
import com.betriebsratkanzlei.gremiumhub_api.model.FormElementSubSectionSnapshotDto
import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import org.springframework.stereotype.Service
@@ -20,10 +20,10 @@ import java.time.Instant
import java.time.LocalDate
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionGroup as VisibilityConditionGroupDto
import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionNode as VisibilityConditionNodeDto
import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionOperator as VisibilityConditionOperatorDto
import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionType as VisibilityConditionTypeDto
import com.betriebsratkanzlei.gremiumhub_api.model.VisibilityConditionGroup as VisibilityConditionGroupDto
import com.betriebsratkanzlei.gremiumhub_api.model.VisibilityConditionNode as VisibilityConditionNodeDto
import com.betriebsratkanzlei.gremiumhub_api.model.VisibilityConditionOperator as VisibilityConditionOperatorDto
import com.betriebsratkanzlei.gremiumhub_api.model.VisibilityConditionType as VisibilityConditionTypeDto
@Service
class ApplicationFormFormatService(

View File

@@ -1,10 +1,10 @@
package com.betriebsratkanzlei.legalconsenthub.application_form
package com.betriebsratkanzlei.gremiumhub.application_form
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementSectionMapper
import com.betriebsratkanzlei.legalconsenthub.user.User
import com.betriebsratkanzlei.legalconsenthub.user.UserMapper
import com.betriebsratkanzlei.legalconsenthub.user.UserService
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.gremiumhub.form_element.FormElementSectionMapper
import com.betriebsratkanzlei.gremiumhub.user.User
import com.betriebsratkanzlei.gremiumhub.user.UserMapper
import com.betriebsratkanzlei.gremiumhub.user.UserService
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormDto
import org.springframework.stereotype.Component
import java.time.Instant
import java.util.UUID
@@ -60,7 +60,7 @@ class ApplicationFormMapper(
organizationId = applicationFormDto.organizationId ?: "",
status =
applicationFormDto.status
?: com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormStatus.DRAFT,
?: com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormStatus.DRAFT,
createdBy = user,
lastModifiedBy = user,
)

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form
package com.betriebsratkanzlei.gremiumhub.application_form
import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable

View File

@@ -1,24 +1,24 @@
package com.betriebsratkanzlei.legalconsenthub.application_form
package com.betriebsratkanzlei.gremiumhub.application_form
import com.betriebsratkanzlei.legalconsenthub.application_form_version.ApplicationFormVersionService
import com.betriebsratkanzlei.legalconsenthub.comment.CommentRepository
import com.betriebsratkanzlei.legalconsenthub.email.ApplicationFormCreatedEvent
import com.betriebsratkanzlei.legalconsenthub.email.ApplicationFormSubmittedEvent
import com.betriebsratkanzlei.legalconsenthub.email.ApplicationFormUpdatedEvent
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormInvalidStateException
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotCreatedException
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotDeletedException
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotUpdatedException
import com.betriebsratkanzlei.legalconsenthub.file.FileService
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementMapper
import com.betriebsratkanzlei.legalconsenthub.notification.NotificationService
import com.betriebsratkanzlei.legalconsenthub.user.UserService
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormStatus
import com.betriebsratkanzlei.legalconsenthub_api.model.CreateNotificationDto
import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementDto
import com.betriebsratkanzlei.legalconsenthub_api.model.NotificationType
import com.betriebsratkanzlei.gremiumhub.application_form_version.ApplicationFormVersionService
import com.betriebsratkanzlei.gremiumhub.comment.CommentRepository
import com.betriebsratkanzlei.gremiumhub.email.ApplicationFormCreatedEvent
import com.betriebsratkanzlei.gremiumhub.email.ApplicationFormSubmittedEvent
import com.betriebsratkanzlei.gremiumhub.email.ApplicationFormUpdatedEvent
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormInvalidStateException
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotCreatedException
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotDeletedException
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotUpdatedException
import com.betriebsratkanzlei.gremiumhub.file.FileService
import com.betriebsratkanzlei.gremiumhub.form_element.FormElementMapper
import com.betriebsratkanzlei.gremiumhub.notification.NotificationService
import com.betriebsratkanzlei.gremiumhub.user.UserService
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormStatus
import com.betriebsratkanzlei.gremiumhub_api.model.CreateNotificationDto
import com.betriebsratkanzlei.gremiumhub_api.model.FormElementDto
import com.betriebsratkanzlei.gremiumhub_api.model.NotificationType
import org.springframework.context.ApplicationEventPublisher
import org.springframework.data.domain.Page
import org.springframework.data.domain.PageRequest

View File

@@ -1,6 +1,6 @@
package com.betriebsratkanzlei.legalconsenthub.application_form
package com.betriebsratkanzlei.gremiumhub.application_form
import com.betriebsratkanzlei.legalconsenthub_api.model.PagedApplicationFormDto
import com.betriebsratkanzlei.gremiumhub_api.model.PagedApplicationFormDto
import org.springframework.data.domain.Page
import org.springframework.stereotype.Component
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form.export.latex
package com.betriebsratkanzlei.gremiumhub.application_form.export.latex
object LatexEscaper {
fun escape(text: String?): String {

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form.export.latex
package com.betriebsratkanzlei.gremiumhub.application_form.export.latex
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form.export.latex
package com.betriebsratkanzlei.gremiumhub.application_form.export.latex
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form.export.latex
package com.betriebsratkanzlei.gremiumhub.application_form.export.latex
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper

View File

@@ -1,10 +1,10 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_template
package com.betriebsratkanzlei.gremiumhub.application_form_template
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormMapper
import com.betriebsratkanzlei.legalconsenthub.application_form.PagedApplicationFormMapper
import com.betriebsratkanzlei.legalconsenthub_api.api.ApplicationFormTemplateApi
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.legalconsenthub_api.model.PagedApplicationFormDto
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormMapper
import com.betriebsratkanzlei.gremiumhub.application_form.PagedApplicationFormMapper
import com.betriebsratkanzlei.gremiumhub_api.api.ApplicationFormTemplateApi
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.gremiumhub_api.model.PagedApplicationFormDto
import org.springframework.http.ResponseEntity
import org.springframework.security.access.prepost.PreAuthorize
import org.springframework.web.bind.annotation.RestController

View File

@@ -1,13 +1,13 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_template
package com.betriebsratkanzlei.gremiumhub.application_form_template
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationForm
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormMapper
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotCreatedException
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotDeletedException
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotUpdatedException
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationForm
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormMapper
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotCreatedException
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotDeletedException
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotUpdatedException
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormDto
import org.springframework.data.domain.Page
import org.springframework.data.domain.PageRequest
import org.springframework.stereotype.Service

View File

@@ -1,8 +1,8 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version
package com.betriebsratkanzlei.gremiumhub.application_form_version
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationForm
import com.betriebsratkanzlei.legalconsenthub.user.User
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormStatus
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationForm
import com.betriebsratkanzlei.gremiumhub.user.User
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormStatus
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.EntityListeners

View File

@@ -1,12 +1,12 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version
package com.betriebsratkanzlei.gremiumhub.application_form_version
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormMapper
import com.betriebsratkanzlei.legalconsenthub.application_form_version.pdf.ApplicationFormVersionPdfService
import com.betriebsratkanzlei.legalconsenthub.user.UserService
import com.betriebsratkanzlei.legalconsenthub_api.api.ApplicationFormVersionApi
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormVersionDto
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormVersionListItemDto
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormMapper
import com.betriebsratkanzlei.gremiumhub.application_form_version.pdf.ApplicationFormVersionPdfService
import com.betriebsratkanzlei.gremiumhub.user.UserService
import com.betriebsratkanzlei.gremiumhub_api.api.ApplicationFormVersionApi
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormDto
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormVersionDto
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormVersionListItemDto
import org.springframework.core.io.ByteArrayResource
import org.springframework.core.io.Resource
import org.springframework.http.HttpHeaders

View File

@@ -1,9 +1,9 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version
package com.betriebsratkanzlei.gremiumhub.application_form_version
import com.betriebsratkanzlei.legalconsenthub.user.UserMapper
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormSnapshotDto
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormVersionDto
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormVersionListItemDto
import com.betriebsratkanzlei.gremiumhub.user.UserMapper
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormSnapshotDto
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormVersionDto
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormVersionListItemDto
import com.fasterxml.jackson.databind.ObjectMapper
import org.springframework.stereotype.Component

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version
package com.betriebsratkanzlei.gremiumhub.application_form_version
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository

View File

@@ -1,21 +1,21 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version
package com.betriebsratkanzlei.gremiumhub.application_form_version
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationForm
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormVersionNotFoundException
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElement
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementSection
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementSubSection
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementVisibilityConditionMapper
import com.betriebsratkanzlei.legalconsenthub.form_element.FormOptionMapper
import com.betriebsratkanzlei.legalconsenthub.form_element.SectionSpawnTriggerMapper
import com.betriebsratkanzlei.legalconsenthub.form_element.TableRowPresetMapper
import com.betriebsratkanzlei.legalconsenthub.user.User
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormSnapshotDto
import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSectionSnapshotDto
import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSnapshotDto
import com.betriebsratkanzlei.legalconsenthub_api.model.FormElementSubSectionSnapshotDto
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationForm
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormVersionNotFoundException
import com.betriebsratkanzlei.gremiumhub.form_element.FormElement
import com.betriebsratkanzlei.gremiumhub.form_element.FormElementSection
import com.betriebsratkanzlei.gremiumhub.form_element.FormElementSubSection
import com.betriebsratkanzlei.gremiumhub.form_element.FormElementVisibilityConditionMapper
import com.betriebsratkanzlei.gremiumhub.form_element.FormOptionMapper
import com.betriebsratkanzlei.gremiumhub.form_element.SectionSpawnTriggerMapper
import com.betriebsratkanzlei.gremiumhub.form_element.TableRowPresetMapper
import com.betriebsratkanzlei.gremiumhub.user.User
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormSnapshotDto
import com.betriebsratkanzlei.gremiumhub_api.model.FormElementSectionSnapshotDto
import com.betriebsratkanzlei.gremiumhub_api.model.FormElementSnapshotDto
import com.betriebsratkanzlei.gremiumhub_api.model.FormElementSubSectionSnapshotDto
import com.fasterxml.jackson.databind.ObjectMapper
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional

View File

@@ -1,8 +1,8 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version.pdf
package com.betriebsratkanzlei.gremiumhub.application_form_version.pdf
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormFormatService
import com.betriebsratkanzlei.legalconsenthub.application_form_version.ApplicationFormVersionService
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormSnapshotDto
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormFormatService
import com.betriebsratkanzlei.gremiumhub.application_form_version.ApplicationFormVersionService
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormSnapshotDto
import com.fasterxml.jackson.databind.ObjectMapper
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version.pdf
package com.betriebsratkanzlei.gremiumhub.application_form_version.pdf
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Component

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version.pdf
package com.betriebsratkanzlei.gremiumhub.application_form_version.pdf
interface PdfStorage {
fun get(key: PdfStorageKey): ByteArray?

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version.pdf
package com.betriebsratkanzlei.gremiumhub.application_form_version.pdf
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.application_form_version.pdf
package com.betriebsratkanzlei.gremiumhub.application_form_version.pdf
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.context.properties.EnableConfigurationProperties
@@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration
@EnableConfigurationProperties(PdfStorageProperties::class)
class PdfStorageConfiguration
@ConfigurationProperties(prefix = "legalconsenthub.pdf.storage")
@ConfigurationProperties(prefix = "gremiumhub.pdf.storage")
data class PdfStorageProperties(
@NestedConfigurationProperty
val filesystem: FileSystemProperties = FileSystemProperties(),
@@ -19,14 +19,14 @@ data class PdfStorageProperties(
* Base directory for stored PDFs. In development this defaults to a folder next to the backend code.
*
* Configure either via application.yaml:
* legalconsenthub:
* gremiumhub:
* pdf:
* storage:
* filesystem:
* base-dir: /var/lib/legalconsenthub/pdfs
* base-dir: /var/lib/gremiumhub/pdfs
*
* or via environment variable:
* LEGALCONSENTHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR=/var/lib/legalconsenthub/pdfs
* GREMIUMHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR=/var/lib/gremiumhub/pdfs
*/
val baseDir: String = ".pdf-store",
)

View File

@@ -1,8 +1,8 @@
package com.betriebsratkanzlei.legalconsenthub.comment
package com.betriebsratkanzlei.gremiumhub.comment
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationForm
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElement
import com.betriebsratkanzlei.legalconsenthub.user.User
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationForm
import com.betriebsratkanzlei.gremiumhub.form_element.FormElement
import com.betriebsratkanzlei.gremiumhub.user.User
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.EntityListeners

View File

@@ -1,10 +1,10 @@
package com.betriebsratkanzlei.legalconsenthub.comment
package com.betriebsratkanzlei.gremiumhub.comment
import com.betriebsratkanzlei.legalconsenthub_api.api.CommentApi
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormCommentCountsDto
import com.betriebsratkanzlei.legalconsenthub_api.model.CommentDto
import com.betriebsratkanzlei.legalconsenthub_api.model.CreateCommentDto
import com.betriebsratkanzlei.legalconsenthub_api.model.CursorPagedCommentDto
import com.betriebsratkanzlei.gremiumhub_api.api.CommentApi
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormCommentCountsDto
import com.betriebsratkanzlei.gremiumhub_api.model.CommentDto
import com.betriebsratkanzlei.gremiumhub_api.model.CreateCommentDto
import com.betriebsratkanzlei.gremiumhub_api.model.CursorPagedCommentDto
import org.springframework.http.ResponseEntity
import org.springframework.security.access.prepost.PreAuthorize
import org.springframework.web.bind.annotation.RestController

View File

@@ -1,13 +1,13 @@
package com.betriebsratkanzlei.legalconsenthub.comment
package com.betriebsratkanzlei.gremiumhub.comment
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.FormElementNotFoundException
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementRepository
import com.betriebsratkanzlei.legalconsenthub.user.UserMapper
import com.betriebsratkanzlei.legalconsenthub.user.UserService
import com.betriebsratkanzlei.legalconsenthub_api.model.CommentDto
import com.betriebsratkanzlei.legalconsenthub_api.model.CreateCommentDto
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.FormElementNotFoundException
import com.betriebsratkanzlei.gremiumhub.form_element.FormElementRepository
import com.betriebsratkanzlei.gremiumhub.user.UserMapper
import com.betriebsratkanzlei.gremiumhub.user.UserService
import com.betriebsratkanzlei.gremiumhub_api.model.CommentDto
import com.betriebsratkanzlei.gremiumhub_api.model.CreateCommentDto
import org.springframework.stereotype.Component
import java.time.Instant
import java.util.UUID

View File

@@ -1,6 +1,6 @@
package com.betriebsratkanzlei.legalconsenthub.comment
package com.betriebsratkanzlei.gremiumhub.comment
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationForm
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationForm
import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable
import org.springframework.data.jpa.repository.JpaRepository

View File

@@ -1,17 +1,17 @@
package com.betriebsratkanzlei.legalconsenthub.comment
package com.betriebsratkanzlei.gremiumhub.comment
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.legalconsenthub.email.CommentAddedEvent
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.CommentNotCreatedException
import com.betriebsratkanzlei.legalconsenthub.error.CommentNotDeletedException
import com.betriebsratkanzlei.legalconsenthub.error.CommentNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.CommentNotUpdatedException
import com.betriebsratkanzlei.legalconsenthub.notification.NotificationService
import com.betriebsratkanzlei.legalconsenthub_api.model.CommentDto
import com.betriebsratkanzlei.legalconsenthub_api.model.CreateCommentDto
import com.betriebsratkanzlei.legalconsenthub_api.model.CreateNotificationDto
import com.betriebsratkanzlei.legalconsenthub_api.model.NotificationType
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.gremiumhub.email.CommentAddedEvent
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.CommentNotCreatedException
import com.betriebsratkanzlei.gremiumhub.error.CommentNotDeletedException
import com.betriebsratkanzlei.gremiumhub.error.CommentNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.CommentNotUpdatedException
import com.betriebsratkanzlei.gremiumhub.notification.NotificationService
import com.betriebsratkanzlei.gremiumhub_api.model.CommentDto
import com.betriebsratkanzlei.gremiumhub_api.model.CreateCommentDto
import com.betriebsratkanzlei.gremiumhub_api.model.CreateNotificationDto
import com.betriebsratkanzlei.gremiumhub_api.model.NotificationType
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper
import org.springframework.context.ApplicationEventPublisher

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.config
package com.betriebsratkanzlei.gremiumhub.config
import com.fasterxml.jackson.databind.Module
import org.springframework.context.annotation.Bean

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.config
package com.betriebsratkanzlei.gremiumhub.config
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

View File

@@ -1,6 +1,6 @@
package com.betriebsratkanzlei.legalconsenthub.config
package com.betriebsratkanzlei.gremiumhub.config
import com.betriebsratkanzlei.legalconsenthub.security.CustomJwtAuthenticationConverter
import com.betriebsratkanzlei.gremiumhub.security.CustomJwtAuthenticationConverter
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.core.annotation.Order

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.config
package com.betriebsratkanzlei.gremiumhub.config
import org.springframework.boot.testcontainers.service.connection.ServiceConnection
import org.springframework.context.annotation.Bean
@@ -14,11 +14,11 @@ class TestContainersConfig {
@ServiceConnection
fun postgresContainer(): PostgreSQLContainer<*> =
PostgreSQLContainer(DockerImageName.parse("postgres:17-alpine"))
.withDatabaseName("legalconsenthub")
.withUsername("legalconsenthub")
.withPassword("legalconsenthub")
.withDatabaseName("gremiumhub")
.withUsername("gremiumhub")
.withPassword("gremiumhub")
.withCreateContainerCmdModifier { cmd ->
cmd.withName("legalconsenthub-test-${System.currentTimeMillis()}")
cmd.withName("gremiumhub-test-${System.currentTimeMillis()}")
// Comment this in to be able to connect to the database, needs to be commented our during tests
// cmd.withHostConfig(
// HostConfig().apply {

View File

@@ -1,8 +1,8 @@
package com.betriebsratkanzlei.legalconsenthub.config
package com.betriebsratkanzlei.gremiumhub.config
import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionNode
import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionOperator
import com.betriebsratkanzlei.legalconsenthub_api.model.VisibilityConditionType
import com.betriebsratkanzlei.gremiumhub_api.model.VisibilityConditionNode
import com.betriebsratkanzlei.gremiumhub_api.model.VisibilityConditionOperator
import com.betriebsratkanzlei.gremiumhub_api.model.VisibilityConditionType
import com.fasterxml.jackson.core.JsonGenerator
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.DeserializationContext

View File

@@ -1,7 +1,7 @@
package com.betriebsratkanzlei.legalconsenthub.contact
package com.betriebsratkanzlei.gremiumhub.contact
import com.betriebsratkanzlei.legalconsenthub_api.api.ContactApi
import com.betriebsratkanzlei.legalconsenthub_api.model.ContactMessageDto
import com.betriebsratkanzlei.gremiumhub_api.api.ContactApi
import com.betriebsratkanzlei.gremiumhub_api.model.ContactMessageDto
import org.springframework.http.ResponseEntity
import org.springframework.security.access.prepost.PreAuthorize
import org.springframework.web.bind.annotation.RestController

View File

@@ -1,7 +1,7 @@
package com.betriebsratkanzlei.legalconsenthub.contact
package com.betriebsratkanzlei.gremiumhub.contact
import com.betriebsratkanzlei.legalconsenthub.email.EmailService
import com.betriebsratkanzlei.legalconsenthub.user.UserService
import com.betriebsratkanzlei.gremiumhub.email.EmailService
import com.betriebsratkanzlei.gremiumhub.user.UserService
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service
import org.thymeleaf.TemplateEngine

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.email
package com.betriebsratkanzlei.gremiumhub.email
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.email
package com.betriebsratkanzlei.gremiumhub.email
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.email
package com.betriebsratkanzlei.gremiumhub.email
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.email
package com.betriebsratkanzlei.gremiumhub.email
import java.util.UUID

View File

@@ -1,6 +1,6 @@
package com.betriebsratkanzlei.legalconsenthub.email
package com.betriebsratkanzlei.gremiumhub.email
import com.betriebsratkanzlei.legalconsenthub.user.UserRepository
import com.betriebsratkanzlei.gremiumhub.user.UserRepository
import org.slf4j.LoggerFactory
import org.springframework.context.event.EventListener
import org.springframework.scheduling.annotation.Async

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.email
package com.betriebsratkanzlei.gremiumhub.email
import org.slf4j.LoggerFactory
import org.springframework.mail.MailException
@@ -28,7 +28,7 @@ class EmailService(
helper.setTo(to)
helper.setSubject(subject)
helper.setText(body, true)
helper.setFrom("noreply@legalconsenthub.com")
helper.setFrom("noreply@gremiumhub.de")
mailSender.send(message)
logger.info("Email sent successfully to: $to")

View File

@@ -1,6 +1,6 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormStatus
import com.betriebsratkanzlei.gremiumhub_api.model.ApplicationFormStatus
import java.util.UUID
class ApplicationFormInvalidStateException(

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class ApplicationFormNotCreatedException(
e: Exception,

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class ApplicationFormNotDeletedException(
e: Exception,

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class CommentNotCreatedException(
e: Exception,

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class CommentNotDeletedException(
e: Exception,

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
import java.util.UUID

View File

@@ -1,6 +1,6 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
import com.betriebsratkanzlei.legalconsenthub_api.model.ProblemDetails
import com.betriebsratkanzlei.gremiumhub_api.model.ProblemDetails
import org.slf4j.LoggerFactory
import org.springframework.http.HttpStatus
import org.springframework.http.MediaType

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class FileStorageException(
message: String,

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class FileTooLargeException(
message: String,

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
import java.util.UUID

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class UnsupportedFileTypeException(
message: String,

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class UserAlreadyExistsException(
id: String,

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.error
package com.betriebsratkanzlei.gremiumhub.error
class UserNotFoundException(
id: String,

View File

@@ -1,12 +1,12 @@
package com.betriebsratkanzlei.legalconsenthub.file
package com.betriebsratkanzlei.gremiumhub.file
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.FileNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.FileTooLargeException
import com.betriebsratkanzlei.legalconsenthub.error.UnsupportedFileTypeException
import com.betriebsratkanzlei.legalconsenthub_api.api.FileApi
import com.betriebsratkanzlei.legalconsenthub_api.model.AssociateFilesWithApplicationFormRequest
import com.betriebsratkanzlei.legalconsenthub_api.model.UploadedFileDto
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.FileNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.FileTooLargeException
import com.betriebsratkanzlei.gremiumhub.error.UnsupportedFileTypeException
import com.betriebsratkanzlei.gremiumhub_api.api.FileApi
import com.betriebsratkanzlei.gremiumhub_api.model.AssociateFilesWithApplicationFormRequest
import com.betriebsratkanzlei.gremiumhub_api.model.UploadedFileDto
import org.springframework.core.io.ByteArrayResource
import org.springframework.core.io.Resource
import org.springframework.http.HttpHeaders

View File

@@ -1,7 +1,7 @@
package com.betriebsratkanzlei.legalconsenthub.file
package com.betriebsratkanzlei.gremiumhub.file
import com.betriebsratkanzlei.legalconsenthub.user.UserMapper
import com.betriebsratkanzlei.legalconsenthub_api.model.UploadedFileDto
import com.betriebsratkanzlei.gremiumhub.user.UserMapper
import com.betriebsratkanzlei.gremiumhub_api.model.UploadedFileDto
import org.springframework.stereotype.Component
import java.time.Instant

View File

@@ -1,4 +1,4 @@
package com.betriebsratkanzlei.legalconsenthub.file
package com.betriebsratkanzlei.gremiumhub.file
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Query

View File

@@ -1,14 +1,14 @@
package com.betriebsratkanzlei.legalconsenthub.file
package com.betriebsratkanzlei.gremiumhub.file
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationForm
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.legalconsenthub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.FileNotFoundException
import com.betriebsratkanzlei.legalconsenthub.error.FileStorageException
import com.betriebsratkanzlei.legalconsenthub.error.FileTooLargeException
import com.betriebsratkanzlei.legalconsenthub.error.UnsupportedFileTypeException
import com.betriebsratkanzlei.legalconsenthub.security.CustomJwtTokenPrincipal
import com.betriebsratkanzlei.legalconsenthub.user.UserRepository
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationForm
import com.betriebsratkanzlei.gremiumhub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.gremiumhub.error.ApplicationFormNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.FileNotFoundException
import com.betriebsratkanzlei.gremiumhub.error.FileStorageException
import com.betriebsratkanzlei.gremiumhub.error.FileTooLargeException
import com.betriebsratkanzlei.gremiumhub.error.UnsupportedFileTypeException
import com.betriebsratkanzlei.gremiumhub.security.CustomJwtTokenPrincipal
import com.betriebsratkanzlei.gremiumhub.user.UserRepository
import org.apache.tika.Tika
import org.slf4j.LoggerFactory
import org.springframework.security.core.context.SecurityContextHolder

Some files were not shown because too many files have changed in this diff Show More