You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
5.5 KiB
125 lines
5.5 KiB
<x-action-section>
|
|
<x-slot name="title">
|
|
{{ __('Two Factor Authentication') }}
|
|
</x-slot>
|
|
|
|
<x-slot name="description">
|
|
{{ __('Add additional security to your account using two factor authentication.') }}
|
|
</x-slot>
|
|
|
|
<x-slot name="content">
|
|
<h3 class="text-lg font-medium text-gray-900">
|
|
@if ($this->enabled)
|
|
@if ($showingConfirmation)
|
|
{{ __('Finish enabling two factor authentication.') }}
|
|
@else
|
|
{{ __('You have enabled two factor authentication.') }}
|
|
@endif
|
|
@else
|
|
{{ __('You have not enabled two factor authentication.') }}
|
|
@endif
|
|
</h3>
|
|
|
|
<div class="mt-3 max-w-xl text-sm text-gray-600">
|
|
<p>
|
|
{{ __('When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone\'s Google Authenticator application.') }}
|
|
</p>
|
|
</div>
|
|
|
|
@if ($this->enabled)
|
|
@if ($showingQrCode)
|
|
<div class="mt-4 max-w-xl text-sm text-gray-600">
|
|
<p class="font-semibold">
|
|
@if ($showingConfirmation)
|
|
{{ __('To finish enabling two factor authentication, scan the following QR code using your phone\'s authenticator application or enter the setup key and provide the generated OTP code.') }}
|
|
@else
|
|
{{ __('Two factor authentication is now enabled. Scan the following QR code using your phone\'s authenticator application or enter the setup key.') }}
|
|
@endif
|
|
</p>
|
|
</div>
|
|
|
|
<div class="mt-4 p-2 inline-block bg-white">
|
|
{!! $this->user->twoFactorQrCodeSvg() !!}
|
|
</div>
|
|
|
|
<div class="mt-4 max-w-xl text-sm text-gray-600">
|
|
<p class="font-semibold">
|
|
{{ __('Setup Key') }}: {{ decrypt($this->user->two_factor_secret) }}
|
|
</p>
|
|
</div>
|
|
|
|
@if ($showingConfirmation)
|
|
<div class="mt-4">
|
|
<x-label for="code" value="{{ __('Code') }}" />
|
|
|
|
<x-input id="code" type="text" name="code" class="block mt-1 w-1/2" inputmode="numeric" autofocus autocomplete="one-time-code"
|
|
wire:model="code"
|
|
wire:keydown.enter="confirmTwoFactorAuthentication" />
|
|
|
|
<x-input-error for="code" class="mt-2" />
|
|
</div>
|
|
@endif
|
|
@endif
|
|
|
|
@if ($showingRecoveryCodes)
|
|
<div class="mt-4 max-w-xl text-sm text-gray-600">
|
|
<p class="font-semibold">
|
|
{{ __('Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.') }}
|
|
</p>
|
|
</div>
|
|
|
|
<div class="grid gap-1 max-w-xl mt-4 px-4 py-4 font-mono text-sm bg-gray-100 rounded-lg">
|
|
@foreach (json_decode(decrypt($this->user->two_factor_recovery_codes), true) as $code)
|
|
<div>{{ $code }}</div>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
@endif
|
|
|
|
<div class="mt-5">
|
|
@if (! $this->enabled)
|
|
<x-confirms-password wire:then="enableTwoFactorAuthentication">
|
|
<x-button type="button" wire:loading.attr="disabled">
|
|
{{ __('Enable') }}
|
|
</x-button>
|
|
</x-confirms-password>
|
|
@else
|
|
@if ($showingRecoveryCodes)
|
|
<x-confirms-password wire:then="regenerateRecoveryCodes">
|
|
<x-secondary-button class="me-3">
|
|
{{ __('Regenerate Recovery Codes') }}
|
|
</x-secondary-button>
|
|
</x-confirms-password>
|
|
@elseif ($showingConfirmation)
|
|
<x-confirms-password wire:then="confirmTwoFactorAuthentication">
|
|
<x-button type="button" class="me-3" wire:loading.attr="disabled">
|
|
{{ __('Confirm') }}
|
|
</x-button>
|
|
</x-confirms-password>
|
|
@else
|
|
<x-confirms-password wire:then="showRecoveryCodes">
|
|
<x-secondary-button class="me-3">
|
|
{{ __('Show Recovery Codes') }}
|
|
</x-secondary-button>
|
|
</x-confirms-password>
|
|
@endif
|
|
|
|
@if ($showingConfirmation)
|
|
<x-confirms-password wire:then="disableTwoFactorAuthentication">
|
|
<x-secondary-button wire:loading.attr="disabled">
|
|
{{ __('Cancel') }}
|
|
</x-secondary-button>
|
|
</x-confirms-password>
|
|
@else
|
|
<x-confirms-password wire:then="disableTwoFactorAuthentication">
|
|
<x-danger-button wire:loading.attr="disabled">
|
|
{{ __('Disable') }}
|
|
</x-danger-button>
|
|
</x-confirms-password>
|
|
@endif
|
|
|
|
@endif
|
|
</div>
|
|
</x-slot>
|
|
</x-action-section>
|