98 lines
3 KiB
PHP
98 lines
3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\DomainNames;
|
|
use App\Models\EmailAddresses;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use lfkeitel\phptotp\Base32;
|
|
use lfkeitel\phptotp\Totp;
|
|
|
|
class DomainNamesController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$dms = DomainNames::all();
|
|
return view('domain-names.index', ['dms' => $dms]);
|
|
}
|
|
|
|
public function add(Request $request)
|
|
{
|
|
return view('domain-names.add');
|
|
}
|
|
|
|
public function edit(Request $request)
|
|
{
|
|
$dm_id = $request->id;
|
|
$dm = DomainNames::findOrFail($dm_id);
|
|
return view('domain-names.edit', ['dm' => $dm]);
|
|
}
|
|
|
|
public function update(Request $request)
|
|
{
|
|
$dm_id = $request->id;
|
|
$dm = DomainNames::findOrFail($dm_id);
|
|
$this->makeChanges($request, $dm);
|
|
return redirect()->route('domain-names.edit', ['id' => $dm->id])->with('status', 'Sauvegardé !');
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$dm = new DomainNames();
|
|
$this->makeChanges($request, $dm);
|
|
return redirect()->route('domain-names.edit', ['id' => $dm->id])->with('status', 'Sauvegardé !');
|
|
}
|
|
|
|
public function delete(Request $request)
|
|
{
|
|
$dm_id = $request->id;
|
|
$dm = DomainNames::findOrFail($dm_id);
|
|
|
|
$isUsed = EmailAddresses::where('domain_name_id', '=', $dm->id)->get();
|
|
if ($isUsed->count() === 0)
|
|
$isUsed = false;
|
|
|
|
return view('domain-names.delete', ['dm' => $dm, 'isUsed' => $isUsed]);
|
|
}
|
|
|
|
public function forceDelete(Request $request)
|
|
{
|
|
$dm_id = $request->id;
|
|
$otp = $request->otp;
|
|
|
|
$lastCode = (new Totp())->GenerateToken(Base32::decode(Auth::user()->totp_secret), Carbon::now()->subSeconds(30)->timestamp);
|
|
$code = (new Totp())->GenerateToken(Base32::decode(Auth::user()->totp_secret));
|
|
|
|
if ($otp === $code || $otp === $lastCode) {
|
|
$dm = DomainNames::findOrFail($dm_id);
|
|
$dm->delete();
|
|
return redirect()->route('domain-names.index')->with('status', 'Nom de domaine supprimé !');
|
|
} else {
|
|
return redirect()->route('domain-names.edit', ['id' => $dm_id])->with('error', 'Code de vérification invalide.');
|
|
}
|
|
}
|
|
|
|
private function makeChanges($request, $dm)
|
|
{
|
|
$ascii_name = $request->ascii_name;
|
|
$utf8_name = $request->utf8_name;
|
|
$exp_date = $request->expiration_date;
|
|
$renew = $request->renew;
|
|
$related_brand = $request->related_brand;
|
|
$redirect_dns = $request->redirect_dns;
|
|
$certificats = $request->certificats;
|
|
$comment = $request->comment;
|
|
|
|
$dm->ascii_name = $ascii_name;
|
|
$dm->utf8_name = $utf8_name;
|
|
$dm->expiration_date = $exp_date;
|
|
$dm->renew = $renew;
|
|
$dm->related_brand = $related_brand;
|
|
$dm->redirect_dns = $redirect_dns;
|
|
$dm->certificats = $certificats;
|
|
$dm->comment = $comment;
|
|
$dm->save();
|
|
}
|
|
}
|