From d686d8fbf7417e92ed444c70711d3761b941e8dd Mon Sep 17 00:00:00 2001 From: Imani Manyara Date: Tue, 1 Sep 2026 10:41:38 -0400 Subject: [PATCH] style: apply pint Formatting only, no behavioural change. These violations accumulated on main because CI triggers on pull_request, so nothing re-runs Pint after a merge - they surfaced as red checks on unrelated dependency PRs. --- config/laranail/authkit.php | 14 +++--- ...026_08_14_000000_create_passkeys_table.php | 4 +- rector-migrate-social.php | 2 +- routes/api.php | 2 +- src/Actions/AttemptEmailPasswordLogin.php | 6 +-- src/Actions/CheckEmailExists.php | 2 +- src/Actions/CreateNewUser.php | 14 ++---- src/Actions/IssueTokenForUser.php | 4 +- src/Actions/ListBrowserSessions.php | 4 +- src/Actions/LoginUser.php | 2 +- src/Actions/LogoutOtherBrowserSessions.php | 4 +- src/Actions/LogoutUser.php | 2 +- src/Actions/ResetUserPassword.php | 5 +- src/Actions/UpdateUserPassword.php | 8 ++-- src/Actions/UpdateUserProfileInformation.php | 11 ++--- src/Contracts/IssueTokenForUserInterface.php | 2 +- .../ListBrowserSessionsInterface.php | 2 +- ...actAttemptEmailPasswordLoginController.php | 16 +++---- .../Controllers/AbstractAuthController.php | 5 +- .../Controllers/AbstractLogoutController.php | 2 +- .../AbstractNewPasswordController.php | 12 ++--- .../AbstractPasswordResetLinkController.php | 6 +-- .../AbstractRegisterController.php | 10 ++-- .../AbstractVerifyEmailController.php | 2 +- .../Api/CheckEmailExistsController.php | 2 +- src/Http/Controllers/Api/LoginController.php | 28 +++++------ src/Http/Controllers/Api/LogoutController.php | 4 +- .../Controllers/Api/RegisterController.php | 14 +++--- .../AttemptEmailPasswordLoginRequest.php | 2 +- src/Http/Requests/RegisterRequest.php | 6 +-- src/Http/Requests/ResetPasswordRequest.php | 2 +- src/Http/Requests/UpdatePasswordRequest.php | 4 +- .../UpdateProfileInformationRequest.php | 4 +- src/Models/Passkey.php | 2 +- src/PasskeyAuthenticatable.php | 7 +-- src/Providers/AuthKitServiceProvider.php | 4 +- src/Relations/PasskeyMorphMany.php | 2 +- src/Rules/TurnstileRule.php | 4 +- src/Services/BrowserSessionService.php | 15 +++--- src/Services/IdentityProviderRegistry.php | 2 +- src/Services/Turnstile.php | 4 +- src/Services/UserProvisioningService.php | 8 ++-- src/Services/UserValidationService.php | 6 +-- src/Support/IdentityProvider.php | 10 ++-- src/Support/UserModelResolver.php | 4 +- .../Feature/AttemptEmailPasswordLoginTest.php | 20 ++++---- tests/Feature/BrowserSessionsTest.php | 14 +++--- tests/Feature/CheckEmailExistsTest.php | 2 +- tests/Feature/CreateNewUserTest.php | 48 +++++++++---------- tests/Feature/FindUserByEmailTest.php | 2 +- .../Feature/IdentityProviderRegistryTest.php | 2 +- tests/Feature/IssueTokenForUserTest.php | 4 +- tests/Feature/LoginUserTest.php | 2 +- tests/Feature/LogoutUserTest.php | 2 +- tests/Feature/PasskeyTest.php | 24 +++++----- .../PasswordResetLinkControllerTest.php | 2 +- tests/Feature/ProviderLayoutTest.php | 4 +- tests/Feature/ResetUserPasswordTest.php | 23 ++++----- tests/Feature/TurnstileTest.php | 2 +- tests/Feature/UpdateUserPasswordTest.php | 16 +++---- .../UpdateUserProfileInformationTest.php | 20 ++++---- tests/Pest.php | 2 +- tests/TestCase.php | 23 +++++---- workbench/app/Models/User.php | 10 ++-- workbench/database/factories/UserFactory.php | 12 ++--- 65 files changed, 255 insertions(+), 254 deletions(-) diff --git a/config/laranail/authkit.php b/config/laranail/authkit.php index ea84480..de90f5c 100644 --- a/config/laranail/authkit.php +++ b/config/laranail/authkit.php @@ -8,16 +8,16 @@ 'user_model' => env(key: 'AUTHKIT_USER_MODEL'), 'rate_limit' => [ - 'max_attempts' => (int) env(key: 'AUTHKIT_RATE_LIMIT_MAX_ATTEMPTS', default: 5), + 'max_attempts' => (int) env(key: 'AUTHKIT_RATE_LIMIT_MAX_ATTEMPTS', default: 5), 'decay_minutes' => (int) env(key: 'AUTHKIT_RATE_LIMIT_DECAY_MINUTES', default: 1), ], 'turnstile' => [ - 'enabled' => (bool) env(key: 'AUTHKIT_TURNSTILE_ENABLED', default: false), - 'site_key' => env(key: 'TURNSTILE_SITE_KEY'), + 'enabled' => (bool) env(key: 'AUTHKIT_TURNSTILE_ENABLED', default: false), + 'site_key' => env(key: 'TURNSTILE_SITE_KEY'), 'secret_key' => env(key: 'TURNSTILE_SECRET_KEY'), - 'url' => env(key: 'TURNSTILE_URL', default: 'https://challenges.cloudflare.com/turnstile/v0/siteverify'), - 'input' => 'cf-turnstile-response', + 'url' => env(key: 'TURNSTILE_URL', default: 'https://challenges.cloudflare.com/turnstile/v0/siteverify'), + 'input' => 'cf-turnstile-response', ], 'fortify' => [ @@ -74,8 +74,8 @@ */ 'api' => [ - 'enabled' => (bool) env(key: 'AUTHKIT_API_ENABLED', default: true), - 'prefix' => env(key: 'AUTHKIT_API_PREFIX', default: 'api/auth'), + 'enabled' => (bool) env(key: 'AUTHKIT_API_ENABLED', default: true), + 'prefix' => env(key: 'AUTHKIT_API_PREFIX', default: 'api/auth'), /* * Route names are a flat, global registry: a second package -- or the host application diff --git a/database/migrations/passkeys/2026_08_14_000000_create_passkeys_table.php b/database/migrations/passkeys/2026_08_14_000000_create_passkeys_table.php index eaf1cf7..52dbe8e 100644 --- a/database/migrations/passkeys/2026_08_14_000000_create_passkeys_table.php +++ b/database/migrations/passkeys/2026_08_14_000000_create_passkeys_table.php @@ -2,9 +2,9 @@ declare(strict_types=1); -use Illuminate\Support\Facades\Schema; -use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; return new class extends Migration { diff --git a/rector-migrate-social.php b/rector-migrate-social.php index b244824..d750f34 100644 --- a/rector-migrate-social.php +++ b/rector-migrate-social.php @@ -41,7 +41,7 @@ $renames = []; foreach ($moved as $class) { - $renames[$old . $class] = $new . $class; + $renames[$old.$class] = $new.$class; } return RectorConfig::configure() diff --git a/routes/api.php b/routes/api.php index 5df3b3e..8b87285 100644 --- a/routes/api.php +++ b/routes/api.php @@ -3,8 +3,8 @@ declare(strict_types=1); use Illuminate\Support\Facades\Route; -use Simtabi\Laranail\AuthKit\Support\AuthKit; use Simtabi\Laranail\AuthKit\Http\Controllers\Api; +use Simtabi\Laranail\AuthKit\Support\AuthKit; /* |-------------------------------------------------------------------------- diff --git a/src/Actions/AttemptEmailPasswordLogin.php b/src/Actions/AttemptEmailPasswordLogin.php index 9ef5d59..d084175 100644 --- a/src/Actions/AttemptEmailPasswordLogin.php +++ b/src/Actions/AttemptEmailPasswordLogin.php @@ -4,11 +4,11 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Http\Request; use Illuminate\Cache\RateLimiter; -use Simtabi\Laranail\AuthKit\Support\AuthResult; use Illuminate\Contracts\Auth\Factory as AuthFactory; +use Illuminate\Http\Request; use Simtabi\Laranail\AuthKit\Contracts\AttemptEmailPasswordLoginInterface; +use Simtabi\Laranail\AuthKit\Support\AuthResult; class AttemptEmailPasswordLogin implements AttemptEmailPasswordLoginInterface { @@ -23,7 +23,7 @@ public function execute(Request $request, string $guard): AuthResult $password = $request->input('password'); $ip = $request->ip(); - $key = 'login:' . $guard . ':' . mb_strtolower(string: $email) . ':' . ($ip ?? '_'); + $key = 'login:'.$guard.':'.mb_strtolower(string: $email).':'.($ip ?? '_'); $maxAttempts = (int) config(key: 'laranail.authkit.rate_limit.max_attempts', default: 5); $decaySeconds = (int) config(key: 'laranail.authkit.rate_limit.decay_minutes', default: 1) * 60; diff --git a/src/Actions/CheckEmailExists.php b/src/Actions/CheckEmailExists.php index b8fe3bc..8a388ac 100644 --- a/src/Actions/CheckEmailExists.php +++ b/src/Actions/CheckEmailExists.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Http\Request; use Illuminate\Contracts\Auth\Factory as AuthFactory; +use Illuminate\Http\Request; use Simtabi\Laranail\AuthKit\Contracts\CheckEmailExistsInterface; class CheckEmailExists implements CheckEmailExistsInterface diff --git a/src/Actions/CreateNewUser.php b/src/Actions/CreateNewUser.php index 6bc0d2e..61344ab 100644 --- a/src/Actions/CreateNewUser.php +++ b/src/Actions/CreateNewUser.php @@ -4,17 +4,13 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Support\Str; -use Illuminate\Validation\Rule; -use Illuminate\Support\Facades\Hash; -use Illuminate\Validation\Rules\Password; -use Simtabi\Laranail\AuthKit\Support\AuthKit; use Illuminate\Contracts\Auth\Authenticatable; -use Simtabi\Laranail\AuthKit\Support\UserModelResolver; +use Illuminate\Validation\Rule; use Laravel\Fortify\Contracts\CreatesNewUsers as FortifyCreateNewUser; -use Simtabi\Laranail\AuthKit\Services\UserValidationService; use Simtabi\Laranail\AuthKit\Http\Requests\RegisterRequest; use Simtabi\Laranail\AuthKit\Services\UserProvisioningService; +use Simtabi\Laranail\AuthKit\Services\UserValidationService; +use Simtabi\Laranail\AuthKit\Support\UserModelResolver; class CreateNewUser implements FortifyCreateNewUser { @@ -37,8 +33,8 @@ public function create(array $input): Authenticatable ); $user = app(abstract: UserProvisioningService::class)->create(attributes: [ - 'name' => $input['name'], - 'email' => $input['email'], + 'name' => $input['name'], + 'email' => $input['email'], 'password' => $input['password'], ]); diff --git a/src/Actions/IssueTokenForUser.php b/src/Actions/IssueTokenForUser.php index 0342b18..ebccf36 100644 --- a/src/Actions/IssueTokenForUser.php +++ b/src/Actions/IssueTokenForUser.php @@ -6,8 +6,8 @@ use DateTimeInterface; use Illuminate\Contracts\Auth\Authenticatable; -use Simtabi\Laranail\AuthKit\Support\TokenResult; use Simtabi\Laranail\AuthKit\Contracts\IssueTokenForUserInterface; +use Simtabi\Laranail\AuthKit\Support\TokenResult; class IssueTokenForUser implements IssueTokenForUserInterface { @@ -25,7 +25,7 @@ class IssueTokenForUser implements IssueTokenForUserInterface * downstream supplied the missing lifetime either. * * @param array|null $abilities null takes the configured default scope - * @param DateTimeInterface|null $expiresAt null takes the configured lifetime + * @param DateTimeInterface|null $expiresAt null takes the configured lifetime */ public function execute( Authenticatable $user, diff --git a/src/Actions/ListBrowserSessions.php b/src/Actions/ListBrowserSessions.php index 2cc783d..5e80aca 100644 --- a/src/Actions/ListBrowserSessions.php +++ b/src/Actions/ListBrowserSessions.php @@ -4,10 +4,10 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Support\Collection; use Illuminate\Contracts\Auth\Authenticatable; -use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; +use Illuminate\Support\Collection; use Simtabi\Laranail\AuthKit\Contracts\ListBrowserSessionsInterface; +use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; class ListBrowserSessions implements ListBrowserSessionsInterface { diff --git a/src/Actions/LoginUser.php b/src/Actions/LoginUser.php index c9bc0c6..9e56a28 100644 --- a/src/Actions/LoginUser.php +++ b/src/Actions/LoginUser.php @@ -4,9 +4,9 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Contracts\Session\Session; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Contracts\Auth\Factory as AuthFactory; +use Illuminate\Contracts\Session\Session; use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; class LoginUser implements LoginUserInterface diff --git a/src/Actions/LogoutOtherBrowserSessions.php b/src/Actions/LogoutOtherBrowserSessions.php index 2a40943..4ef006f 100644 --- a/src/Actions/LogoutOtherBrowserSessions.php +++ b/src/Actions/LogoutOtherBrowserSessions.php @@ -4,10 +4,10 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Support\Facades\Auth; use Illuminate\Contracts\Auth\Authenticatable; -use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; +use Illuminate\Support\Facades\Auth; use Simtabi\Laranail\AuthKit\Contracts\LogoutOtherBrowserSessionsInterface; +use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; class LogoutOtherBrowserSessions implements LogoutOtherBrowserSessionsInterface { diff --git a/src/Actions/LogoutUser.php b/src/Actions/LogoutUser.php index b5dcb64..7c5c0d7 100644 --- a/src/Actions/LogoutUser.php +++ b/src/Actions/LogoutUser.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Contracts\Session\Session; use Illuminate\Contracts\Auth\Factory as AuthFactory; +use Illuminate\Contracts\Session\Session; use Simtabi\Laranail\AuthKit\Contracts\LogoutUserInterface; class LogoutUser implements LogoutUserInterface diff --git a/src/Actions/ResetUserPassword.php b/src/Actions/ResetUserPassword.php index 0583b6e..e870e9f 100644 --- a/src/Actions/ResetUserPassword.php +++ b/src/Actions/ResetUserPassword.php @@ -5,10 +5,9 @@ namespace Simtabi\Laranail\AuthKit\Actions; use Illuminate\Support\Facades\Hash; -use Illuminate\Validation\Rules\Password; use Laravel\Fortify\Contracts\ResetsUserPasswords as FortifyResetUserPassword; -use Simtabi\Laranail\AuthKit\Services\UserValidationService; use Simtabi\Laranail\AuthKit\Http\Requests\ResetPasswordRequest; +use Simtabi\Laranail\AuthKit\Services\UserValidationService; class ResetUserPassword implements FortifyResetUserPassword { @@ -20,7 +19,7 @@ public function reset($user, array $input): void ); $user->forceFill([ - 'password' => Hash::make($input['password']), + 'password' => Hash::make($input['password']), 'remember_token' => null, ])->save(); diff --git a/src/Actions/UpdateUserPassword.php b/src/Actions/UpdateUserPassword.php index e30db16..03edf5c 100644 --- a/src/Actions/UpdateUserPassword.php +++ b/src/Actions/UpdateUserPassword.php @@ -5,12 +5,12 @@ namespace Simtabi\Laranail\AuthKit\Actions; use Illuminate\Support\Facades\Hash; -use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; use Illuminate\Validation\Rules\Password; -use Simtabi\Laranail\AuthKit\Support\AuthKit; use Laravel\Fortify\Contracts\UpdatesUserPasswords; -use Simtabi\Laranail\AuthKit\Services\UserValidationService; use Simtabi\Laranail\AuthKit\Http\Requests\UpdatePasswordRequest; +use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; +use Simtabi\Laranail\AuthKit\Services\UserValidationService; +use Simtabi\Laranail\AuthKit\Support\AuthKit; class UpdateUserPassword implements UpdatesUserPasswords { @@ -26,7 +26,7 @@ public function update($user, array $input): void ); $user->forceFill(attributes: [ - 'password' => Hash::make(value: $input['password']), + 'password' => Hash::make(value: $input['password']), 'remember_token' => null, ])->save(); diff --git a/src/Actions/UpdateUserProfileInformation.php b/src/Actions/UpdateUserProfileInformation.php index 786d870..d79166b 100644 --- a/src/Actions/UpdateUserProfileInformation.php +++ b/src/Actions/UpdateUserProfileInformation.php @@ -4,12 +4,11 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Validation\Rule; -use Illuminate\Support\Str; use Illuminate\Contracts\Auth\MustVerifyEmail; +use Illuminate\Support\Str; use Laravel\Fortify\Contracts\UpdatesUserProfileInformation; -use Simtabi\Laranail\AuthKit\Services\UserValidationService; use Simtabi\Laranail\AuthKit\Http\Requests\UpdateProfileInformationRequest; +use Simtabi\Laranail\AuthKit\Services\UserValidationService; class UpdateUserProfileInformation implements UpdatesUserProfileInformation { @@ -37,7 +36,7 @@ public function update($user, array $input): void } $user->forceFill(attributes: [ - 'name' => $input['name'], + 'name' => $input['name'], 'email' => $input['email'], ])->save(); } @@ -45,8 +44,8 @@ public function update($user, array $input): void protected function updateVerifiedUser($user, array $input): void { $user->forceFill(attributes: [ - 'name' => $input['name'], - 'email' => $input['email'], + 'name' => $input['name'], + 'email' => $input['email'], 'email_verified_at' => null, ])->save(); diff --git a/src/Contracts/IssueTokenForUserInterface.php b/src/Contracts/IssueTokenForUserInterface.php index 4e21f81..a6d25e2 100644 --- a/src/Contracts/IssueTokenForUserInterface.php +++ b/src/Contracts/IssueTokenForUserInterface.php @@ -13,7 +13,7 @@ interface IssueTokenForUserInterface /** @param array $abilities */ /** * @param array|null $abilities null takes the configured default scope - * @param DateTimeInterface|null $expiresAt null takes the configured lifetime + * @param DateTimeInterface|null $expiresAt null takes the configured lifetime */ public function execute( Authenticatable $user, diff --git a/src/Contracts/ListBrowserSessionsInterface.php b/src/Contracts/ListBrowserSessionsInterface.php index 356a600..d28eb20 100644 --- a/src/Contracts/ListBrowserSessionsInterface.php +++ b/src/Contracts/ListBrowserSessionsInterface.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Contracts; -use Illuminate\Support\Collection; use Illuminate\Contracts\Auth\Authenticatable; +use Illuminate\Support\Collection; interface ListBrowserSessionsInterface { diff --git a/src/Http/Controllers/AbstractAttemptEmailPasswordLoginController.php b/src/Http/Controllers/AbstractAttemptEmailPasswordLoginController.php index 714730c..2306371 100644 --- a/src/Http/Controllers/AbstractAttemptEmailPasswordLoginController.php +++ b/src/Http/Controllers/AbstractAttemptEmailPasswordLoginController.php @@ -5,12 +5,12 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers; use Illuminate\Http\Request; -use Simtabi\Laranail\AuthKit\Support\AuthKit; -use Simtabi\Laranail\AuthKit\Enums\AuthStatus; -use Simtabi\Laranail\AuthKit\Support\AuthResult; -use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; use Simtabi\Laranail\AuthKit\Contracts\AttemptEmailPasswordLoginInterface; +use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; +use Simtabi\Laranail\AuthKit\Enums\AuthStatus; use Simtabi\Laranail\AuthKit\Http\Requests\AttemptEmailPasswordLoginRequest; +use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Simtabi\Laranail\AuthKit\Support\AuthResult; abstract class AbstractAttemptEmailPasswordLoginController extends AbstractAuthController { @@ -26,15 +26,15 @@ public function store( if ($request->expectsJson()) { return match ($result->status) { - AuthStatus::Passed => $this->jsonResponse(status: 'passed', data: ['user' => $result->user]), - AuthStatus::Failed => $this->jsonResponse(status: 'failed', data: ['message' => 'Invalid credentials.'], code: 422), + AuthStatus::Passed => $this->jsonResponse(status: 'passed', data: ['user' => $result->user]), + AuthStatus::Failed => $this->jsonResponse(status: 'failed', data: ['message' => 'Invalid credentials.'], code: 422), AuthStatus::Throttled => $this->jsonResponse(status: 'throttled', data: ['retry_after' => $result->retryAfterSeconds], code: 429), }; } return match ($result->status) { - AuthStatus::Passed => $this->handlePassed(request: $request, result: $result, loginAction: $loginAction), - AuthStatus::Failed => $this->failed(request: $request, result: $result), + AuthStatus::Passed => $this->handlePassed(request: $request, result: $result, loginAction: $loginAction), + AuthStatus::Failed => $this->failed(request: $request, result: $result), AuthStatus::Throttled => $this->throttled(request: $request, result: $result), }; } diff --git a/src/Http/Controllers/AbstractAuthController.php b/src/Http/Controllers/AbstractAuthController.php index 02a18e7..703ed5d 100644 --- a/src/Http/Controllers/AbstractAuthController.php +++ b/src/Http/Controllers/AbstractAuthController.php @@ -4,6 +4,7 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers; +use Illuminate\Http\JsonResponse; use Simtabi\Laranail\AuthKit\Support\AuthKit; abstract class AbstractAuthController @@ -13,11 +14,11 @@ protected function guard(): string return AuthKit::guard(); } - protected function jsonResponse(string $status, mixed $data = [], int $code = 200): \Illuminate\Http\JsonResponse + protected function jsonResponse(string $status, mixed $data = [], int $code = 200): JsonResponse { return response()->json(data: [ 'status' => $status, - 'data' => $data, + 'data' => $data, ], status: $code); } } diff --git a/src/Http/Controllers/AbstractLogoutController.php b/src/Http/Controllers/AbstractLogoutController.php index 27f0171..51075e4 100644 --- a/src/Http/Controllers/AbstractLogoutController.php +++ b/src/Http/Controllers/AbstractLogoutController.php @@ -5,8 +5,8 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers; use Illuminate\Http\Request; -use Simtabi\Laranail\AuthKit\Support\AuthKit; use Simtabi\Laranail\AuthKit\Contracts\LogoutUserInterface; +use Simtabi\Laranail\AuthKit\Support\AuthKit; abstract class AbstractLogoutController extends AbstractAuthController { diff --git a/src/Http/Controllers/AbstractNewPasswordController.php b/src/Http/Controllers/AbstractNewPasswordController.php index fa1e5e8..1bda47b 100644 --- a/src/Http/Controllers/AbstractNewPasswordController.php +++ b/src/Http/Controllers/AbstractNewPasswordController.php @@ -4,21 +4,21 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers; -use Illuminate\Support\Str; +use Illuminate\Contracts\Auth\PasswordBroker; use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; -use Illuminate\Contracts\Auth\PasswordBroker; -use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Illuminate\Support\Str; use Laravel\Fortify\Contracts\ResetsUserPasswords; +use Simtabi\Laranail\AuthKit\Support\AuthKit; abstract class AbstractNewPasswordController extends AbstractAuthController { public function store(Request $request): mixed { $request->validate([ - 'token' => 'required', - 'email' => 'required|email', - 'password' => 'required|confirmed', + 'token' => 'required', + 'email' => 'required|email', + 'password' => 'required|confirmed', config(key: 'laranail.authkit.turnstile.input', default: 'cf-turnstile-response') => AuthKit::turnstileRules(), ]); diff --git a/src/Http/Controllers/AbstractPasswordResetLinkController.php b/src/Http/Controllers/AbstractPasswordResetLinkController.php index 78a13c7..094fa21 100644 --- a/src/Http/Controllers/AbstractPasswordResetLinkController.php +++ b/src/Http/Controllers/AbstractPasswordResetLinkController.php @@ -4,10 +4,10 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers; -use Illuminate\Support\Str; +use Illuminate\Contracts\Auth\PasswordBroker; use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; -use Illuminate\Contracts\Auth\PasswordBroker; +use Illuminate\Support\Str; use Simtabi\Laranail\AuthKit\Support\AuthKit; abstract class AbstractPasswordResetLinkController extends AbstractAuthController @@ -15,7 +15,7 @@ abstract class AbstractPasswordResetLinkController extends AbstractAuthControlle public function store(Request $request): mixed { $request->validate([ - 'email' => 'required|email', + 'email' => 'required|email', config(key: 'laranail.authkit.turnstile.input', default: 'cf-turnstile-response') => AuthKit::turnstileRules(), ]); diff --git a/src/Http/Controllers/AbstractRegisterController.php b/src/Http/Controllers/AbstractRegisterController.php index 9ce604d..00868c2 100644 --- a/src/Http/Controllers/AbstractRegisterController.php +++ b/src/Http/Controllers/AbstractRegisterController.php @@ -4,14 +4,14 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers; -use Illuminate\Http\Request; -use Illuminate\Contracts\Auth\MustVerifyEmail; -use Illuminate\Support\Facades\Route; use Illuminate\Auth\Events\Registered; -use Simtabi\Laranail\AuthKit\Support\AuthKit; use Illuminate\Contracts\Auth\Authenticatable; -use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; +use Illuminate\Contracts\Auth\MustVerifyEmail; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Route; use Laravel\Fortify\Contracts\CreatesNewUsers as FortifyCreateNewUser; +use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; +use Simtabi\Laranail\AuthKit\Support\AuthKit; use Symfony\Component\Routing\Exception\RouteNotFoundException; abstract class AbstractRegisterController extends AbstractAuthController diff --git a/src/Http/Controllers/AbstractVerifyEmailController.php b/src/Http/Controllers/AbstractVerifyEmailController.php index 3cc4ba0..b6e2adc 100644 --- a/src/Http/Controllers/AbstractVerifyEmailController.php +++ b/src/Http/Controllers/AbstractVerifyEmailController.php @@ -5,8 +5,8 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers; use Illuminate\Auth\Events\Verified; -use Simtabi\Laranail\AuthKit\Support\AuthKit; use Laravel\Fortify\Http\Requests\VerifyEmailRequest; +use Simtabi\Laranail\AuthKit\Support\AuthKit; abstract class AbstractVerifyEmailController extends AbstractAuthController { diff --git a/src/Http/Controllers/Api/CheckEmailExistsController.php b/src/Http/Controllers/Api/CheckEmailExistsController.php index ae45f9f..1b5f19e 100644 --- a/src/Http/Controllers/Api/CheckEmailExistsController.php +++ b/src/Http/Controllers/Api/CheckEmailExistsController.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers\Api; -use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; use Simtabi\Laranail\AuthKit\Http\Controllers\AbstractCheckEmailExistsController; class CheckEmailExistsController extends AbstractCheckEmailExistsController diff --git a/src/Http/Controllers/Api/LoginController.php b/src/Http/Controllers/Api/LoginController.php index cac0624..4284fcb 100644 --- a/src/Http/Controllers/Api/LoginController.php +++ b/src/Http/Controllers/Api/LoginController.php @@ -4,16 +4,16 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers\Api; -use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; -use Simtabi\Laranail\AuthKit\Enums\AuthStatus; -use Simtabi\Laranail\AuthKit\Support\AuthResult; -use Simtabi\Laranail\AuthKit\Support\AuthKit; -use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; -use Simtabi\Laranail\AuthKit\Contracts\IssueTokenForUserInterface; +use Illuminate\Http\Request; use Simtabi\Laranail\AuthKit\Contracts\AttemptEmailPasswordLoginInterface; -use Simtabi\Laranail\AuthKit\Http\Requests\AttemptEmailPasswordLoginRequest; +use Simtabi\Laranail\AuthKit\Contracts\IssueTokenForUserInterface; +use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; +use Simtabi\Laranail\AuthKit\Enums\AuthStatus; use Simtabi\Laranail\AuthKit\Http\Controllers\AbstractAttemptEmailPasswordLoginController; +use Simtabi\Laranail\AuthKit\Http\Requests\AttemptEmailPasswordLoginRequest; +use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Simtabi\Laranail\AuthKit\Support\AuthResult; class LoginController extends AbstractAttemptEmailPasswordLoginController { @@ -32,8 +32,8 @@ public function store( ); return match ($result->status) { - AuthStatus::Passed => $this->apiPassed(result: $result), - AuthStatus::Failed => $this->jsonResponse(status: 'failed', data: ['message' => 'Invalid credentials.'], code: 422), + AuthStatus::Passed => $this->apiPassed(result: $result), + AuthStatus::Failed => $this->jsonResponse(status: 'failed', data: ['message' => 'Invalid credentials.'], code: 422), AuthStatus::Throttled => $this->jsonResponse(status: 'throttled', data: ['retry_after' => $result->retryAfterSeconds], code: 429), }; } @@ -52,7 +52,7 @@ protected function apiPassed(AuthResult $result): JsonResponse return $this->jsonResponse(status: 'success', data: [ 'token' => $tokenResult->token, - 'user' => $tokenResult->user, + 'user' => $tokenResult->user, ]); } @@ -65,14 +65,14 @@ protected function passed(Request $request, AuthResult $result): JsonResponse return response()->json([ 'token' => $tokenResult->token, - 'user' => $tokenResult->user, + 'user' => $tokenResult->user, ]); } protected function failed(Request $request, AuthResult $result): JsonResponse { return response()->json([ - 'status' => 'failed', + 'status' => 'failed', 'message' => 'Invalid credentials.', ], 422); } @@ -80,8 +80,8 @@ protected function failed(Request $request, AuthResult $result): JsonResponse protected function throttled(Request $request, AuthResult $result): JsonResponse { return response()->json([ - 'status' => 'throttled', - 'message' => 'Too many attempts.', + 'status' => 'throttled', + 'message' => 'Too many attempts.', 'retry_after_seconds' => $result->retryAfterSeconds, ], 429); } diff --git a/src/Http/Controllers/Api/LogoutController.php b/src/Http/Controllers/Api/LogoutController.php index fabe1d2..14ab527 100644 --- a/src/Http/Controllers/Api/LogoutController.php +++ b/src/Http/Controllers/Api/LogoutController.php @@ -4,11 +4,11 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers\Api; -use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; -use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Illuminate\Http\Request; use Simtabi\Laranail\AuthKit\Contracts\LogoutUserInterface; use Simtabi\Laranail\AuthKit\Http\Controllers\AbstractLogoutController; +use Simtabi\Laranail\AuthKit\Support\AuthKit; class LogoutController extends AbstractLogoutController { diff --git a/src/Http/Controllers/Api/RegisterController.php b/src/Http/Controllers/Api/RegisterController.php index 5aba35d..36781de 100644 --- a/src/Http/Controllers/Api/RegisterController.php +++ b/src/Http/Controllers/Api/RegisterController.php @@ -4,15 +4,15 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers\Api; -use Illuminate\Http\Request; -use Illuminate\Http\JsonResponse; use Illuminate\Auth\Events\Registered; use Illuminate\Contracts\Auth\Authenticatable; -use Simtabi\Laranail\AuthKit\Support\AuthKit; -use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; -use Simtabi\Laranail\AuthKit\Contracts\IssueTokenForUserInterface; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; use Laravel\Fortify\Contracts\CreatesNewUsers as FortifyCreateNewUser; +use Simtabi\Laranail\AuthKit\Contracts\IssueTokenForUserInterface; +use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; use Simtabi\Laranail\AuthKit\Http\Controllers\AbstractRegisterController; +use Simtabi\Laranail\AuthKit\Support\AuthKit; class RegisterController extends AbstractRegisterController { @@ -34,7 +34,7 @@ public function store( return $this->jsonResponse(status: 'success', data: [ 'token' => $tokenResult->token, - 'user' => $tokenResult->user, + 'user' => $tokenResult->user, ], code: 201); } @@ -52,7 +52,7 @@ protected function registered(Request $request, Authenticatable $user): JsonResp return response()->json([ 'token' => $tokenResult->token, - 'user' => $tokenResult->user, + 'user' => $tokenResult->user, ], 201); } } diff --git a/src/Http/Requests/AttemptEmailPasswordLoginRequest.php b/src/Http/Requests/AttemptEmailPasswordLoginRequest.php index 84598ac..866eaea 100644 --- a/src/Http/Requests/AttemptEmailPasswordLoginRequest.php +++ b/src/Http/Requests/AttemptEmailPasswordLoginRequest.php @@ -11,7 +11,7 @@ class AttemptEmailPasswordLoginRequest extends FormRequest public function rules(): array { return [ - 'email' => ['required', 'string', 'email'], + 'email' => ['required', 'string', 'email'], 'password' => ['required', 'string'], 'remember' => ['sometimes', 'boolean'], ]; diff --git a/src/Http/Requests/RegisterRequest.php b/src/Http/Requests/RegisterRequest.php index 9d184db..da18334 100644 --- a/src/Http/Requests/RegisterRequest.php +++ b/src/Http/Requests/RegisterRequest.php @@ -4,9 +4,9 @@ namespace Simtabi\Laranail\AuthKit\Http\Requests; +use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; use Illuminate\Validation\Rules\Password; -use Illuminate\Foundation\Http\FormRequest; use Simtabi\Laranail\AuthKit\Support\AuthKit; use Simtabi\Laranail\AuthKit\Support\UserModelResolver; @@ -33,8 +33,8 @@ public function rules(): array public static function rulesFor(): array { return array_merge([ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', Rule::unique(table: UserModelResolver::resolve())], + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', Rule::unique(table: UserModelResolver::resolve())], 'password' => ['required', 'string', Password::default(), 'confirmed'], ], [ config(key: 'laranail.authkit.turnstile.input', default: 'cf-turnstile-response') => AuthKit::turnstileRules(), diff --git a/src/Http/Requests/ResetPasswordRequest.php b/src/Http/Requests/ResetPasswordRequest.php index 649287d..afa9bda 100644 --- a/src/Http/Requests/ResetPasswordRequest.php +++ b/src/Http/Requests/ResetPasswordRequest.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Http\Requests; -use Illuminate\Validation\Rules\Password; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rules\Password; class ResetPasswordRequest extends FormRequest { diff --git a/src/Http/Requests/UpdatePasswordRequest.php b/src/Http/Requests/UpdatePasswordRequest.php index b12b5be..e3de4c5 100644 --- a/src/Http/Requests/UpdatePasswordRequest.php +++ b/src/Http/Requests/UpdatePasswordRequest.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Http\Requests; -use Illuminate\Validation\Rules\Password; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rules\Password; use Simtabi\Laranail\AuthKit\Support\AuthKit; class UpdatePasswordRequest extends FormRequest @@ -21,7 +21,7 @@ public static function rulesFor(string $guard): array { return [ 'current_password' => ['required', 'string', "current_password:{$guard}"], - 'password' => ['required', 'string', Password::default(), 'confirmed'], + 'password' => ['required', 'string', Password::default(), 'confirmed'], ]; } diff --git a/src/Http/Requests/UpdateProfileInformationRequest.php b/src/Http/Requests/UpdateProfileInformationRequest.php index cf22286..d2828c2 100644 --- a/src/Http/Requests/UpdateProfileInformationRequest.php +++ b/src/Http/Requests/UpdateProfileInformationRequest.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Http\Requests; -use Illuminate\Validation\Rule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; class UpdateProfileInformationRequest extends FormRequest { @@ -19,7 +19,7 @@ public function rules(): array public static function rulesFor(string $table, mixed $ignoreId = null): array { return [ - 'name' => ['required', 'string', 'max:255'], + 'name' => ['required', 'string', 'max:255'], 'email' => [ 'required', 'string', diff --git a/src/Models/Passkey.php b/src/Models/Passkey.php index 9a0e195..22adf22 100644 --- a/src/Models/Passkey.php +++ b/src/Models/Passkey.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Models; -use Laravel\Passkeys\Passkey as BasePasskey; use Illuminate\Database\Eloquent\Relations\MorphTo; +use Laravel\Passkeys\Passkey as BasePasskey; class Passkey extends BasePasskey { diff --git a/src/PasskeyAuthenticatable.php b/src/PasskeyAuthenticatable.php index 88ee51f..c48fe60 100644 --- a/src/PasskeyAuthenticatable.php +++ b/src/PasskeyAuthenticatable.php @@ -4,13 +4,14 @@ namespace Simtabi\Laranail\AuthKit; -use Laravel\Passkeys\Passkeys; use Illuminate\Database\Eloquent\Relations\HasMany; -use Simtabi\Laranail\AuthKit\Relations\PasskeyMorphMany; +use Laravel\Fortify\Contracts\PasskeyUser; use Laravel\Passkeys\PasskeyAuthenticatable as BasePasskeyAuthenticatable; +use Laravel\Passkeys\Passkeys; +use Simtabi\Laranail\AuthKit\Relations\PasskeyMorphMany; /** - * @phpstan-require-implements \Laravel\Fortify\Contracts\PasskeyUser + * @phpstan-require-implements PasskeyUser */ trait PasskeyAuthenticatable { diff --git a/src/Providers/AuthKitServiceProvider.php b/src/Providers/AuthKitServiceProvider.php index fe6dc50..07ec6f6 100644 --- a/src/Providers/AuthKitServiceProvider.php +++ b/src/Providers/AuthKitServiceProvider.php @@ -7,10 +7,10 @@ use Laravel\Fortify\Fortify; use Laravel\Passkeys\Passkeys; use Simtabi\Laranail\AuthKit\Actions; -use Simtabi\Laranail\AuthKit\Services; use Simtabi\Laranail\AuthKit\Contracts; -use Simtabi\Laranail\Package\Tools\Package; use Simtabi\Laranail\AuthKit\Models\Passkey; +use Simtabi\Laranail\AuthKit\Services; +use Simtabi\Laranail\Package\Tools\Package; use Simtabi\Laranail\Package\Tools\Providers\PackageServiceProvider; class AuthKitServiceProvider extends PackageServiceProvider diff --git a/src/Relations/PasskeyMorphMany.php b/src/Relations/PasskeyMorphMany.php index d2515be..a9ad4ca 100644 --- a/src/Relations/PasskeyMorphMany.php +++ b/src/Relations/PasskeyMorphMany.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Relations; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class PasskeyMorphMany extends HasMany diff --git a/src/Rules/TurnstileRule.php b/src/Rules/TurnstileRule.php index 5abc052..4df4fe8 100644 --- a/src/Rules/TurnstileRule.php +++ b/src/Rules/TurnstileRule.php @@ -5,16 +5,16 @@ namespace Simtabi\Laranail\AuthKit\Rules; use Closure; -use Simtabi\Laranail\AuthKit\Services\Turnstile; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Translation\PotentiallyTranslatedString; +use Simtabi\Laranail\AuthKit\Services\Turnstile; class TurnstileRule implements ValidationRule { /** * Run the validation rule. * - * @param Closure(string, ?string=): PotentiallyTranslatedString $fail + * @param Closure(string, ?string=): PotentiallyTranslatedString $fail */ public function validate(string $attribute, mixed $value, Closure $fail): void { diff --git a/src/Services/BrowserSessionService.php b/src/Services/BrowserSessionService.php index be859d3..25dfe76 100644 --- a/src/Services/BrowserSessionService.php +++ b/src/Services/BrowserSessionService.php @@ -4,10 +4,11 @@ namespace Simtabi\Laranail\AuthKit\Services; -use Illuminate\Support\Collection; -use Illuminate\Database\DatabaseManager; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Contracts\Config\Repository as Config; +use Illuminate\Database\DatabaseManager; +use Illuminate\Database\Query\Builder; +use Illuminate\Support\Collection; /** * Reads and prunes the rows behind a user's signed-in browsers. @@ -55,10 +56,10 @@ public function forUser(Authenticatable $user, ?string $currentSessionId = null) ->orderByDesc('last_activity') ->get() ->map(fn (object $session): object => (object) [ - 'id' => $session->id, - 'ip_address' => $session->ip_address ?? null, - 'user_agent' => $session->user_agent ?? null, - 'last_activity' => (int) $session->last_activity, + 'id' => $session->id, + 'ip_address' => $session->ip_address ?? null, + 'user_agent' => $session->user_agent ?? null, + 'last_activity' => (int) $session->last_activity, 'is_current_device' => $currentSessionId !== null && $session->id === $currentSessionId, ]); } @@ -89,7 +90,7 @@ public function deleteOthersFor(Authenticatable $user, ?string $currentSessionId return $query->delete(); } - private function query(): \Illuminate\Database\Query\Builder + private function query(): Builder { return $this->db ->connection($this->config->get('session.connection')) diff --git a/src/Services/IdentityProviderRegistry.php b/src/Services/IdentityProviderRegistry.php index 2c24fea..6d6e73b 100644 --- a/src/Services/IdentityProviderRegistry.php +++ b/src/Services/IdentityProviderRegistry.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Services; -use Simtabi\Laranail\AuthKit\Support\IdentityProvider; use Simtabi\Laranail\AuthKit\Contracts\IdentityProviderRegistryInterface; +use Simtabi\Laranail\AuthKit\Support\IdentityProvider; class IdentityProviderRegistry implements IdentityProviderRegistryInterface { diff --git a/src/Services/Turnstile.php b/src/Services/Turnstile.php index 7d52dbf..26c9ab3 100644 --- a/src/Services/Turnstile.php +++ b/src/Services/Turnstile.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Services; -use Throwable; use Illuminate\Support\Facades\Http; +use Throwable; class Turnstile { @@ -28,7 +28,7 @@ public function validate(string $token): bool url: $this->url, data: [ 'response' => $token, - 'secret' => $this->secretKey, + 'secret' => $this->secretKey, ], ); } catch (Throwable) { diff --git a/src/Services/UserProvisioningService.php b/src/Services/UserProvisioningService.php index 4c3062e..384472e 100644 --- a/src/Services/UserProvisioningService.php +++ b/src/Services/UserProvisioningService.php @@ -4,10 +4,10 @@ namespace Simtabi\Laranail\AuthKit\Services; -use Illuminate\Support\Str; +use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Hash; -use Illuminate\Contracts\Auth\Authenticatable; +use Illuminate\Support\Str; use Simtabi\Laranail\AuthKit\Support\UserModelResolver; /** @@ -34,8 +34,8 @@ public function create(array $attributes): Authenticatable /** @var Model&Authenticatable $user */ $user = $model::query()->create([ - 'name' => $attributes['name'], - 'email' => $this->normaliseEmail($attributes['email']), + 'name' => $attributes['name'], + 'email' => $this->normaliseEmail($attributes['email']), 'password' => Hash::make(value: $attributes['password']), ]); diff --git a/src/Services/UserValidationService.php b/src/Services/UserValidationService.php index 2f0fac3..659eaef 100644 --- a/src/Services/UserValidationService.php +++ b/src/Services/UserValidationService.php @@ -26,10 +26,10 @@ public function __construct(private readonly ValidationFactory $validator) {} /** * Validate input, throwing Illuminate\Validation\ValidationException on failure. * - * @param array $input + * @param array $input * @param array> $rules - * @param array $messages - * @return array the validated subset + * @param array $messages + * @return array the validated subset */ public function validate(array $input, array $rules, array $messages = [], ?string $errorBag = null): array { diff --git a/src/Support/IdentityProvider.php b/src/Support/IdentityProvider.php index 6dddcff..732a0e7 100644 --- a/src/Support/IdentityProvider.php +++ b/src/Support/IdentityProvider.php @@ -31,12 +31,12 @@ final readonly class IdentityProvider implements SocialIdentityProviderInterface { /** - * @param string $slug the route value, e.g. 'okta' - * @param string $label human-readable name - * @param bool $assertsEmailVerified whether this provider verifies the address it returns + * @param string $slug the route value, e.g. 'okta' + * @param string $label human-readable name + * @param bool $assertsEmailVerified whether this provider verifies the address it returns * @param (Closure(array): bool)|null $verifiedEmailResolver reads this provider's own claim - * @param string|null $driver Socialite driver key, when it differs from the slug - * @param string|null $driverClass Socialite provider class to register for that key + * @param string|null $driver Socialite driver key, when it differs from the slug + * @param string|null $driverClass Socialite provider class to register for that key */ public function __construct( public string $slug, diff --git a/src/Support/UserModelResolver.php b/src/Support/UserModelResolver.php index bf838b1..bb29934 100644 --- a/src/Support/UserModelResolver.php +++ b/src/Support/UserModelResolver.php @@ -4,9 +4,9 @@ namespace Simtabi\Laranail\AuthKit\Support; -use LogicException; -use Illuminate\Database\Eloquent\Model; use Illuminate\Contracts\Auth\Authenticatable; +use Illuminate\Database\Eloquent\Model; +use LogicException; class UserModelResolver { diff --git a/tests/Feature/AttemptEmailPasswordLoginTest.php b/tests/Feature/AttemptEmailPasswordLoginTest.php index 2b1629d..e7dab13 100644 --- a/tests/Feature/AttemptEmailPasswordLoginTest.php +++ b/tests/Feature/AttemptEmailPasswordLoginTest.php @@ -2,11 +2,11 @@ declare(strict_types=1); -use Illuminate\Support\Str; use Illuminate\Http\Request; -use Workbench\App\Models\User; -use Simtabi\Laranail\AuthKit\Enums\AuthStatus; +use Illuminate\Support\Str; use Simtabi\Laranail\AuthKit\Actions\AttemptEmailPasswordLogin; +use Simtabi\Laranail\AuthKit\Enums\AuthStatus; +use Workbench\App\Models\User; function loginRequest(array $data = [], ?string $ip = null): Request { @@ -24,7 +24,7 @@ function loginRequest(array $data = [], ?string $ip = null): Request $password = Str::random(16); $user = User::factory()->create([ - 'email' => 'ada@example.com', + 'email' => 'ada@example.com', 'password' => bcrypt($password), ]); @@ -42,7 +42,7 @@ function loginRequest(array $data = [], ?string $ip = null): Request it('validates credentials without logging the user into the session', function (): void { $password = Str::random(16); User::factory()->create([ - 'email' => 'ada@example.com', + 'email' => 'ada@example.com', 'password' => bcrypt($password), ]); @@ -59,7 +59,7 @@ function loginRequest(array $data = [], ?string $ip = null): Request $password = Str::random(16); User::factory()->create([ - 'email' => 'ada@example.com', + 'email' => 'ada@example.com', 'password' => bcrypt($password), ]); @@ -77,7 +77,7 @@ function loginRequest(array $data = [], ?string $ip = null): Request config()->set('laranail.authkit.rate_limit.max_attempts', 1); User::factory()->create([ - 'email' => 'ada@example.com', + 'email' => 'ada@example.com', 'password' => bcrypt(Str::random(16)), ]); @@ -94,7 +94,7 @@ function loginRequest(array $data = [], ?string $ip = null): Request config()->set('laranail.authkit.rate_limit.max_attempts', 1); User::factory()->create([ - 'email' => 'ada@example.com', + 'email' => 'ada@example.com', 'password' => bcrypt(Str::random(16)), ]); @@ -118,7 +118,7 @@ function loginRequest(array $data = [], ?string $ip = null): Request config()->set('laranail.authkit.rate_limit.max_attempts', 1); User::factory()->create([ - 'email' => 'ada@example.com', + 'email' => 'ada@example.com', 'password' => bcrypt(Str::random(16)), ]); @@ -143,7 +143,7 @@ function loginRequest(array $data = [], ?string $ip = null): Request $password = Str::random(16); User::factory()->create([ - 'email' => 'ada@example.com', + 'email' => 'ada@example.com', 'password' => bcrypt($password), ]); diff --git a/tests/Feature/BrowserSessionsTest.php b/tests/Feature/BrowserSessionsTest.php index 5046e6e..5827d11 100644 --- a/tests/Feature/BrowserSessionsTest.php +++ b/tests/Feature/BrowserSessionsTest.php @@ -3,19 +3,19 @@ declare(strict_types=1); use Illuminate\Support\Facades\DB; -use Workbench\App\Models\User; -use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; use Simtabi\Laranail\AuthKit\Contracts\ListBrowserSessionsInterface; use Simtabi\Laranail\AuthKit\Contracts\LogoutOtherBrowserSessionsInterface; +use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; +use Workbench\App\Models\User; function seedSession(string $id, ?int $userId, string $agent = 'Other/1.0'): void { DB::table('sessions')->insert([ - 'id' => $id, - 'user_id' => $userId, - 'ip_address' => '10.0.0.1', - 'user_agent' => $agent, - 'payload' => '', + 'id' => $id, + 'user_id' => $userId, + 'ip_address' => '10.0.0.1', + 'user_agent' => $agent, + 'payload' => '', 'last_activity' => time(), ]); } diff --git a/tests/Feature/CheckEmailExistsTest.php b/tests/Feature/CheckEmailExistsTest.php index 1768cc5..ea3a563 100644 --- a/tests/Feature/CheckEmailExistsTest.php +++ b/tests/Feature/CheckEmailExistsTest.php @@ -3,8 +3,8 @@ declare(strict_types=1); use Illuminate\Http\Request; -use Workbench\App\Models\User; use Simtabi\Laranail\AuthKit\Actions\CheckEmailExists; +use Workbench\App\Models\User; function checkEmailRequest(string $email): Request { diff --git a/tests/Feature/CreateNewUserTest.php b/tests/Feature/CreateNewUserTest.php index 40137a0..a8fe5e9 100644 --- a/tests/Feature/CreateNewUserTest.php +++ b/tests/Feature/CreateNewUserTest.php @@ -2,17 +2,17 @@ declare(strict_types=1); -use Workbench\App\Models\User; -use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Validator; +use Illuminate\Validation\Rule; use Illuminate\Validation\Rules\Password; use Simtabi\Laranail\AuthKit\Actions\CreateNewUser; +use Workbench\App\Models\User; it(description: 'creates a user with a hashed password', closure: function (): void { $user = app(abstract: CreateNewUser::class)->create(input: [ - 'name' => 'Ada Lovelace', - 'email' => 'ADA@EXAMPLE.COM', - 'password' => 'password', + 'name' => 'Ada Lovelace', + 'email' => 'ADA@EXAMPLE.COM', + 'password' => 'password', 'password_confirmation' => 'password', ]); @@ -24,9 +24,9 @@ User::factory()->create(attributes: ['email' => 'ada@example.com']); $validator = Validator::make(data: [ - 'name' => 'Ada Lovelace', - 'email' => 'ada@example.com', - 'password' => 'password', + 'name' => 'Ada Lovelace', + 'email' => 'ada@example.com', + 'password' => 'password', 'password_confirmation' => 'password', ], rules: [ 'email' => ['required', 'string', 'email', 'max:255', Rule::unique(table: User::class)], @@ -38,9 +38,9 @@ it(description: 'fails validation when password confirmation does not match', closure: function (): void { $validator = Validator::make(data: [ - 'name' => 'Ada Lovelace', - 'email' => 'ada@example.com', - 'password' => 'password', + 'name' => 'Ada Lovelace', + 'email' => 'ada@example.com', + 'password' => 'password', 'password_confirmation' => 'different', ], rules: [ 'password' => ['required', 'string', Password::default(), 'confirmed'], @@ -52,9 +52,9 @@ it(description: 'fails validation when name is missing', closure: function (): void { $validator = Validator::make(data: [ - 'name' => '', - 'email' => 'ada@example.com', - 'password' => 'password', + 'name' => '', + 'email' => 'ada@example.com', + 'password' => 'password', 'password_confirmation' => 'password', ], rules: [ 'name' => ['required', 'string', 'max:255'], @@ -66,9 +66,9 @@ it(description: 'fails validation when email is invalid', closure: function (): void { $validator = Validator::make(data: [ - 'name' => 'Ada Lovelace', - 'email' => 'not-an-email', - 'password' => 'password', + 'name' => 'Ada Lovelace', + 'email' => 'not-an-email', + 'password' => 'password', 'password_confirmation' => 'password', ], rules: [ 'email' => ['required', 'string', 'email', 'max:255'], @@ -80,7 +80,7 @@ it(description: 'fails validation when password is missing', closure: function (): void { $validator = Validator::make(data: [ - 'name' => 'Ada Lovelace', + 'name' => 'Ada Lovelace', 'email' => 'ada@example.com', ], rules: [ 'password' => ['required', 'string', Password::default(), 'confirmed'], @@ -95,9 +95,9 @@ config()->set(key: 'laranail.authkit.guard', value: 'web'); $user = app(abstract: CreateNewUser::class)->create(input: [ - 'name' => 'Ada Lovelace', - 'email' => 'ada@example.com', - 'password' => 'password', + 'name' => 'Ada Lovelace', + 'email' => 'ada@example.com', + 'password' => 'password', 'password_confirmation' => 'password', ]); @@ -108,9 +108,9 @@ config()->set(key: 'laranail.authkit.user_model', value: User::class); $user = app(abstract: CreateNewUser::class)->create(input: [ - 'name' => 'Ada Lovelace', - 'email' => 'ada2@example.com', - 'password' => 'password', + 'name' => 'Ada Lovelace', + 'email' => 'ada2@example.com', + 'password' => 'password', 'password_confirmation' => 'password', ]); diff --git a/tests/Feature/FindUserByEmailTest.php b/tests/Feature/FindUserByEmailTest.php index 1f1a6ae..d261ae7 100644 --- a/tests/Feature/FindUserByEmailTest.php +++ b/tests/Feature/FindUserByEmailTest.php @@ -2,8 +2,8 @@ declare(strict_types=1); -use Workbench\App\Models\User; use Simtabi\Laranail\AuthKit\Actions\FindUserByEmail; +use Workbench\App\Models\User; it(description: 'returns user when the email exists', closure: function (): void { $user = User::factory()->create([ diff --git a/tests/Feature/IdentityProviderRegistryTest.php b/tests/Feature/IdentityProviderRegistryTest.php index 346d41b..33c1a36 100644 --- a/tests/Feature/IdentityProviderRegistryTest.php +++ b/tests/Feature/IdentityProviderRegistryTest.php @@ -2,8 +2,8 @@ declare(strict_types=1); -use Simtabi\Laranail\AuthKit\Support\IdentityProvider; use Simtabi\Laranail\AuthKit\Contracts\IdentityProviderRegistryInterface; +use Simtabi\Laranail\AuthKit\Support\IdentityProvider; it('lets a sub-package contribute a provider without editing this package', function (): void { $registry = app(IdentityProviderRegistryInterface::class); diff --git a/tests/Feature/IssueTokenForUserTest.php b/tests/Feature/IssueTokenForUserTest.php index 8588a08..2bce48f 100644 --- a/tests/Feature/IssueTokenForUserTest.php +++ b/tests/Feature/IssueTokenForUserTest.php @@ -2,9 +2,9 @@ declare(strict_types=1); -use Workbench\App\Models\User; -use Simtabi\Laranail\AuthKit\Support\TokenResult; use Simtabi\Laranail\AuthKit\Actions\IssueTokenForUser; +use Simtabi\Laranail\AuthKit\Support\TokenResult; +use Workbench\App\Models\User; it('creates a sanctum token and returns a token result', function (): void { $user = User::factory()->create(); diff --git a/tests/Feature/LoginUserTest.php b/tests/Feature/LoginUserTest.php index 6ed8942..94c19bf 100644 --- a/tests/Feature/LoginUserTest.php +++ b/tests/Feature/LoginUserTest.php @@ -2,8 +2,8 @@ declare(strict_types=1); -use Workbench\App\Models\User; use Simtabi\Laranail\AuthKit\Actions\LoginUser; +use Workbench\App\Models\User; it(description: 'logs the user into the guard', closure: function () { $user = User::factory()->create(); diff --git a/tests/Feature/LogoutUserTest.php b/tests/Feature/LogoutUserTest.php index c92fdaf..9b01575 100644 --- a/tests/Feature/LogoutUserTest.php +++ b/tests/Feature/LogoutUserTest.php @@ -2,9 +2,9 @@ declare(strict_types=1); -use Workbench\App\Models\User; use Simtabi\Laranail\AuthKit\Actions\LoginUser; use Simtabi\Laranail\AuthKit\Actions\LogoutUser; +use Workbench\App\Models\User; it(description: 'logs the user out of the guard', closure: function () { $user = User::factory()->create(); diff --git a/tests/Feature/PasskeyTest.php b/tests/Feature/PasskeyTest.php index 3a90593..c11f5b9 100644 --- a/tests/Feature/PasskeyTest.php +++ b/tests/Feature/PasskeyTest.php @@ -2,17 +2,17 @@ declare(strict_types=1); -use Laravel\Fortify\Features; -use Laravel\Passkeys\Passkeys; -use Workbench\App\Models\User; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; use Laravel\Fortify\Contracts\PasskeyUser; -use Simtabi\Laranail\AuthKit\Models\Passkey; -use Laravel\Passkeys\Http\Controllers\PasskeyLoginController; -use Simtabi\Laranail\AuthKit\Providers\AuthKitServiceProvider; +use Laravel\Fortify\Features; use Laravel\Passkeys\Http\Controllers\PasskeyConfirmationController; +use Laravel\Passkeys\Http\Controllers\PasskeyLoginController; use Laravel\Passkeys\Http\Controllers\PasskeyRegistrationController; +use Laravel\Passkeys\Passkeys; +use Simtabi\Laranail\AuthKit\Models\Passkey; +use Simtabi\Laranail\AuthKit\Providers\AuthKitServiceProvider; +use Workbench\App\Models\User; it('enables Fortify passkeys and registers the canonical routes', function (): void { expect(config('fortify.features'))->toContain(Features::passkeys()) @@ -38,16 +38,16 @@ ); expect(array_map('realpath', array_keys($paths))) - ->toContain(realpath(dirname(__DIR__, 2) . '/database/migrations/passkeys')); + ->toContain(realpath(dirname(__DIR__, 2).'/database/migrations/passkeys')); }); it('delegates passkey routes to the laravel passkeys controllers', function (): void { expect(Route::getRoutes()->getByName('passkey.login')->getActionName()) - ->toBe(PasskeyLoginController::class . '@store') + ->toBe(PasskeyLoginController::class.'@store') ->and(Route::getRoutes()->getByName('passkey.confirm')->getActionName()) - ->toBe(PasskeyConfirmationController::class . '@store') + ->toBe(PasskeyConfirmationController::class.'@store') ->and(Route::getRoutes()->getByName('passkey.store')->getActionName()) - ->toBe(PasskeyRegistrationController::class . '@store'); + ->toBe(PasskeyRegistrationController::class.'@store'); }); it('applies Fortify passkey authentication and confirmation middleware', function (): void { @@ -67,9 +67,9 @@ ->and($user->hasPasskeysEnabled())->toBeFalse(); $passkey = $user->passkeys()->create([ - 'name' => 'MacBook Pro', + 'name' => 'MacBook Pro', 'credential_id' => 'credential-id', - 'credential' => ['public-key' => 'credential'], + 'credential' => ['public-key' => 'credential'], ]); expect($user->fresh()->passkeys)->toHaveCount(1) diff --git a/tests/Feature/PasswordResetLinkControllerTest.php b/tests/Feature/PasswordResetLinkControllerTest.php index 0c388ad..2615c82 100644 --- a/tests/Feature/PasswordResetLinkControllerTest.php +++ b/tests/Feature/PasswordResetLinkControllerTest.php @@ -3,9 +3,9 @@ declare(strict_types=1); use Illuminate\Http\Request; -use Workbench\App\Models\User; use Illuminate\Support\Facades\Notification; use Simtabi\Laranail\AuthKit\Http\Controllers\AbstractPasswordResetLinkController; +use Workbench\App\Models\User; it('returns the same response for known and unknown password reset email addresses', function (): void { Notification::fake(); diff --git a/tests/Feature/ProviderLayoutTest.php b/tests/Feature/ProviderLayoutTest.php index d19210b..597c67b 100644 --- a/tests/Feature/ProviderLayoutTest.php +++ b/tests/Feature/ProviderLayoutTest.php @@ -36,7 +36,7 @@ function providerFiles(string $src): array it('keeps every service provider in a Providers directory', function (): void { $offenders = []; - foreach (providerFiles(__DIR__ . '/../../src') as $file) { + foreach (providerFiles(__DIR__.'/../../src') as $file) { if (basename($file->getPath()) !== 'Providers') { $offenders[] = $file->getFilename(); } @@ -48,7 +48,7 @@ function providerFiles(string $src): array it('ends every provider namespace in Providers', function (): void { $checked = 0; - foreach (providerFiles(__DIR__ . '/../../src') as $file) { + foreach (providerFiles(__DIR__.'/../../src') as $file) { // The directory and the namespace are separate facts -- PSR-4 makes them agree only if the // file declares the namespace its path implies, and a bad move can leave them disagreeing. $source = file_get_contents($file->getPathname()); diff --git a/tests/Feature/ResetUserPasswordTest.php b/tests/Feature/ResetUserPasswordTest.php index f4e6415..b6545d4 100644 --- a/tests/Feature/ResetUserPasswordTest.php +++ b/tests/Feature/ResetUserPasswordTest.php @@ -2,20 +2,21 @@ declare(strict_types=1); -use Workbench\App\Models\User; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Password; use Illuminate\Validation\ValidationException; use Simtabi\Laranail\AuthKit\Actions\ResetUserPassword; +use Workbench\App\Models\User; it('hashes and persists the new password', function (): void { $user = User::factory()->create([ - 'password' => Hash::make('old-password'), + 'password' => Hash::make('old-password'), 'remember_token' => 'stolen-remember-token', ]); $user->createToken('stolen-token'); app(ResetUserPassword::class)->reset($user, [ - 'password' => 'new-secret', + 'password' => 'new-secret', 'password_confirmation' => 'new-secret', ]); @@ -30,7 +31,7 @@ try { app(ResetUserPassword::class)->reset($user, [ - 'password' => 'new-secret', + 'password' => 'new-secret', 'password_confirmation' => 'different', ]); } catch (ValidationException $e) { @@ -51,23 +52,23 @@ it('integrates with laravel password broker for a full reset flow', function (): void { $user = User::factory()->create(['password' => Hash::make('old-password')]); - $token = Illuminate\Support\Facades\Password::broker()->createToken($user); + $token = Password::broker()->createToken($user); - $status = Illuminate\Support\Facades\Password::broker()->reset( + $status = Password::broker()->reset( [ - 'email' => $user->email, - 'password' => 'broker-secret', + 'email' => $user->email, + 'password' => 'broker-secret', 'password_confirmation' => 'broker-secret', - 'token' => $token, + 'token' => $token, ], function ($user, $password) { app(ResetUserPassword::class)->reset($user, [ - 'password' => $password, + 'password' => $password, 'password_confirmation' => $password, ]); }, ); - expect($status)->toBe(Illuminate\Support\Facades\Password::PASSWORD_RESET) + expect($status)->toBe(Password::PASSWORD_RESET) ->and(Hash::check('broker-secret', $user->fresh()->password))->toBeTrue(); }); diff --git a/tests/Feature/TurnstileTest.php b/tests/Feature/TurnstileTest.php index e903432..6cba7f0 100644 --- a/tests/Feature/TurnstileTest.php +++ b/tests/Feature/TurnstileTest.php @@ -6,8 +6,8 @@ use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Validator; -use Simtabi\Laranail\AuthKit\Support\AuthKit; use Simtabi\Laranail\AuthKit\Rules\TurnstileRule; +use Simtabi\Laranail\AuthKit\Support\AuthKit; function useTurnstileRoute(string $middleware): void { diff --git a/tests/Feature/UpdateUserPasswordTest.php b/tests/Feature/UpdateUserPasswordTest.php index 311974e..3ed2107 100644 --- a/tests/Feature/UpdateUserPasswordTest.php +++ b/tests/Feature/UpdateUserPasswordTest.php @@ -2,11 +2,11 @@ declare(strict_types=1); -use Workbench\App\Models\User; use Illuminate\Support\Facades\Hash; use Illuminate\Validation\ValidationException; use Laravel\Fortify\Contracts\UpdatesUserPasswords; use Simtabi\Laranail\AuthKit\Actions\UpdateUserPassword; +use Workbench\App\Models\User; function expectPasswordUpdateValidationFailure(array $input, string $field, User $user): void { @@ -27,7 +27,7 @@ function expectPasswordUpdateValidationFailure(array $input, string $field, User it('updates the password when the current password is valid', function (): void { $user = User::factory()->create([ - 'password' => Hash::make('old-password'), + 'password' => Hash::make('old-password'), 'remember_token' => 'stolen-remember-token', ]); $user->createToken('stolen-token'); @@ -35,8 +35,8 @@ function expectPasswordUpdateValidationFailure(array $input, string $field, User $this->actingAs($user); app(UpdateUserPassword::class)->update($user, [ - 'current_password' => 'old-password', - 'password' => 'new-password', + 'current_password' => 'old-password', + 'password' => 'new-password', 'password_confirmation' => 'new-password', ]); @@ -53,8 +53,8 @@ function expectPasswordUpdateValidationFailure(array $input, string $field, User expectPasswordUpdateValidationFailure( input: [ - 'current_password' => 'invalid-password', - 'password' => 'new-password', + 'current_password' => 'invalid-password', + 'password' => 'new-password', 'password_confirmation' => 'new-password', ], field: 'current_password', @@ -69,8 +69,8 @@ function expectPasswordUpdateValidationFailure(array $input, string $field, User expectPasswordUpdateValidationFailure( input: [ - 'current_password' => 'old-password', - 'password' => 'new-password', + 'current_password' => 'old-password', + 'password' => 'new-password', 'password_confirmation' => 'different-password', ], field: 'password', diff --git a/tests/Feature/UpdateUserProfileInformationTest.php b/tests/Feature/UpdateUserProfileInformationTest.php index 0736146..19c8805 100644 --- a/tests/Feature/UpdateUserProfileInformationTest.php +++ b/tests/Feature/UpdateUserProfileInformationTest.php @@ -2,11 +2,11 @@ declare(strict_types=1); -use Workbench\App\Models\User; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Validation\ValidationException; use Laravel\Fortify\Contracts\UpdatesUserProfileInformation; use Simtabi\Laranail\AuthKit\Actions\UpdateUserProfileInformation; +use Workbench\App\Models\User; class ProfileVerifiableUser extends User implements MustVerifyEmail { @@ -60,17 +60,17 @@ function expectProfileUpdateValidationFailure(array $input, string $field, User it('updates the user profile information', function (): void { $user = User::factory()->create([ - 'name' => 'Ada Lovelace', + 'name' => 'Ada Lovelace', 'email' => 'ada@example.com', ]); app(UpdateUserProfileInformation::class)->update($user, [ - 'name' => 'Grace Hopper', + 'name' => 'Grace Hopper', 'email' => 'grace@example.com', ]); expect($user->fresh()->only(['name', 'email']))->toBe([ - 'name' => 'Grace Hopper', + 'name' => 'Grace Hopper', 'email' => 'grace@example.com', ]); }); @@ -80,7 +80,7 @@ function expectProfileUpdateValidationFailure(array $input, string $field, User expectProfileUpdateValidationFailure( input: [ - 'name' => '', + 'name' => '', 'email' => 'not-an-email', ], field: 'name', @@ -94,7 +94,7 @@ function expectProfileUpdateValidationFailure(array $input, string $field, User expectProfileUpdateValidationFailure( input: [ - 'name' => 'Updated User', + 'name' => 'Updated User', 'email' => $otherUser->email, ], field: 'email', @@ -104,15 +104,15 @@ function expectProfileUpdateValidationFailure(array $input, string $field, User it('resets email verification when a verified user changes their email', function (): void { $user = new ProfileVerifiableUser([ - 'name' => 'Ada Lovelace', - 'email' => 'ada@example.com', - 'password' => 'password', + 'name' => 'Ada Lovelace', + 'email' => 'ada@example.com', + 'password' => 'password', 'email_verified_at' => now(), ]); $user->save(); app(UpdateUserProfileInformation::class)->update($user, [ - 'name' => 'Ada Lovelace', + 'name' => 'Ada Lovelace', 'email' => 'ada@lovelace.example', ]); diff --git a/tests/Pest.php b/tests/Pest.php index c03b0fd..000d715 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -use Simtabi\Laranail\AuthKit\Tests\TestCase; use Illuminate\Foundation\Testing\LazilyRefreshDatabase; +use Simtabi\Laranail\AuthKit\Tests\TestCase; uses(TestCase::class, LazilyRefreshDatabase::class)->in('Feature', 'Unit'); diff --git a/tests/TestCase.php b/tests/TestCase.php index 0a23ae3..bdfff00 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -4,16 +4,19 @@ namespace Simtabi\Laranail\AuthKit\Tests; +use Laravel\Fortify\FortifyServiceProvider; +use Laravel\Sanctum\SanctumServiceProvider; use Orchestra\Testbench\TestCase as BaseTestCase; use Simtabi\Laranail\AuthKit\Providers\AuthKitServiceProvider; +use Workbench\App\Models\User; abstract class TestCase extends BaseTestCase { protected function getPackageProviders($app): array { return [ - \Laravel\Fortify\FortifyServiceProvider::class, - \Laravel\Sanctum\SanctumServiceProvider::class, + FortifyServiceProvider::class, + SanctumServiceProvider::class, AuthKitServiceProvider::class, ]; } @@ -23,20 +26,20 @@ protected function defineEnvironment($app): void $app['config']->set('app.key', 'base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='); $app['config']->set('database.default', 'testing'); $app['config']->set('database.connections.testing', [ - 'driver' => 'sqlite', - 'database' => ':memory:', - 'prefix' => '', + 'driver' => 'sqlite', + 'database' => ':memory:', + 'prefix' => '', 'foreign_key_constraints' => true, ]); - $app['config']->set('auth.providers.users.model', \Workbench\App\Models\User::class); + $app['config']->set('auth.providers.users.model', User::class); } protected function defineDatabaseMigrations(): void { - $this->loadMigrationsFrom(dirname(__DIR__) . '/vendor/orchestra/testbench-core/laravel/migrations'); - $this->loadMigrationsFrom(dirname(__DIR__) . '/vendor/laravel/fortify/database/migrations'); - $this->loadMigrationsFrom(dirname(__DIR__) . '/database/migrations/passkeys'); - $this->loadMigrationsFrom(dirname(__DIR__) . '/vendor/laravel/sanctum/database/migrations'); + $this->loadMigrationsFrom(dirname(__DIR__).'/vendor/orchestra/testbench-core/laravel/migrations'); + $this->loadMigrationsFrom(dirname(__DIR__).'/vendor/laravel/fortify/database/migrations'); + $this->loadMigrationsFrom(dirname(__DIR__).'/database/migrations/passkeys'); + $this->loadMigrationsFrom(dirname(__DIR__).'/vendor/laravel/sanctum/database/migrations'); } } diff --git a/workbench/app/Models/User.php b/workbench/app/Models/User.php index 3898767..3ecd6b9 100644 --- a/workbench/app/Models/User.php +++ b/workbench/app/Models/User.php @@ -4,13 +4,13 @@ namespace Workbench\App\Models; -use Laravel\Sanctum\HasApiTokens; +use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Fortify\Contracts\PasskeyUser; -use Workbench\Database\Factories\UserFactory; +use Laravel\Sanctum\HasApiTokens; use Simtabi\Laranail\AuthKit\PasskeyAuthenticatable; -use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Foundation\Auth\User as Authenticatable; +use Workbench\Database\Factories\UserFactory; class User extends Authenticatable implements PasskeyUser { @@ -39,7 +39,7 @@ protected function casts(): array { return [ 'email_verified_at' => 'datetime', - 'password' => 'hashed', + 'password' => 'hashed', ]; } } diff --git a/workbench/database/factories/UserFactory.php b/workbench/database/factories/UserFactory.php index 07ca8f3..a7c50c5 100644 --- a/workbench/database/factories/UserFactory.php +++ b/workbench/database/factories/UserFactory.php @@ -4,10 +4,10 @@ namespace Workbench\Database\Factories; +use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; use Workbench\App\Models\User; -use Illuminate\Support\Facades\Hash; -use Illuminate\Database\Eloquent\Factories\Factory; class UserFactory extends Factory { @@ -16,11 +16,11 @@ class UserFactory extends Factory public function definition(): array { return [ - 'name' => fake()->name(), - 'email' => fake()->unique()->safeEmail(), + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), 'email_verified_at' => now(), - 'password' => Hash::make('password'), - 'remember_token' => Str::random(10), + 'password' => Hash::make('password'), + 'remember_token' => Str::random(10), ]; } }