ldc-web/app/Http/Controllers/EmailAddressesController.php
Vincent BRIDIER e804ced4d1 - Add Handler
- Remove InstantWin
- Add OTP SMS
- Update OTP Vue component
2021-08-03 16:24:49 +02:00

78 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\DomainNames;
use App\Models\EmailAddresses;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use lfkeitel\phptotp\Base32;
use lfkeitel\phptotp\Totp;
class EmailAddressesController extends Controller
{
public function index(Request $request) {
$emails = EmailAddresses::all();
return view('email-addresses.index', ['emails' => $emails]);
}
public function add(Request $request) {
$dms = DomainNames::orderBy('utf8_name')->get();
return view('email-addresses.add', ['dms' => $dms]);
}
public function edit(Request $request) {
$email_id = $request->id;
$email = EmailAddresses::findOrFail($email_id);
$dms = DomainNames::orderBy('utf8_name')->get();
return view('email-addresses.edit', ['email' => $email, 'dms' => $dms]);
}
public function update(Request $request) {
$email_id = $request->id;
$email = EmailAddresses::findOrFail($email_id);
$this->makeChanges($request, $email);
return redirect()->route('email-addresses.edit', ['id' => $email->id])->with('status', 'Sauvegardée !');
}
public function store(Request $request) {
$email = new EmailAddresses();
$this->makeChanges($request, $email);
return redirect()->route('email-addresses.edit', ['id' => $email->id])->with('status', 'Sauvegardée !');
}
public function delete(Request $request) {
$email_id = $request->id;
$email = EmailAddresses::findOrFail($email_id);
return view('email-addresses.delete', ['email' => $email]);
}
public function forceDelete(Request $request)
{
$email_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) {
$email = EmailAddresses::findOrFail($email_id);
$email->delete();
return redirect()->route('email-addresses.index')->with('status', 'Adresse email supprimée !');
}else{
return redirect()->route('email-addresses.edit', ['id' => $email_id])->with('error', 'Code de vérification invalide.');
}
}
private function makeChanges($request, $email) {
$account = $request->account;
$password = $request->password;
$domain_name_id = $request->d_n_id;
$email->account = $account;
$email->password = $password;
$email->domain_name_id = $domain_name_id;
$email->save();
}
}