86 lines
2.2 KiB
PHP
86 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Paymenter\Extensions\Others\CustomPages\Livewire;
|
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Request;
|
|
use Livewire\Component;
|
|
use Paymenter\Extensions\Others\CustomPages\Models\Page as ModelsPage;
|
|
use Paymenter\Extensions\Others\CustomPages\Models\PageView;
|
|
|
|
class Show extends Component
|
|
{
|
|
public ModelsPage $page;
|
|
|
|
public function mount()
|
|
{
|
|
$slug = request()->path();
|
|
|
|
$this->page = ModelsPage::where('slug', $slug)->firstOrFail();
|
|
|
|
// Pagina actief ja of nee
|
|
if (!$this->page->is_active) {
|
|
abort(404);
|
|
}
|
|
|
|
// check voor expire
|
|
if ($this->page->expires_at && now()->greaterThan($this->page->expires_at)) {
|
|
abort(404);
|
|
}
|
|
|
|
// Toegangscontrole
|
|
switch ($this->page->visibility) {
|
|
case 'admins':
|
|
if (!Auth::check() || is_null(Auth::user()->role)) {
|
|
abort(404);
|
|
}
|
|
break;
|
|
|
|
case 'customers':
|
|
if (!Auth::check() || !is_null(Auth::user()->role)) {
|
|
abort(404);
|
|
}
|
|
break;
|
|
|
|
case 'guests':
|
|
if (Auth::check()) {
|
|
abort(404);
|
|
}
|
|
break;
|
|
|
|
case 'logged-in':
|
|
if (!Auth::check()) {
|
|
abort(404);
|
|
}
|
|
break;
|
|
|
|
case 'everyone':
|
|
default:
|
|
// iedereen
|
|
break;
|
|
}
|
|
|
|
// Pageviews
|
|
PageView::create([
|
|
'page_id' => $this->page->id,
|
|
'ip_address' => Request::ip(),
|
|
'user_agent' => Request::header('User-Agent'),
|
|
'viewed_at' => now(),
|
|
]);
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('custompages::show', [
|
|
'page' => $this->page,
|
|
])->layout('layouts.app', [
|
|
'title' => $this->page->meta_title ?? $this->page->title,
|
|
'description' => $this->page->meta_description ?? '',
|
|
'image' => $this->page->meta_image ?? null,
|
|
'color' => $this->page->meta_color ?? null,
|
|
'favicon' => $this->page->meta_favicon ?? null,
|
|
]);
|
|
|
|
}
|
|
}
|