$networks]); } public function add(Request $request) { return view('ldc-networks.add'); } public function edit(Request $request) { $network_id = $request->id; $network = LDCNetworks::findOrFail($network_id); return view('ldc-networks.edit', ['network' => $network]); } public function update(Request $request) { $network_id = $request->id; $network = LDCNetworks::findOrFail($network_id); $this->makeChanges($request, $network); return redirect()->route('ldc-networks.edit', ['id' => $network->id])->with('status', 'Sauvegardée !'); } public function store(Request $request) { $network = new LDCNetworks(); $this->makeChanges($request, $network); return redirect()->route('ldc-networks.edit', ['id' => $network->id])->with('status', 'Sauvegardée !'); } public function delete(Request $request) { $network_id = $request->id; $network = LDCNetworks::findOrFail($network_id); return view('ldc-networks.delete', ['network' => $network]); } public function forceDelete(Request $request) { $network_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) { $network = LDCNetworks::findOrFail($network_id); $network->delete(); return redirect()->route('ldc-networks.index')->with('status', 'IP supprimée !'); }else{ return redirect()->route('ldc-networks.edit', ['id' => $network_id])->with('error', 'Code de vérification invalide.'); } } private function makeChanges($request, $network) { $cidr = $request->cidr; $range = $this->cidrToRange($cidr); $network->cidr = $cidr; $network->first_ip = $range[0]; $network->last_ip = $range[1]; $network->save(); } private function cidrToRange($cidr) { $range = array(); $cidr = explode('/', $cidr); $range[0] = long2ip((ip2long($cidr[0])) & ((-1 << (32 - (int)$cidr[1])))); $range[1] = long2ip((ip2long($range[0])) + pow(2, (32 - (int)$cidr[1])) - 1); return $range; } }