20 lines
1.4 KiB
PHP
20 lines
1.4 KiB
PHP
<?php
|
|
namespace Modules\Sites\Http\Controllers;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Illuminate\Validation\Rule;
|
|
use Modules\Sites\Models\Site;
|
|
use Modules\Sites\Models\SiteDomain;
|
|
final class DomainController extends Controller
|
|
{
|
|
public function store(Request $request, Site $site): RedirectResponse
|
|
{
|
|
$data=$request->validate(['domain'=>['required','string','max:255','regex:/^[a-z0-9.-]+$/i',Rule::unique('site_domains','domain')],'is_primary'=>['sometimes','boolean'],'redirect_to_primary'=>['sometimes','boolean'],'force_https'=>['sometimes','boolean'],'is_active'=>['sometimes','boolean']]);
|
|
if ($request->boolean('is_primary')) { $site->domains()->update(['is_primary'=>false]); }
|
|
$site->domains()->create($data + ['is_primary'=>$request->boolean('is_primary'),'redirect_to_primary'=>$request->boolean('redirect_to_primary'),'force_https'=>$request->boolean('force_https'),'is_active'=>$request->boolean('is_active', true)]);
|
|
return back()->with('success','Domain added.');
|
|
}
|
|
public function destroy(Site $site, SiteDomain $domain): RedirectResponse { abort_unless($domain->site_id===$site->id,404); abort_if($domain->is_primary && $site->domains()->count()===1,422,'A site must retain a domain.'); $domain->delete(); return back()->with('success','Domain removed.'); }
|
|
}
|