feat: legal sections

This commit is contained in:
2026-05-24 13:20:04 +02:00
parent 3a74c2c34d
commit 8b162c8e4c
24 changed files with 1145 additions and 0 deletions
@@ -0,0 +1,86 @@
<?php
namespace Database\Factories;
use App\Enums\LegalDocumentType;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\LegalDocument>
*/
class LegalDocumentFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'slug' => 'privacy-policy',
'type' => LegalDocumentType::PRIVACY_POLICY,
'version' => 1,
'title' => [
'fr' => 'Politique de confidentialité',
],
'content' => [
'fr' => [
'intro' => [
'Cette politique explique comment Bowli traite les données de lapplication mobile.',
],
'sections' => [
[
'title' => 'Données collectées',
'body' => [
'Bowli traite les données nécessaires au fonctionnement du compte et du suivi nutritionnel.',
],
],
],
],
],
'is_active' => true,
'published_at' => now(),
];
}
public function terms(): static
{
return $this->state(fn (): array => [
'slug' => 'terms-of-service',
'type' => LegalDocumentType::TERMS,
'title' => [
'fr' => "Conditions d'utilisation",
],
'content' => [
'fr' => [
'intro' => [
'Ces conditions encadrent lutilisation de Bowli.',
],
'sections' => [
[
'title' => 'Compte utilisateur',
'body' => [
'Tu es responsable des informations fournies et de lutilisation de ton compte.',
],
],
],
],
],
]);
}
public function inactive(): static
{
return $this->state(fn (): array => [
'is_active' => false,
]);
}
public function unpublished(): static
{
return $this->state(fn (): array => [
'published_at' => null,
]);
}
}