Skip to content

Commit

Permalink
Merge branch 'main' of github.com:vormkracht10/filament-two-factor-auth
Browse files Browse the repository at this point in the history
  • Loading branch information
Baspa committed Aug 16, 2024
2 parents 622aebd + 459fb7c commit 67035d7
Show file tree
Hide file tree
Showing 13 changed files with 98 additions and 94 deletions.
4 changes: 2 additions & 2 deletions src/Enums/TwoFactorType.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ public static function values(): array
public function label(): string
{
return match ($this) {
static::email => __('E-mail'),
static::authenticator => __('Authenticator app'),
self::email => __('E-mail'),
self::authenticator => __('Authenticator app'),
};
}
}
25 changes: 13 additions & 12 deletions src/Http/Livewire/Auth/Login.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,27 @@

namespace Vormkracht10\TwoFactorAuth\Http\Livewire\Auth;

use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
use Filament\Actions\Action;
use Illuminate\Http\Request;
use Laravel\Fortify\Fortify;
use Laravel\Fortify\Features;
use Filament\Facades\Filament;
use Illuminate\Routing\Pipeline;
use Illuminate\Support\HtmlString;
use Illuminate\Support\Facades\Blade;
use Filament\Forms\Components\Checkbox;
use Filament\Forms\Components\Component;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Models\Contracts\FilamentUser;
use Filament\Notifications\Notification;
use Filament\Pages\Auth\Login as BaseLogin;
use Laravel\Fortify\Actions\CanonicalizeUsername;
use Illuminate\Http\Request;
use Illuminate\Routing\Pipeline;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\HtmlString;
use Laravel\Fortify\Actions\AttemptToAuthenticate;
use Laravel\Fortify\Actions\CanonicalizeUsername;
use Laravel\Fortify\Actions\EnsureLoginIsNotThrottled;
use Laravel\Fortify\Actions\PrepareAuthenticatedSession;
use Vormkracht10\TwoFactorAuth\Http\Responses\LoginResponse;
use Laravel\Fortify\Actions\RedirectIfTwoFactorAuthenticatable;
use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
use Laravel\Fortify\Features;
use Laravel\Fortify\Fortify;
use Vormkracht10\TwoFactorAuth\Http\Responses\LoginResponse;

