diff --git a/config/laranail/authkit.php b/config/laranail/authkit.php index de90f5c..2ab109e 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' => [ @@ -75,7 +75,7 @@ 'api' => [ 'enabled' => (bool) env(key: 'AUTHKIT_API_ENABLED', default: true), - 'prefix' => env(key: 'AUTHKIT_API_PREFIX', default: 'api/auth'), + 'prefix' => env(key: 'AUTHKIT_API_PREFIX', default: 'api/auth'), /* * Route names are a flat, global registry: a second package -- or the host application @@ -86,7 +86,7 @@ * Set this to '' to fall back to bare names, if an application already depends on them. */ 'name_prefix' => env(key: 'AUTHKIT_API_ROUTE_NAME_PREFIX', default: 'laranail-auth-api.'), - 'middleware' => ['api', 'throttle:60,1'], + 'middleware' => ['api', 'throttle:60,1'], ], ]; 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 52dbe8e..eaf1cf7 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\Database\Migrations\Migration; -use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; return new class extends Migration { diff --git a/rector-migrate-social.php b/rector-migrate-social.php index d750f34..b244824 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 8b87285..5df3b3e 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\Http\Controllers\Api; use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Simtabi\Laranail\AuthKit\Http\Controllers\Api; /* |-------------------------------------------------------------------------- diff --git a/src/Actions/AttemptEmailPasswordLogin.php b/src/Actions/AttemptEmailPasswordLogin.php index d084175..9ef5d59 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 8a388ac..b8fe3bc 100644 --- a/src/Actions/CheckEmailExists.php +++ b/src/Actions/CheckEmailExists.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Contracts\Auth\Factory as AuthFactory; use Illuminate\Http\Request; +use Illuminate\Contracts\Auth\Factory as AuthFactory; use Simtabi\Laranail\AuthKit\Contracts\CheckEmailExistsInterface; class CheckEmailExists implements CheckEmailExistsInterface diff --git a/src/Actions/CreateNewUser.php b/src/Actions/CreateNewUser.php index 61344ab..8700349 100644 --- a/src/Actions/CreateNewUser.php +++ b/src/Actions/CreateNewUser.php @@ -4,13 +4,13 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Validation\Rule; -use Laravel\Fortify\Contracts\CreatesNewUsers as FortifyCreateNewUser; +use Illuminate\Contracts\Auth\Authenticatable; +use Simtabi\Laranail\AuthKit\Support\UserModelResolver; 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; +use Simtabi\Laranail\AuthKit\Services\UserProvisioningService; +use Laravel\Fortify\Contracts\CreatesNewUsers as FortifyCreateNewUser; class CreateNewUser implements FortifyCreateNewUser { @@ -33,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 ebccf36..33d3759 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\Contracts\IssueTokenForUserInterface; use Simtabi\Laranail\AuthKit\Support\TokenResult; +use Simtabi\Laranail\AuthKit\Contracts\IssueTokenForUserInterface; class IssueTokenForUser implements IssueTokenForUserInterface { @@ -24,8 +24,8 @@ class IssueTokenForUser implements IssueTokenForUserInterface * never stops working. Sanctum's own `sanctum.expiration` is null by default, so nothing * 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 array|null $abilities null takes the configured default scope + * @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 5e80aca..2cc783d 100644 --- a/src/Actions/ListBrowserSessions.php +++ b/src/Actions/ListBrowserSessions.php @@ -4,10 +4,10 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Support\Collection; -use Simtabi\Laranail\AuthKit\Contracts\ListBrowserSessionsInterface; +use Illuminate\Contracts\Auth\Authenticatable; use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; +use Simtabi\Laranail\AuthKit\Contracts\ListBrowserSessionsInterface; class ListBrowserSessions implements ListBrowserSessionsInterface { diff --git a/src/Actions/LoginUser.php b/src/Actions/LoginUser.php index 9e56a28..c9bc0c6 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 4ef006f..2a40943 100644 --- a/src/Actions/LogoutOtherBrowserSessions.php +++ b/src/Actions/LogoutOtherBrowserSessions.php @@ -4,10 +4,10 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Support\Facades\Auth; -use Simtabi\Laranail\AuthKit\Contracts\LogoutOtherBrowserSessionsInterface; +use Illuminate\Contracts\Auth\Authenticatable; use Simtabi\Laranail\AuthKit\Services\BrowserSessionService; +use Simtabi\Laranail\AuthKit\Contracts\LogoutOtherBrowserSessionsInterface; class LogoutOtherBrowserSessions implements LogoutOtherBrowserSessionsInterface { diff --git a/src/Actions/LogoutUser.php b/src/Actions/LogoutUser.php index 7c5c0d7..b5dcb64 100644 --- a/src/Actions/LogoutUser.php +++ b/src/Actions/LogoutUser.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Contracts\Auth\Factory as AuthFactory; use Illuminate\Contracts\Session\Session; +use Illuminate\Contracts\Auth\Factory as AuthFactory; use Simtabi\Laranail\AuthKit\Contracts\LogoutUserInterface; class LogoutUser implements LogoutUserInterface diff --git a/src/Actions/ResetUserPassword.php b/src/Actions/ResetUserPassword.php index e870e9f..dc5dbb8 100644 --- a/src/Actions/ResetUserPassword.php +++ b/src/Actions/ResetUserPassword.php @@ -5,9 +5,9 @@ namespace Simtabi\Laranail\AuthKit\Actions; use Illuminate\Support\Facades\Hash; -use Laravel\Fortify\Contracts\ResetsUserPasswords as FortifyResetUserPassword; -use Simtabi\Laranail\AuthKit\Http\Requests\ResetPasswordRequest; use Simtabi\Laranail\AuthKit\Services\UserValidationService; +use Simtabi\Laranail\AuthKit\Http\Requests\ResetPasswordRequest; +use Laravel\Fortify\Contracts\ResetsUserPasswords as FortifyResetUserPassword; class ResetUserPassword implements FortifyResetUserPassword { @@ -19,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 03edf5c..efc6ac1 100644 --- a/src/Actions/UpdateUserPassword.php +++ b/src/Actions/UpdateUserPassword.php @@ -6,11 +6,11 @@ use Illuminate\Support\Facades\Hash; use Illuminate\Validation\Rules\Password; +use Simtabi\Laranail\AuthKit\Support\AuthKit; use Laravel\Fortify\Contracts\UpdatesUserPasswords; -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; +use Simtabi\Laranail\AuthKit\Http\Requests\UpdatePasswordRequest; 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 d79166b..e38d577 100644 --- a/src/Actions/UpdateUserProfileInformation.php +++ b/src/Actions/UpdateUserProfileInformation.php @@ -4,11 +4,11 @@ namespace Simtabi\Laranail\AuthKit\Actions; -use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Support\Str; +use Illuminate\Contracts\Auth\MustVerifyEmail; use Laravel\Fortify\Contracts\UpdatesUserProfileInformation; -use Simtabi\Laranail\AuthKit\Http\Requests\UpdateProfileInformationRequest; use Simtabi\Laranail\AuthKit\Services\UserValidationService; +use Simtabi\Laranail\AuthKit\Http\Requests\UpdateProfileInformationRequest; class UpdateUserProfileInformation implements UpdatesUserProfileInformation { @@ -36,7 +36,7 @@ public function update($user, array $input): void } $user->forceFill(attributes: [ - 'name' => $input['name'], + 'name' => $input['name'], 'email' => $input['email'], ])->save(); } @@ -44,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 a6d25e2..58bbad1 100644 --- a/src/Contracts/IssueTokenForUserInterface.php +++ b/src/Contracts/IssueTokenForUserInterface.php @@ -12,8 +12,8 @@ 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 array|null $abilities null takes the configured default scope + * @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 d28eb20..356a600 100644 --- a/src/Contracts/ListBrowserSessionsInterface.php +++ b/src/Contracts/ListBrowserSessionsInterface.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Contracts; -use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Support\Collection; +use Illuminate\Contracts\Auth\Authenticatable; interface ListBrowserSessionsInterface { diff --git a/src/Contracts/SocialIdentityProviderInterface.php b/src/Contracts/SocialIdentityProviderInterface.php index 5996263..6da5cc5 100644 --- a/src/Contracts/SocialIdentityProviderInterface.php +++ b/src/Contracts/SocialIdentityProviderInterface.php @@ -38,7 +38,7 @@ public function driver(): string; * existing local account, so a provider that does not genuinely verify must answer false * whatever the payload claims. * - * @param array $rawUser + * @param array $rawUser */ public function hasVerifiedEmail(array $rawUser): bool; } diff --git a/src/Http/Controllers/AbstractAttemptEmailPasswordLoginController.php b/src/Http/Controllers/AbstractAttemptEmailPasswordLoginController.php index 2306371..714730c 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\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\Enums\AuthStatus; use Simtabi\Laranail\AuthKit\Support\AuthResult; +use Simtabi\Laranail\AuthKit\Contracts\LoginUserInterface; +use Simtabi\Laranail\AuthKit\Contracts\AttemptEmailPasswordLoginInterface; +use Simtabi\Laranail\AuthKit\Http\Requests\AttemptEmailPasswordLoginRequest; 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 703ed5d..5e9af9a 100644 --- a/src/Http/Controllers/AbstractAuthController.php +++ b/src/Http/Controllers/AbstractAuthController.php @@ -18,7 +18,7 @@ protected function jsonResponse(string $status, mixed $data = [], int $code = 20 { 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 51075e4..27f0171 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\Contracts\LogoutUserInterface; use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Simtabi\Laranail\AuthKit\Contracts\LogoutUserInterface; abstract class AbstractLogoutController extends AbstractAuthController { diff --git a/src/Http/Controllers/AbstractNewPasswordController.php b/src/Http/Controllers/AbstractNewPasswordController.php index 1bda47b..fa1e5e8 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\Contracts\Auth\PasswordBroker; +use Illuminate\Support\Str; use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; -use Illuminate\Support\Str; -use Laravel\Fortify\Contracts\ResetsUserPasswords; +use Illuminate\Contracts\Auth\PasswordBroker; use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Laravel\Fortify\Contracts\ResetsUserPasswords; 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 094fa21..78a13c7 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\Contracts\Auth\PasswordBroker; +use Illuminate\Support\Str; use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; -use Illuminate\Support\Str; +use Illuminate\Contracts\Auth\PasswordBroker; 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 00868c2..3f780c7 100644 --- a/src/Http/Controllers/AbstractRegisterController.php +++ b/src/Http/Controllers/AbstractRegisterController.php @@ -4,15 +4,15 @@ namespace Simtabi\Laranail\AuthKit\Http\Controllers; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Route; use Illuminate\Auth\Events\Registered; +use Simtabi\Laranail\AuthKit\Support\AuthKit; use Illuminate\Contracts\Auth\Authenticatable; 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; +use Laravel\Fortify\Contracts\CreatesNewUsers as FortifyCreateNewUser; abstract class AbstractRegisterController extends AbstractAuthController { diff --git a/src/Http/Controllers/AbstractVerifyEmailController.php b/src/Http/Controllers/AbstractVerifyEmailController.php index b6e2adc..3cc4ba0 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 Laravel\Fortify\Http\Requests\VerifyEmailRequest; use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Laravel\Fortify\Http\Requests\VerifyEmailRequest; abstract class AbstractVerifyEmailController extends AbstractAuthController { diff --git a/src/Http/Controllers/Api/CheckEmailExistsController.php b/src/Http/Controllers/Api/CheckEmailExistsController.php index 1b5f19e..ae45f9f 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\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Http\JsonResponse; 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 4284fcb..35bfe8c 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\JsonResponse; use Illuminate\Http\Request; -use Simtabi\Laranail\AuthKit\Contracts\AttemptEmailPasswordLoginInterface; -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 Illuminate\Http\JsonResponse; 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\IssueTokenForUserInterface; +use Simtabi\Laranail\AuthKit\Contracts\AttemptEmailPasswordLoginInterface; +use Simtabi\Laranail\AuthKit\Http\Requests\AttemptEmailPasswordLoginRequest; +use Simtabi\Laranail\AuthKit\Http\Controllers\AbstractAttemptEmailPasswordLoginController; 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 14ab527..fabe1d2 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\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Http\JsonResponse; +use Simtabi\Laranail\AuthKit\Support\AuthKit; 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 36781de..5ac549a 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 Simtabi\Laranail\AuthKit\Support\AuthKit; use Illuminate\Contracts\Auth\Authenticatable; -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\Contracts\IssueTokenForUserInterface; +use Laravel\Fortify\Contracts\CreatesNewUsers as FortifyCreateNewUser; 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 866eaea..84598ac 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 da18334..47a6f42 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; @@ -23,21 +23,21 @@ */ class RegisterRequest extends FormRequest { - /** @return array> */ - public function rules(): array - { - return self::rulesFor(); - } - /** @return 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(), ]); } + + /** @return array> */ + public function rules(): array + { + return self::rulesFor(); + } } diff --git a/src/Http/Requests/ResetPasswordRequest.php b/src/Http/Requests/ResetPasswordRequest.php index afa9bda..57c8290 100644 --- a/src/Http/Requests/ResetPasswordRequest.php +++ b/src/Http/Requests/ResetPasswordRequest.php @@ -4,17 +4,11 @@ namespace Simtabi\Laranail\AuthKit\Http\Requests; -use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rules\Password; +use Illuminate\Foundation\Http\FormRequest; class ResetPasswordRequest extends FormRequest { - /** @return array> */ - public function rules(): array - { - return self::rulesFor(); - } - /** @return array> */ public static function rulesFor(): array { @@ -22,4 +16,10 @@ public static function rulesFor(): array 'password' => ['required', 'string', Password::default(), 'confirmed'], ]; } + + /** @return array> */ + public function rules(): array + { + return self::rulesFor(); + } } diff --git a/src/Http/Requests/UpdatePasswordRequest.php b/src/Http/Requests/UpdatePasswordRequest.php index e3de4c5..385a4b8 100644 --- a/src/Http/Requests/UpdatePasswordRequest.php +++ b/src/Http/Requests/UpdatePasswordRequest.php @@ -4,33 +4,21 @@ namespace Simtabi\Laranail\AuthKit\Http\Requests; -use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rules\Password; +use Illuminate\Foundation\Http\FormRequest; use Simtabi\Laranail\AuthKit\Support\AuthKit; class UpdatePasswordRequest extends FormRequest { - /** @return array> */ - public function rules(): array - { - return self::rulesFor(guard: AuthKit::guard()); - } - /** @return array> */ 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'], ]; } - /** @return array */ - public function messages(): array - { - return self::messagesFor(); - } - /** @return array */ public static function messagesFor(): array { @@ -38,4 +26,16 @@ public static function messagesFor(): array 'current_password.current_password' => __(key: 'The provided password does not match your current password.'), ]; } + + /** @return array> */ + public function rules(): array + { + return self::rulesFor(guard: AuthKit::guard()); + } + + /** @return array */ + public function messages(): array + { + return self::messagesFor(); + } } diff --git a/src/Http/Requests/UpdateProfileInformationRequest.php b/src/Http/Requests/UpdateProfileInformationRequest.php index d2828c2..17438bf 100644 --- a/src/Http/Requests/UpdateProfileInformationRequest.php +++ b/src/Http/Requests/UpdateProfileInformationRequest.php @@ -4,22 +4,16 @@ namespace Simtabi\Laranail\AuthKit\Http\Requests; -use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; +use Illuminate\Foundation\Http\FormRequest; class UpdateProfileInformationRequest extends FormRequest { - /** @return array> */ - public function rules(): array - { - return self::rulesFor(table: $this->user()?->getTable() ?? 'users', ignoreId: $this->user()?->getKey()); - } - /** @return 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', @@ -29,4 +23,10 @@ public static function rulesFor(string $table, mixed $ignoreId = null): array ], ]; } + + /** @return array> */ + public function rules(): array + { + return self::rulesFor(table: $this->user()?->getTable() ?? 'users', ignoreId: $this->user()?->getKey()); + } } diff --git a/src/Models/Passkey.php b/src/Models/Passkey.php index 22adf22..9a0e195 100644 --- a/src/Models/Passkey.php +++ b/src/Models/Passkey.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Models; -use Illuminate\Database\Eloquent\Relations\MorphTo; use Laravel\Passkeys\Passkey as BasePasskey; +use Illuminate\Database\Eloquent\Relations\MorphTo; class Passkey extends BasePasskey { diff --git a/src/PasskeyAuthenticatable.php b/src/PasskeyAuthenticatable.php index c48fe60..17db61e 100644 --- a/src/PasskeyAuthenticatable.php +++ b/src/PasskeyAuthenticatable.php @@ -4,11 +4,11 @@ namespace Simtabi\Laranail\AuthKit; -use Illuminate\Database\Eloquent\Relations\HasMany; -use Laravel\Fortify\Contracts\PasskeyUser; -use Laravel\Passkeys\PasskeyAuthenticatable as BasePasskeyAuthenticatable; use Laravel\Passkeys\Passkeys; +use Laravel\Fortify\Contracts\PasskeyUser; +use Illuminate\Database\Eloquent\Relations\HasMany; use Simtabi\Laranail\AuthKit\Relations\PasskeyMorphMany; +use Laravel\Passkeys\PasskeyAuthenticatable as BasePasskeyAuthenticatable; /** * @phpstan-require-implements PasskeyUser diff --git a/src/Providers/AuthKitServiceProvider.php b/src/Providers/AuthKitServiceProvider.php index 07ec6f6..fe6dc50 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\Contracts; -use Simtabi\Laranail\AuthKit\Models\Passkey; 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\Package\Tools\Providers\PackageServiceProvider; class AuthKitServiceProvider extends PackageServiceProvider diff --git a/src/Relations/PasskeyMorphMany.php b/src/Relations/PasskeyMorphMany.php index a9ad4ca..d2515be 100644 --- a/src/Relations/PasskeyMorphMany.php +++ b/src/Relations/PasskeyMorphMany.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Relations; -use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\HasMany; class PasskeyMorphMany extends HasMany diff --git a/src/Rules/TurnstileRule.php b/src/Rules/TurnstileRule.php index 4df4fe8..5abc052 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 25dfe76..c7697ce 100644 --- a/src/Services/BrowserSessionService.php +++ b/src/Services/BrowserSessionService.php @@ -4,11 +4,11 @@ namespace Simtabi\Laranail\AuthKit\Services; +use Illuminate\Support\Collection; +use Illuminate\Database\Query\Builder; +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. @@ -56,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, ]); } diff --git a/src/Services/IdentityProviderRegistry.php b/src/Services/IdentityProviderRegistry.php index 6d6e73b..2c24fea 100644 --- a/src/Services/IdentityProviderRegistry.php +++ b/src/Services/IdentityProviderRegistry.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Services; -use Simtabi\Laranail\AuthKit\Contracts\IdentityProviderRegistryInterface; use Simtabi\Laranail\AuthKit\Support\IdentityProvider; +use Simtabi\Laranail\AuthKit\Contracts\IdentityProviderRegistryInterface; class IdentityProviderRegistry implements IdentityProviderRegistryInterface { diff --git a/src/Services/Turnstile.php b/src/Services/Turnstile.php index 26c9ab3..7d52dbf 100644 --- a/src/Services/Turnstile.php +++ b/src/Services/Turnstile.php @@ -4,8 +4,8 @@ namespace Simtabi\Laranail\AuthKit\Services; -use Illuminate\Support\Facades\Http; use Throwable; +use Illuminate\Support\Facades\Http; 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 384472e..bc131a1 100644 --- a/src/Services/UserProvisioningService.php +++ b/src/Services/UserProvisioningService.php @@ -4,10 +4,10 @@ namespace Simtabi\Laranail\AuthKit\Services; -use Illuminate\Contracts\Auth\Authenticatable; -use Illuminate\Database\Eloquent\Model; -use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; +use Illuminate\Support\Facades\Hash; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Contracts\Auth\Authenticatable; use Simtabi\Laranail\AuthKit\Support\UserModelResolver; /** @@ -26,7 +26,7 @@ class UserProvisioningService { /** - * @param array{name: string, email: string, password: string} $attributes + * @param array{name: string, email: string, password: string} $attributes */ public function create(array $attributes): Authenticatable { @@ -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 659eaef..faf91db 100644 --- a/src/Services/UserValidationService.php +++ b/src/Services/UserValidationService.php @@ -26,9 +26,10 @@ public function __construct(private readonly ValidationFactory $validator) {} /** * Validate input, throwing Illuminate\Validation\ValidationException on failure. * - * @param array $input - * @param array> $rules - * @param array $messages + * @param array $input + * @param array> $rules + * @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/AuthKit.php b/src/Support/AuthKit.php index c2ba4a4..f245229 100644 --- a/src/Support/AuthKit.php +++ b/src/Support/AuthKit.php @@ -4,21 +4,22 @@ namespace Simtabi\Laranail\AuthKit\Support; +use Closure; use Simtabi\Laranail\AuthKit\Rules\TurnstileRule; class AuthKit { - public static function guard(): string - { - return config(key: 'laranail.authkit.guard', default: 'web'); - } - /** * Resolves a redirect target ahead of this package's own config, or null to defer. * - * @var (\Closure(string): ?string)|null + * @var (Closure(string): ?string)|null */ - protected static ?\Closure $redirectResolver = null; + protected static ?Closure $redirectResolver = null; + + public static function guard(): string + { + return config(key: 'laranail.authkit.guard', default: 'web'); + } /** * Let a frontend package own the redirect targets. @@ -31,9 +32,9 @@ public static function guard(): string * The resolver is consulted at read time rather than copied at boot, so a value changed after * the container has booted is still honoured. Returning null defers to this package's config. * - * @param (\Closure(string): ?string)|null $resolver + * @param (Closure(string): ?string)|null $resolver */ - public static function resolveRedirectsUsing(?\Closure $resolver): void + public static function resolveRedirectsUsing(?Closure $resolver): void { static::$redirectResolver = $resolver; } diff --git a/src/Support/IdentityProvider.php b/src/Support/IdentityProvider.php index 732a0e7..7825f80 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 (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 $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 */ public function __construct( public string $slug, @@ -69,7 +69,7 @@ public function driver(): string * A provider that asserts nothing answers false whatever the payload claims, so a forged * `email_verified` cannot promote it. * - * @param array $rawUser + * @param array $rawUser */ public function hasVerifiedEmail(array $rawUser): bool { diff --git a/src/Support/UserModelResolver.php b/src/Support/UserModelResolver.php index bb29934..bf838b1 100644 --- a/src/Support/UserModelResolver.php +++ b/src/Support/UserModelResolver.php @@ -4,9 +4,9 @@ namespace Simtabi\Laranail\AuthKit\Support; -use Illuminate\Contracts\Auth\Authenticatable; -use Illuminate\Database\Eloquent\Model; use LogicException; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Contracts\Auth\Authenticatable; class UserModelResolver { diff --git a/tests/Feature/AttemptEmailPasswordLoginTest.php b/tests/Feature/AttemptEmailPasswordLoginTest.php index e7dab13..2b1629d 100644 --- a/tests/Feature/AttemptEmailPasswordLoginTest.php +++ b/tests/Feature/AttemptEmailPasswordLoginTest.php @@ -2,11 +2,11 @@ declare(strict_types=1); -use Illuminate\Http\Request; use Illuminate\Support\Str; -use Simtabi\Laranail\AuthKit\Actions\AttemptEmailPasswordLogin; -use Simtabi\Laranail\AuthKit\Enums\AuthStatus; +use Illuminate\Http\Request; use Workbench\App\Models\User; +use Simtabi\Laranail\AuthKit\Enums\AuthStatus; +use Simtabi\Laranail\AuthKit\Actions\AttemptEmailPasswordLogin; 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 5827d11..8ab1285 100644 --- a/tests/Feature/BrowserSessionsTest.php +++ b/tests/Feature/BrowserSessionsTest.php @@ -2,20 +2,20 @@ declare(strict_types=1); +use Workbench\App\Models\User; use Illuminate\Support\Facades\DB; +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 ea3a563..1768cc5 100644 --- a/tests/Feature/CheckEmailExistsTest.php +++ b/tests/Feature/CheckEmailExistsTest.php @@ -3,8 +3,8 @@ declare(strict_types=1); use Illuminate\Http\Request; -use Simtabi\Laranail\AuthKit\Actions\CheckEmailExists; use Workbench\App\Models\User; +use Simtabi\Laranail\AuthKit\Actions\CheckEmailExists; function checkEmailRequest(string $email): Request { diff --git a/tests/Feature/CreateNewUserTest.php b/tests/Feature/CreateNewUserTest.php index a8fe5e9..40137a0 100644 --- a/tests/Feature/CreateNewUserTest.php +++ b/tests/Feature/CreateNewUserTest.php @@ -2,17 +2,17 @@ declare(strict_types=1); -use Illuminate\Support\Facades\Validator; +use Workbench\App\Models\User; use Illuminate\Validation\Rule; +use Illuminate\Support\Facades\Validator; 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 d261ae7..1f1a6ae 100644 --- a/tests/Feature/FindUserByEmailTest.php +++ b/tests/Feature/FindUserByEmailTest.php @@ -2,8 +2,8 @@ declare(strict_types=1); -use Simtabi\Laranail\AuthKit\Actions\FindUserByEmail; use Workbench\App\Models\User; +use Simtabi\Laranail\AuthKit\Actions\FindUserByEmail; 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 33c1a36..9b1621e 100644 --- a/tests/Feature/IdentityProviderRegistryTest.php +++ b/tests/Feature/IdentityProviderRegistryTest.php @@ -2,8 +2,8 @@ declare(strict_types=1); -use Simtabi\Laranail\AuthKit\Contracts\IdentityProviderRegistryInterface; use Simtabi\Laranail\AuthKit\Support\IdentityProvider; +use Simtabi\Laranail\AuthKit\Contracts\IdentityProviderRegistryInterface; it('lets a sub-package contribute a provider without editing this package', function (): void { $registry = app(IdentityProviderRegistryInterface::class); @@ -23,7 +23,9 @@ // A fresh instance per resolution would drop whatever registered before it, so every // sub-package after the first would silently vanish. app(IdentityProviderRegistryInterface::class)->register(new IdentityProvider( - slug: 'okta', label: 'Okta', assertsEmailVerified: true, + slug: 'okta', + label: 'Okta', + assertsEmailVerified: true, )); expect(app(IdentityProviderRegistryInterface::class)->has('okta'))->toBeTrue(); diff --git a/tests/Feature/IssueTokenForUserTest.php b/tests/Feature/IssueTokenForUserTest.php index 2bce48f..8588a08 100644 --- a/tests/Feature/IssueTokenForUserTest.php +++ b/tests/Feature/IssueTokenForUserTest.php @@ -2,9 +2,9 @@ declare(strict_types=1); -use Simtabi\Laranail\AuthKit\Actions\IssueTokenForUser; -use Simtabi\Laranail\AuthKit\Support\TokenResult; use Workbench\App\Models\User; +use Simtabi\Laranail\AuthKit\Support\TokenResult; +use Simtabi\Laranail\AuthKit\Actions\IssueTokenForUser; 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 94c19bf..6ed8942 100644 --- a/tests/Feature/LoginUserTest.php +++ b/tests/Feature/LoginUserTest.php @@ -2,8 +2,8 @@ declare(strict_types=1); -use Simtabi\Laranail\AuthKit\Actions\LoginUser; use Workbench\App\Models\User; +use Simtabi\Laranail\AuthKit\Actions\LoginUser; 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 9b01575..c92fdaf 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 c11f5b9..3a90593 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 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 Laravel\Passkeys\Http\Controllers\PasskeyLoginController; use Simtabi\Laranail\AuthKit\Providers\AuthKitServiceProvider; -use Workbench\App\Models\User; +use Laravel\Passkeys\Http\Controllers\PasskeyConfirmationController; +use Laravel\Passkeys\Http\Controllers\PasskeyRegistrationController; 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 2615c82..0c388ad 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 597c67b..d19210b 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 b6545d4..59497a9 100644 --- a/tests/Feature/ResetUserPasswordTest.php +++ b/tests/Feature/ResetUserPasswordTest.php @@ -2,21 +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', ]); @@ -31,7 +31,7 @@ try { app(ResetUserPassword::class)->reset($user, [ - 'password' => 'new-secret', + 'password' => 'new-secret', 'password_confirmation' => 'different', ]); } catch (ValidationException $e) { @@ -56,14 +56,14 @@ $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, ]); }, diff --git a/tests/Feature/TurnstileTest.php b/tests/Feature/TurnstileTest.php index 6cba7f0..e903432 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\Rules\TurnstileRule; use Simtabi\Laranail\AuthKit\Support\AuthKit; +use Simtabi\Laranail\AuthKit\Rules\TurnstileRule; function useTurnstileRoute(string $middleware): void { diff --git a/tests/Feature/UpdateUserPasswordTest.php b/tests/Feature/UpdateUserPasswordTest.php index 3ed2107..311974e 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 19c8805..0736146 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 000d715..c03b0fd 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -use Illuminate\Foundation\Testing\LazilyRefreshDatabase; use Simtabi\Laranail\AuthKit\Tests\TestCase; +use Illuminate\Foundation\Testing\LazilyRefreshDatabase; uses(TestCase::class, LazilyRefreshDatabase::class)->in('Feature', 'Unit'); diff --git a/tests/TestCase.php b/tests/TestCase.php index bdfff00..b6da269 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -4,11 +4,11 @@ namespace Simtabi\Laranail\AuthKit\Tests; +use Workbench\App\Models\User; 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 { @@ -26,9 +26,9 @@ 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, ]); @@ -37,9 +37,9 @@ protected function defineEnvironment($app): void 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 3ecd6b9..3898767 100644 --- a/workbench/app/Models/User.php +++ b/workbench/app/Models/User.php @@ -4,13 +4,13 @@ namespace Workbench\App\Models; -use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Foundation\Auth\User as Authenticatable; +use Laravel\Sanctum\HasApiTokens; use Illuminate\Notifications\Notifiable; use Laravel\Fortify\Contracts\PasskeyUser; -use Laravel\Sanctum\HasApiTokens; -use Simtabi\Laranail\AuthKit\PasskeyAuthenticatable; use Workbench\Database\Factories\UserFactory; +use Simtabi\Laranail\AuthKit\PasskeyAuthenticatable; +use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Foundation\Auth\User as Authenticatable; 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 a7c50c5..07ca8f3 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), ]; } }