ldc-web/app/Http/Controllers/ServersController.php
Vincent BRIDIER 4fd8f4bf37 - Add Datastore PCC Management
- Add Domain Names Management
- Add Servers Management
- Update EDL Web Management
- Add SAML conf
- Add Laravel to StatusChecker
2020-04-17 09:18:42 +02:00

109 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\DatastorePcc;
use App\Models\Projects;
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 ServersController extends Controller
{
public function index(Request $request) {
$servers = Servers::all();
return view('servers.index', ['servers' => $servers]);
}
public function add(Request $request) {
$datastores_pcc = DatastorePcc::orderBy('title')->get();
return view('servers.add', ['datastores_pcc' => $datastores_pcc]);
}
public function edit(Request $request) {
$server_id = $request->id;
$server = Servers::findOrFail($server_id);
$datastores_pcc = DatastorePcc::orderBy('title')->get();
return view('servers.edit', ['server' => $server, 'datastores_pcc' => $datastores_pcc]);
}
public function update(Request $request) {
$server_id = $request->id;
$server = Servers::findOrFail($server_id);
$this->makeChanges($request, $server);
return redirect()->route('servers.edit', ['id' => $server_id])->with('status', 'Sauvegardé !');
}
public function store(Request $request) {
$server = new Servers();
$this->makeChanges($request, $server);
return redirect()->route('servers.edit', ['id' => $server->id])->with('status', 'Sauvegardé !');
}
public function delete(Request $request) {
$server_id = $request->id;
$server = Servers::findOrFail($server_id);
if ($server->type === 'DB' || $server->type === 'WEB') {
$isUsed = Projects::where('dev_db_server_id', '=', $server->id)->orWhere('dev_web_server_id', '=', $server->id)->orWhere('prod_db_server_id', '=', $server->id)->orWhere('prod_web_server_id', '=', $server->id)->get();
if ($isUsed->count() === 0)
$isUsed = false;
} else {
$isUsed = false;
}
return view('servers.delete', ['server' => $server, 'isUsed' => $isUsed]);
}
public function forceDelete(Request $request)
{
$server_id = $request->id;
$otp1 = $request->otp1;
$otp2 = $request->otp2;
$otp3 = $request->otp3;
$otp4 = $request->otp4;
$otp5 = $request->otp5;
$otp6 = $request->otp6;
$otp = $otp1 . $otp2 . $otp3 . $otp4 . $otp5 . $otp6;
$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) {
$server = Servers::findOrFail($server_id);
$server->delete();
return redirect()->route('servers.index')->with('status', 'Serveur supprimé !');
}else{
return redirect()->route('servers.edit', ['id' => $server_id])->with('error', 'Code de vérification invalide.');
}
}
private function makeChanges($request, $server) {
$env = $request->env;
$virtual_ip = $request->virtual_ip;
$ssh = $request->ssh;
$infraweb_ip = $request->infraweb_ip;
$title = $request->title;
$name = $request->name;
$function = $request->function;
$dpcc = $request->datastore_pcc_id;
$comment = $request->comment;
$type = $request->type;
$server->env = $env;
$server->virtual_ip = $virtual_ip;
$server->ssh = $ssh;
$server->infraweb_ip = $infraweb_ip;
$server->title = $title;
$server->name = $name;
$server->function = $function;
$server->datastore_pcc_id = $dpcc;
$server->comment = $comment;
$server->type = $type;
$server->save();
}
}