Cache per user and show backup tokens temporarily

This commit is contained in:
Lance Pioch 2024-05-31 01:38:32 -04:00
parent ef1a208b95
commit 7657364208

View File

@ -104,6 +104,11 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile
return [ return [
Placeholder::make('2fa-already-enabled') Placeholder::make('2fa-already-enabled')
->label('Two Factor Authentication is currently enabled!'), ->label('Two Factor Authentication is currently enabled!'),
Placeholder::make('backup-tokens')
->hidden(fn () => !cache()->get("users.{$this->getUser()->id}.2fa.tokens"))
->helperText(cache()->get("users.{$this->getUser()->id}.2fa.tokens") .
' - these will not be shown again!')
->label("Backup Tokens:"),
TextInput::make('2fa-disable-code') TextInput::make('2fa-disable-code')
->label('Disable 2FA') ->label('Disable 2FA')
->helperText('Enter your current 2FA code to disable Two Factor Authentication'), ->helperText('Enter your current 2FA code to disable Two Factor Authentication'),
@ -112,7 +117,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile
$setupService = app(TwoFactorSetupService::class); $setupService = app(TwoFactorSetupService::class);
['image_url_data' => $url, 'secret' => $secret] = cache()->remember( ['image_url_data' => $url, 'secret' => $secret] = cache()->remember(
'current-two-factor-state', "users.{$this->getUser()->id}.2fa.state",
now()->addMinutes(5), fn () => now()->addMinutes(5), fn () =>
$setupService->handle($this->getUser()) $setupService->handle($this->getUser())
); );
@ -261,7 +266,8 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile
/** @var ToggleTwoFactorService $service */ /** @var ToggleTwoFactorService $service */
$service = resolve(ToggleTwoFactorService::class); $service = resolve(ToggleTwoFactorService::class);
$service->handle($record, $token, true); $tokens = $service->handle($record, $token, true);
cache()->set("users.$record->id.2fa.tokens", implode("\n", $tokens), now()->addSeconds(15));
} }
if ($token = $data['2fa-disable-code'] ?? null) { if ($token = $data['2fa-disable-code'] ?? null) {
@ -270,7 +276,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile
$service->handle($record, $token, false); $service->handle($record, $token, false);
cache()->forget('current-two-factor-state'); cache()->forget("users.$record->id.2fa.state");
} }
return parent::handleRecordUpdate($record, $data); return parent::handleRecordUpdate($record, $data);