12-05-2026 Frontend dev
This commit is contained in:
parent
405df0a122
commit
5b8bdf4182
779 changed files with 480564 additions and 6241 deletions
51
app/Http/Controllers/PressReleasePreviewController.php
Normal file
51
app/Http/Controllers/PressReleasePreviewController.php
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\MagicLink;
|
||||
use App\Models\PressRelease;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class PressReleasePreviewController extends Controller
|
||||
{
|
||||
public function __invoke(string $token): View|Response
|
||||
{
|
||||
$magicLink = MagicLink::query()
|
||||
->where('token_hash', hash('sha256', $token))
|
||||
->where('purpose', 'press_release_access')
|
||||
->first();
|
||||
|
||||
if (! $magicLink) {
|
||||
return $this->renderError(__('Der Vorschau-Link ist ungültig.'), 404);
|
||||
}
|
||||
|
||||
if ($magicLink->expires_at && $magicLink->expires_at->isPast()) {
|
||||
return $this->renderError(__('Der Vorschau-Link ist abgelaufen.'), 410);
|
||||
}
|
||||
|
||||
$pressReleaseId = (int) ($magicLink->payload['press_release_id'] ?? 0);
|
||||
|
||||
$pressRelease = $pressReleaseId
|
||||
? PressRelease::withoutGlobalScopes()
|
||||
->with(['company:id,name,slug', 'category.translations', 'images', 'user:id,name'])
|
||||
->find($pressReleaseId)
|
||||
: null;
|
||||
|
||||
if (! $pressRelease) {
|
||||
return $this->renderError(__('Die Pressemitteilung wurde nicht gefunden.'), 404);
|
||||
}
|
||||
|
||||
return view('press-release-preview', [
|
||||
'pressRelease' => $pressRelease,
|
||||
'expiresAt' => $magicLink->expires_at,
|
||||
]);
|
||||
}
|
||||
|
||||
private function renderError(string $message, int $status): Response
|
||||
{
|
||||
return response()->view('press-release-preview-error', [
|
||||
'message' => $message,
|
||||
], $status);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue