🔥 Remove Laravel Sail, Docker, and related setup, migrate to simplified local development environment

- **Removed:** `docker-compose.yml`, Sail-specific Dockerfiles, and related scripts for PHP 8.3 setup.
- **Updated:** Documentation to reflect a shift from Docker to a direct PHP-based local development workflow.
- **Removed:** `laravel/sail` dependency from `composer.lock`.
- **Implemented:** `#[Locked]` Livewire attribute across components for read-only properties.
- **Added:** Feature tests to ensure locked properties cannot be tampered with.
This commit is contained in:
HolgerHatGarKeineNode
2026-02-11 21:10:09 +01:00
parent bb84117fd1
commit 2f5ca24da0
25 changed files with 232 additions and 389 deletions

View File

@@ -6,6 +6,7 @@ use App\Models\Course;
use App\Models\CourseEvent;
use App\Models\Venue;
use App\Traits\SeoTrait;
use Livewire\Attributes\Locked;
use Livewire\Attributes\Validate;
use Livewire\Component;
@@ -17,6 +18,7 @@ class extends Component {
public Course $course;
public ?CourseEvent $event = null;
#[Locked]
public $country = 'de';
public string $fromDate = '';

View File

@@ -5,6 +5,7 @@ use App\Models\Course;
use App\Models\Lecturer;
use App\Traits\SeoTrait;
use Illuminate\Validation\Rule;
use Livewire\Attributes\Locked;
use Livewire\Attributes\Validate;
use Livewire\Component;
use Livewire\WithFileUploads;
@@ -25,9 +26,14 @@ class extends Component {
public ?int $lecturer_id = null;
public ?string $description = null;
// System fields (read-only)
// System fields (read-only) - locked to prevent client-side tampering
#[Locked]
public ?int $created_by = null;
#[Locked]
public ?string $created_at = null;
#[Locked]
public ?string $updated_at = null;
public function mount(): void

View File

@@ -4,6 +4,7 @@ use App\Attributes\SeoDataAttribute;
use App\Models\Lecturer;
use App\Traits\SeoTrait;
use Illuminate\Validation\Rule;
use Livewire\Attributes\Locked;
use Livewire\Attributes\Validate;
use Livewire\Component;
use Livewire\WithFileUploads;
@@ -34,9 +35,14 @@ class extends Component {
public ?string $node_id = null;
public ?string $paynym = null;
// System fields (read-only)
// System fields (read-only) - locked to prevent client-side tampering
#[Locked]
public ?int $created_by = null;
#[Locked]
public ?string $created_at = null;
#[Locked]
public ?string $updated_at = null;
public function mount(): void

View File

@@ -5,6 +5,7 @@ use App\Enums\RecurrenceType;
use App\Models\Meetup;
use App\Models\MeetupEvent;
use App\Traits\SeoTrait;
use Livewire\Attributes\Locked;
use Livewire\Attributes\Validate;
use Livewire\Component;
@@ -16,6 +17,7 @@ class extends Component {
public Meetup $meetup;
public ?MeetupEvent $event = null;
#[Locked]
public $country = 'de';
public string $startDate = '';

View File

@@ -6,6 +6,7 @@ use App\Models\Country;
use App\Models\Meetup;
use App\Traits\SeoTrait;
use Illuminate\Validation\Rule;
use Livewire\Attributes\Locked;
use Livewire\Attributes\Validate;
use Livewire\Component;
use Livewire\WithFileUploads;
@@ -42,9 +43,14 @@ class extends Component {
public ?string $github_data = null;
public bool $visible_on_map = false;
// System fields (read-only)
// System fields (read-only) - locked to prevent client-side tampering
#[Locked]
public ?int $created_by = null;
#[Locked]
public ?string $created_at = null;
#[Locked]
public ?string $updated_at = null;
// New City Modal

View File

@@ -4,6 +4,7 @@ use App\Attributes\SeoDataAttribute;
use App\Enums\SelfHostedServiceType;
use App\Livewire\Forms\ServiceForm;
use App\Traits\SeoTrait;
use Livewire\Attributes\Locked;
use Livewire\Attributes\Validate;
use Livewire\Component;
use Livewire\WithFileUploads;
@@ -13,7 +14,9 @@ new
class extends Component {
use SeoTrait;
#[Locked]
public string $country = 'de';
public ServiceForm $form;
public function mount(): void