$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; $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) { $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(); } }