ldc-web/app/Http/Controllers/DatastorePCCController.php

81 lines
2.5 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers;
use App\Models\DatastorePcc;
use App\Models\Servers;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use lfkeitel\phptotp\Base32;
use lfkeitel\phptotp\Totp;
class DatastorePCCController extends Controller
{
public function index(Request $request) {
$dpccs = DatastorePcc::all();
return view('dpccs.index', ['dpccs' => $dpccs]);
}
public function add(Request $request) {
return view('dpccs.add');
}
public function edit(Request $request) {
$dpcc_id = $request->id;
$dpcc = DatastorePcc::findOrFail($dpcc_id);
return view('dpccs.edit', ['dpcc' => $dpcc]);
}
public function update(Request $request) {
$dpcc_id = $request->id;
$dpcc = DatastorePcc::findOrFail($dpcc_id);
$this->makeChanges($request, $dpcc);
return redirect()->route('dpccs.edit', ['id' => $dpcc->id])->with('status', 'Sauvegardé !');
}
public function store(Request $request) {
$dpcc = new DatastorePcc();
$this->makeChanges($request, $dpcc);
return redirect()->route('dpccs.edit', ['id' => $dpcc->id])->with('status', 'Sauvegardé !');
}
public function delete(Request $request) {
$dpcc_id = $request->id;
$dpcc = DatastorePcc::findOrFail($dpcc_id);
$isUsed = Servers::where('datastore_pcc_id', '=', $dpcc->id)->get();
if ($isUsed->count() === 0)
$isUsed = false;
return view('dpccs.delete', ['dpcc' => $dpcc, 'isUsed' => $isUsed]);
}
public function forceDelete(Request $request)
{
$dpcc_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) {
$dpcc = DatastorePcc::findOrFail($dpcc_id);
$dpcc->delete();
return redirect()->route('dpccs.index')->with('status', 'Datastore PCC supprimé !');
}else{
return redirect()->route('dpccs.edit', ['id' => $dpcc_id])->with('error', 'Code de vérification invalide.');
}
}
private function makeChanges($request, $dpcc) {
$title = $request->title;
$comment = $request->comment;
$dpcc->title = $title;
$dpcc->comment = $comment;
$dpcc->save();
}
}