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

86 lines
2.8 KiB
PHP
Raw Normal View History

2020-04-20 18:55:19 +02:00
<?php
namespace App\Http\Controllers;
2022-06-13 17:40:44 +02:00
use App\Models\DomainName;
use App\Models\EmailAddress;
2020-04-20 18:55:19 +02:00
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use lfkeitel\phptotp\Base32;
use lfkeitel\phptotp\Totp;
class EmailAddressesController extends Controller
{
2022-06-13 15:49:59 +02:00
public function index(Request $request)
{
2022-06-13 17:40:44 +02:00
$emails = EmailAddress::all();
2020-04-20 18:55:19 +02:00
return view('email-addresses.index', ['emails' => $emails]);
}
2022-06-13 15:49:59 +02:00
public function add(Request $request)
{
2022-06-13 17:40:44 +02:00
$dms = DomainName::orderBy('utf8_name')->get();
2020-04-20 18:55:19 +02:00
return view('email-addresses.add', ['dms' => $dms]);
}
2022-06-13 15:49:59 +02:00
public function edit(Request $request)
{
2020-04-20 18:55:19 +02:00
$email_id = $request->id;
2022-06-13 17:40:44 +02:00
$email = EmailAddress::findOrFail($email_id);
$dms = DomainName::orderBy('utf8_name')->get();
2020-04-20 18:55:19 +02:00
return view('email-addresses.edit', ['email' => $email, 'dms' => $dms]);
}
2022-06-13 15:49:59 +02:00
public function update(Request $request)
{
2020-04-20 18:55:19 +02:00
$email_id = $request->id;
2022-06-13 17:40:44 +02:00
$email = EmailAddress::findOrFail($email_id);
2020-04-20 18:55:19 +02:00
$this->makeChanges($request, $email);
return redirect()->route('email-addresses.edit', ['id' => $email->id])->with('status', 'Sauvegardée !');
}
2022-06-13 15:49:59 +02:00
public function store(Request $request)
{
2022-06-13 17:40:44 +02:00
$email = new EmailAddress();
2020-04-20 18:55:19 +02:00
$this->makeChanges($request, $email);
return redirect()->route('email-addresses.edit', ['id' => $email->id])->with('status', 'Sauvegardée !');
}
2022-06-13 15:49:59 +02:00
public function delete(Request $request)
{
2020-04-20 18:55:19 +02:00
$email_id = $request->id;
2022-06-13 17:40:44 +02:00
$email = EmailAddress::findOrFail($email_id);
2020-04-20 18:55:19 +02:00
return view('email-addresses.delete', ['email' => $email]);
}
public function forceDelete(Request $request)
{
$email_id = $request->id;
2022-06-13 15:49:59 +02:00
$otp = $request->otp;
2020-04-20 18:55:19 +02:00
$lastCode = (new Totp())->GenerateToken(Base32::decode(Auth::user()->totp_secret), Carbon::now()->subSeconds(30)->timestamp);
2022-06-13 15:49:59 +02:00
$code = (new Totp())->GenerateToken(Base32::decode(Auth::user()->totp_secret));
2020-04-20 18:55:19 +02:00
if ($otp === $code || $otp === $lastCode) {
2022-06-13 17:40:44 +02:00
$email = EmailAddress::findOrFail($email_id);
2020-04-20 18:55:19 +02:00
$email->delete();
return redirect()->route('email-addresses.index')->with('status', 'Adresse email supprimée !');
2022-06-13 15:49:59 +02:00
} else {
2020-04-20 18:55:19 +02:00
return redirect()->route('email-addresses.edit', ['id' => $email_id])->with('error', 'Code de vérification invalide.');
}
}
2022-06-13 15:49:59 +02:00
private function makeChanges($request, $email)
{
$account = $request->account;
$password = $request->password;
2020-04-20 18:55:19 +02:00
$domain_name_id = $request->d_n_id;
2022-06-13 15:49:59 +02:00
$email->account = $account;
$email->password = $password;
2020-04-20 18:55:19 +02:00
$email->domain_name_id = $domain_name_id;
$email->save();
}
}