class Login extends BaseLogin
{
Expand All @@ -33,6 +33,7 @@ class Login extends BaseLogin
protected static string $layout = 'filament-two-factor-auth::layouts.login';

public $email = '';

public $password = '';

public $resetPasswordEnabled = false;
Expand Down Expand Up @@ -100,15 +101,15 @@ public function loginWithFortify()

return $this->loginPipeline($request)->then(function (Request $request) use ($data) {

if (!Filament::auth()->attempt($this->getCredentialsFromFormData($data), $data['remember'] ?? false)) {
if (! Filament::auth()->attempt($this->getCredentialsFromFormData($data), $data['remember'] ?? false)) {
$this->throwFailureValidationException();
}

$user = Filament::auth()->user();

if (
($user instanceof FilamentUser) &&
(!$user->canAccessPanel(Filament::getCurrentPanel()))
(! $user->canAccessPanel(Filament::getCurrentPanel()))
) {
Filament::auth()->logout();

Expand Down
22 changes: 12 additions & 10 deletions src/Http/Livewire/Auth/LoginTwoFactor.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@
namespace Vormkracht10\TwoFactorAuth\Http\Livewire\Auth;

use App\Models\User;
use Filament\Pages\Page;
use Filament\Actions\Action;
use App\Notifications\SendOTP;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
use DanHarrin\LivewireRateLimiting\WithRateLimiting;
use Filament\Actions\Action;
use Filament\Actions\Contracts\HasActions;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Contracts\HasForms;
use Filament\Notifications\Notification;
use Filament\Pages\Concerns\InteractsWithFormActions;
use Filament\Pages\Page;
use Laravel\Fortify\Http\Requests\TwoFactorLoginRequest;
use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
use DanHarrin\LivewireRateLimiting\WithRateLimiting;

class LoginTwoFactor extends Page implements HasForms, HasActions
class LoginTwoFactor extends Page implements HasActions, HasForms
{
use InteractsWithForms;
use InteractsWithFormActions;
use InteractsWithForms;
use WithRateLimiting;

protected static string $layout = 'filament-two-factor-auth::layouts.login';
Expand Down Expand Up @@ -50,7 +50,7 @@ public function resend(): ?Action
->extraAttributes(['class' => 'w-full text-xs'])
->link()
->action(function () {
if (!$this->throttle()) {
if (! $this->throttle()) {
return;
}

Expand All @@ -67,6 +67,7 @@ private function throttle(): bool
{
try {
$this->rateLimit(1);

return true;
} catch (TooManyRequestsException $exception) {
Notification::make()
Expand All @@ -80,6 +81,7 @@ private function throttle(): bool
]) : null)
->danger()
->send();

return false;
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/Http/Livewire/Auth/PasswordConfirmation.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace Vormkracht10\TwoFactorAuth\Http\Livewire\Auth;

use Livewire\Component;
use Illuminate\Contracts\View\View;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Contracts\HasForms;
use Filament\Notifications\Notification;
use Illuminate\Contracts\View\View;
use Livewire\Component;

class PasswordConfirmation extends Component implements HasForms
{
Expand Down
10 changes: 6 additions & 4 deletions src/Http/Livewire/Auth/PasswordReset.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

namespace Vormkracht10\TwoFactorAuth\Http\Livewire\Auth;

use Filament\Pages\Page;
use Filament\Facades\Filament;
use Illuminate\Contracts\View\View;
use Filament\Forms\Components\Hidden;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Contracts\HasForms;
use Filament\Notifications\Notification;
use Filament\Pages\Page;
use Illuminate\Contracts\View\View;

class PasswordReset extends Page implements HasForms
{
Expand All @@ -18,7 +18,9 @@ class PasswordReset extends Page implements HasForms
protected static string $layout = 'filament-two-factor-auth::layouts.login';

public ?string $email = '';

public ?string $password = '';

public ?string $token = '';

public function mount(): void
Expand Down
9 changes: 4 additions & 5 deletions src/Http/Livewire/Auth/RequestPasswordReset.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@

namespace Vormkracht10\TwoFactorAuth\Http\Livewire\Auth;

use Filament\Pages\Page;

use Filament\Facades\Filament;
use Illuminate\Contracts\View\View;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Contracts\HasForms;
use Filament\Notifications\Notification;
use Filament\Pages\Page;
use Illuminate\Contracts\View\View;

class RequestPasswordReset extends Page implements HasForms
{
Expand Down
3 changes: 2 additions & 1 deletion src/Http/Responses/RegistrationResponse.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
<?php

namespace Vormkracht10\TwoFactorAuth\Http\Responses;

use Filament\Http\Responses\Auth\Contracts\RegistrationResponse as Responsable;
use Illuminate\Http\RedirectResponse;
use Livewire\Features\SupportRedirects\Redirector;

class RegistrationResponse implements Responsable
{
public function toResponse($request): RedirectResponse|Redirector
public function toResponse($request): RedirectResponse | Redirector
{
return redirect()->intended(route('filament.admin.auth.email-verification.prompt'));
}
Expand Down
2 changes: 1 addition & 1 deletion src/Http/Responses/TwoFactorChallengeViewResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ public function toResponse($request)
{
return redirect()->intended(Filament::getUrl());
}
}
}
29 changes: 14 additions & 15 deletions src/Pages/TwoFactor.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,20 @@

namespace Vormkracht10\TwoFactorAuth\Pages;

use Filament\Forms\Form;
use Filament\Pages\Page;
use Filament\Actions\Action;
use Laravel\Fortify\Features;

use Filament\Forms\Components\Radio;
use Illuminate\Support\Facades\Auth;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Form;
use Filament\Notifications\Notification;
use Vormkracht10\TwoFactorAuth\Enums\TwoFactorType;
use Laravel\Fortify\Actions\GenerateNewRecoveryCodes;
use Laravel\Fortify\Actions\EnableTwoFactorAuthentication;
use Filament\Pages\Page;
use Illuminate\Support\Facades\Auth;
use Laravel\Fortify\Actions\ConfirmTwoFactorAuthentication;
use Laravel\Fortify\Actions\DisableTwoFactorAuthentication;
use Laravel\Fortify\Actions\EnableTwoFactorAuthentication;
use Laravel\Fortify\Actions\GenerateNewRecoveryCodes;
use Laravel\Fortify\Features;
use Vormkracht10\TwoFactorAuth\Enums\TwoFactorType;

class TwoFactor extends Page implements HasForms
{
Expand All @@ -32,7 +31,7 @@ class TwoFactor extends Page implements HasForms

public string $code;

protected static string $view = "filament-two-factor-auth::two-factor";
protected static string $view = 'filament-two-factor-auth::two-factor';

public static function shouldRegisterNavigation(): bool
{
Expand All @@ -58,19 +57,19 @@ public function mount()

public function requireConfirmation(): bool
{
return !$this->passwordIsConfirmed();
return ! $this->passwordIsConfirmed();

Check failure on line 60 in src/Pages/TwoFactor.php

View workflow job for this annotation

GitHub Actions / phpstan

Call to an undefined method Vormkracht10\TwoFactorAuth\Pages\TwoFactor::passwordIsConfirmed().
}

public function getConfirmationForm(): array
{
return [
TextInput::make("current_password")
TextInput::make('current_password')
->label(__('Password'))
->dehydrateStateUsing(fn ($state) => filled($state))
->required()
->password()
->inlineLabel()
->rule("current_password"),
->rule('current_password'),
];
}

Expand All @@ -80,7 +79,7 @@ public function twoFactorOptionForm(Form $form): Form
Radio::make('option')
->label(__('Authentication method'))
->hiddenLabel()
->options(TwoFactorType::array())
->options(TwoFactorType::array()),
])->statePath('twoFactorData');
}

Expand Down Expand Up @@ -165,7 +164,7 @@ public function disableAction(): Action
/** This method is used in the view */
private function showTwoFactor(): bool
{
return !empty(Auth::user()->two_factor_secret);
return ! empty(Auth::user()->two_factor_secret);
}

public function enableTwoFactorAuthentication(EnableTwoFactorAuthentication $enable): void
Expand Down
2 changes: 1 addition & 1 deletion src/Traits/EnumArraySerializableTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ public static function array(): array
{
return array_combine(static::names(), static::values());
}
}
}
2 changes: 1 addition & 1 deletion src/Traits/EnumNamesTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ public static function names(): array
{
return array_map(fn ($enum) => $enum->name, static::cases());
}
}
}
2 changes: 1 addition & 1 deletion src/Traits/EnumValuesTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ public static function values(): array
{
return array_map(fn ($enum) => $enum->value, static::cases());
}
}
}
Loading

0 comments on commit 67035d7

Please sign in to comment.