Files

68 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Inertia\Response;
class LegalController extends Controller
{
public function offer(Request $request): Response
{
abort_unless(config('moonwell.legal.offer_published'), 404);
return Inertia::render('Legal/Offer', $this->pageData($request));
}
public function privacy(Request $request): Response
{
abort_unless(config('moonwell.legal.privacy_published'), 404);
return Inertia::render('Legal/Privacy', $this->pageData($request));
}
public function rules(Request $request): Response
{
abort_unless(config('moonwell.legal.rules_published'), 404);
return Inertia::render('Legal/Rules', $this->pageData($request));
}
/**
* @return array<string, mixed>
*/
private function pageData(Request $request): array
{
$user = $request->user();
return [
'site' => [
'name' => config('moonwell.realm.server_name'),
'tagline' => config('moonwell.realm.tagline'),
],
'auth' => [
'authenticated' => $user !== null,
'username' => $user?->username,
'access_label' => $user?->accessLabel(),
'is_admin' => $user?->canAccessAdminPanel() ?? false,
],
'urls' => [
'home' => route('landing.index'),
'login' => route('login'),
'cabinet' => route('cabinet.index'),
'admin' => route('admin.accounts.index'),
'logout' => route('logout'),
'offer' => config('moonwell.legal.offer_published') ? route('legal.offer') : null,
'privacy' => config('moonwell.legal.privacy_published') ? route('legal.privacy') : null,
'rules' => config('moonwell.legal.rules_published') ? route('legal.rules') : null,
],
'legal' => [
'operator_name' => config('moonwell.legal.operator_name'),
'contact_email' => config('moonwell.legal.contact_email'),
'effective_date' => config('moonwell.legal.effective_date'),
],
];
}
}