mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-10 00:34:50 +00:00
Update AccountController, allow 2FA backup codes
This commit is contained in:
parent
f7c1801ab8
commit
3a38c7386b
1 changed files with 32 additions and 0 deletions
|
@ -339,6 +339,11 @@ class AccountController extends Controller
|
||||||
$request->session()->push('2fa.session.active', true);
|
$request->session()->push('2fa.session.active', true);
|
||||||
return redirect('/');
|
return redirect('/');
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
if($this->twoFactorBackupCheck($request, $code, $user)) {
|
||||||
|
return redirect('/');
|
||||||
|
}
|
||||||
|
|
||||||
if($request->session()->has('2fa.attempts')) {
|
if($request->session()->has('2fa.attempts')) {
|
||||||
$count = (int) $request->session()->has('2fa.attempts');
|
$count = (int) $request->session()->has('2fa.attempts');
|
||||||
$request->session()->push('2fa.attempts', $count + 1);
|
$request->session()->push('2fa.attempts', $count + 1);
|
||||||
|
@ -350,4 +355,31 @@ class AccountController extends Controller
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function twoFactorBackupCheck($request, $code, User $user)
|
||||||
|
{
|
||||||
|
$backupCodes = $user->{'2fa_backup_codes'};
|
||||||
|
if($backupCodes) {
|
||||||
|
$codes = json_decode($backupCodes, true);
|
||||||
|
foreach ($codes as $c) {
|
||||||
|
if(hash_equals($c, $code)) {
|
||||||
|
// remove code
|
||||||
|
$codes = array_flatten(array_diff($codes, [$code]));
|
||||||
|
$user->{'2fa_backup_codes'} = json_encode($codes);
|
||||||
|
$user->save();
|
||||||
|
$request->session()->push('2fa.session.active', true);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function accountRestored(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue