Yubikey support (#1031)
This commit is contained in:
@@ -50,7 +50,7 @@ class MultiFAController extends Controller
|
||||
|
||||
$request->session()->put($this->SESSION_TFA_SECRET, $secret);
|
||||
|
||||
return view('settings.security.2fa-enable', ['image' => $imageDataUri, 'secret' => $secret]);
|
||||
return response()->json(['image' => $imageDataUri, 'secret' => $secret]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,6 +59,13 @@ class MultiFAController extends Controller
|
||||
*/
|
||||
public function validateTwoFactor(Request $request)
|
||||
{
|
||||
//get user
|
||||
$user = $request->user();
|
||||
|
||||
if (! is_null($user->google2fa_secret)) {
|
||||
return response()->json(['error' => trans('settings.2fa_enable_error_already_set')]);
|
||||
}
|
||||
|
||||
$this->validate($request, [
|
||||
'one_time_password' => 'required',
|
||||
]);
|
||||
@@ -69,23 +76,18 @@ class MultiFAController extends Controller
|
||||
$authenticator = app(Authenticator::class)->boot($request);
|
||||
|
||||
if ($authenticator->verifyGoogle2FA($secret, $request['one_time_password'])) {
|
||||
//get user
|
||||
$user = $request->user();
|
||||
|
||||
//encrypt and then save secret
|
||||
$user->google2fa_secret = $secret;
|
||||
$user->save();
|
||||
|
||||
$authenticator->login();
|
||||
|
||||
return redirect($this->redirectPath())
|
||||
->with('status', trans('settings.2fa_enable_success'));
|
||||
return response()->json(['success' => true]);
|
||||
}
|
||||
|
||||
$authenticator->logout();
|
||||
|
||||
return redirect($this->redirectPath())
|
||||
->withErrors(trans('settings.2fa_enable_error'));
|
||||
return response()->json(['success' => false]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -122,12 +124,10 @@ class MultiFAController extends Controller
|
||||
|
||||
$authenticator->logout();
|
||||
|
||||
return redirect($this->redirectPath())
|
||||
->with('status', trans('settings.2fa_disable_success'));
|
||||
return response()->json(['success' => true]);
|
||||
}
|
||||
|
||||
return redirect($this->redirectPath())
|
||||
->withErrors(trans('settings.2fa_disable_error'));
|
||||
return response()->json(['success' => false]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,4 +141,19 @@ class MultiFAController extends Controller
|
||||
|
||||
return $google2fa->generateSecretKey(32);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function u2fRegister(Request $request)
|
||||
{
|
||||
list($req, $sigs) = app('u2f')->getRegisterData($request->user());
|
||||
session(['u2f.registerData' => $req]);
|
||||
|
||||
return response()->json([
|
||||
'currentKeys' => $sigs,
|
||||
'registerData' => $req,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user