ldc-web/app/Http/Controllers/OTPController.php
Vincent BRIDIER 9d5b54a5ea - SAML OK
- TOTP OK
- STATUS Checker (to do : code)
- EDL Web edit
2020-04-14 15:58:24 +02:00

46 lines
1.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Providers\RouteServiceProvider;
use Carbon\Carbon;
use Illuminate\Http\Request;
use lfkeitel\phptotp\{Base32,Totp};
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class OTPController extends Controller
{
public function verify(Request $request) {
$user = session()->get('tmpUserOTP');
if (!$user)
return redirect(RouteServiceProvider::HOME);
return view('auth.verify');
}
public function check(Request $request) {
$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;
$user = session()->get('tmpUserOTP');
if (!$user)
return redirect(RouteServiceProvider::HOME);
$lastCode = (new Totp())->GenerateToken(Base32::decode($user->totp_secret), Carbon::now()->subSeconds(30)->timestamp);
$code = (new Totp())->GenerateToken(Base32::decode($user->totp_secret));
if ($otp === $code || $otp === $lastCode) {
Auth::login($user);
return redirect(RouteServiceProvider::HOME);
} else {
Auth::logout();
Session::flush();
return redirect()->route('verification_failed');
}
}
}