Added legal data

This commit is contained in:
2026-06-21 15:18:26 +02:00
parent dbcebbb2c4
commit a8205a4f96
6 changed files with 146 additions and 2 deletions
@@ -0,0 +1,20 @@
<?php
namespace App\Domains\Legal\Controllers;
use App\Providers\InertiaProvider;
use App\Scopes\CommonController;
use Illuminate\Http\Request;
use Inertia\Response;
class GdprController extends CommonController
{
public function __invoke(Request $request): Response
{
$inertiaProvider = new InertiaProvider('Legal/LegalPage', [
'title' => 'Datenschutzerklärung',
'content' => $this->tenant->gdpr_text ?? '',
]);
return $inertiaProvider->render();
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Domains\Legal\Controllers;
use App\Providers\InertiaProvider;
use App\Scopes\CommonController;
use Illuminate\Http\Request;
use Inertia\Response;
class ImpressController extends CommonController
{
public function __invoke(Request $request): Response
{
$inertiaProvider = new InertiaProvider('Legal/LegalPage', [
'title' => 'Impressum',
'content' => $this->tenant->impress_text ?? '',
]);
return $inertiaProvider->render();
}
}
+11
View File
@@ -0,0 +1,11 @@
<?php
use App\Domains\Legal\Controllers\ImpressController;
use App\Domains\Legal\Controllers\GdprController;
use App\Middleware\IdentifyTenant;
use Illuminate\Support\Facades\Route;
Route::middleware(IdentifyTenant::class)->group(function () {
Route::get('/impress', ImpressController::class);
Route::get('/gdpr', GdprController::class);
});
+83
View File
@@ -0,0 +1,83 @@
<script setup>
import AppLayout from "../../../../resources/js/layouts/AppLayout.vue";
import ShadowedBox from "../../../Views/Components/ShadowedBox.vue";
const props = defineProps({
title: String,
content: String,
})
</script>
<template>
<AppLayout :title="props.title">
<ShadowedBox class="legal-page-box">
<h2 class="legal-page-title">{{ props.title }}</h2>
<div class="legal-page-content" v-html="props.content"></div>
</ShadowedBox>
</AppLayout>
</template>
<style scoped>
.legal-page-box {
width: 95%;
margin: 20px auto;
padding: 20px;
overflow-x: hidden;
}
.legal-page-title {
font-size: 1.5rem;
margin: 0 0 20px 0;
color: #333;
border-bottom: 2px solid #e5e7eb;
padding-bottom: 12px;
}
.legal-page-content {
line-height: 1.7;
color: #374151;
word-wrap: break-word;
overflow-wrap: break-word;
}
.legal-page-content :deep(img) {
max-width: 100%;
height: auto;
}
.legal-page-content :deep(table) {
width: 100%;
overflow-x: auto;
display: block;
}
.legal-page-content :deep(a) {
color: #2563eb;
word-break: break-all;
}
.legal-page-content :deep(h1),
.legal-page-content :deep(h2),
.legal-page-content :deep(h3) {
margin-top: 1.5em;
margin-bottom: 0.5em;
color: #1f2937;
}
.legal-page-content :deep(p) {
margin-bottom: 1em;
}
@media (max-width: 639px) {
.legal-page-box {
width: 100%;
margin: 0;
padding: 16px 12px;
border-radius: 0;
}
.legal-page-title {
font-size: 1.2rem;
}
}
</style>