3
0
Fork 0
This repository has been archived on 2024-11-14. You can view files and clone it, but cannot push or open issues or pull requests.
ThemeParkPlus-Panel/app/Http/Controllers/ToggleTwoFactorController.php

69 lines
2.3 KiB
PHP
Raw Normal View History

2020-02-26 13:59:58 +00:00
<?php
namespace App\Http\Controllers\Panel;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Validator;
class ToggleTwoFactorController extends Controller
{
public function __construct()
{
$this->middleware(['auth', 'verified']);
}
public function toggle(Request $request) {
$google2fa = new \PragmaRX\Google2FALaravel\Google2FA($request);
$validator = Validator::make($request->all(), [
'two_factor' => ['required', 'digits:6']
]);
if(!$google2fa->isActivated()) {
$secret = session()->get('google_secret');
if (!$validator->passes()) {
session()->flash('redirected', true);
session()->keep(['google_secret']);
return Redirect::back()->withErrors($validator);
}
$google2fa = new \PragmaRX\Google2FALaravel\Google2FA($request);
if (!$google2fa->verifyGoogle2FA($secret, $request->two_factor)) {
$validator->getMessageBag()->add('two_factor', 'Incorrect 2FA Code');
session()->flash('redirected', true);
session()->keep(['google_secret']);
return Redirect::back()->withErrors($validator);
}
$google2fa->login();
Auth::user()->update([
'google2fa_secret' => $secret
]);
session()->flash('success', 'Successfully enabled 2FA');
return redirect()->route('account');
} else {
if(!$validator->passes())
return Redirect::back()->withErrors($validator);
$google2fa = new \PragmaRX\Google2FALaravel\Google2FA($request);
if(!$google2fa->verifyGoogle2FA(Auth::user()->google2fa_secret, $request->two_factor)) {
$validator->getMessageBag()->add('two_factor', 'Incorrect 2FA Code');
return Redirect::back()->withErrors($validator);
}
$google2fa->logout();
Auth::user()->update([
'google2fa_secret' => null
]);
session()->flash('success', 'Successfully disabled 2FA');
return redirect()->route('security');
}
}
}