Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions config/laranail/authkit.php
Original file line number Diff line number Diff line change
Expand Up @@ -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' => [
Expand Down Expand Up @@ -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
Expand All @@ -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'],
],

];
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down
2 changes: 1 addition & 1 deletion rector-migrate-social.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@

$renames = [];
foreach ($moved as $class) {
$renames[$old.$class] = $new.$class;
$renames[$old . $class] = $new . $class;
}

return RectorConfig::configure()
Expand Down
2 changes: 1 addition & 1 deletion routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/*
|--------------------------------------------------------------------------
Expand Down
6 changes: 3 additions & 3 deletions src/Actions/AttemptEmailPasswordLogin.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion src/Actions/CheckEmailExists.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 6 additions & 6 deletions src/Actions/CreateNewUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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'],
]);

Expand Down
6 changes: 3 additions & 3 deletions src/Actions/IssueTokenForUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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<int, string>|null $abilities null takes the configured default scope
* @param DateTimeInterface|null $expiresAt null takes the configured lifetime
* @param array<int, string>|null $abilities null takes the configured default scope
* @param DateTimeInterface|null $expiresAt null takes the configured lifetime
*/
public function execute(
Authenticatable $user,
Expand Down
4 changes: 2 additions & 2 deletions src/Actions/ListBrowserSessions.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down
2 changes: 1 addition & 1 deletion src/Actions/LoginUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/Actions/LogoutOtherBrowserSessions.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down
2 changes: 1 addition & 1 deletion src/Actions/LogoutUser.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions src/Actions/ResetUserPassword.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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();

Expand Down
6 changes: 3 additions & 3 deletions src/Actions/UpdateUserPassword.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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();

Expand Down
10 changes: 5 additions & 5 deletions src/Actions/UpdateUserProfileInformation.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down Expand Up @@ -36,16 +36,16 @@ public function update($user, array $input): void
}

$user->forceFill(attributes: [
'name' => $input['name'],
'name' => $input['name'],
'email' => $input['email'],
])->save();
}

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();

Expand Down
4 changes: 2 additions & 2 deletions src/Contracts/IssueTokenForUserInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ interface IssueTokenForUserInterface
{
/** @param array<int, string> $abilities */
/**
* @param array<int, string>|null $abilities null takes the configured default scope
* @param DateTimeInterface|null $expiresAt null takes the configured lifetime
* @param array<int, string>|null $abilities null takes the configured default scope
* @param DateTimeInterface|null $expiresAt null takes the configured lifetime
*/
public function execute(
Authenticatable $user,
Expand Down
2 changes: 1 addition & 1 deletion src/Contracts/ListBrowserSessionsInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down
2 changes: 1 addition & 1 deletion src/Contracts/SocialIdentityProviderInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, mixed> $rawUser
* @param array<string, mixed> $rawUser
*/
public function hasVerifiedEmail(array $rawUser): bool;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand All @@ -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),
};
}
Expand Down
2 changes: 1 addition & 1 deletion src/Http/Controllers/AbstractAuthController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
2 changes: 1 addition & 1 deletion src/Http/Controllers/AbstractLogoutController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down
12 changes: 6 additions & 6 deletions src/Http/Controllers/AbstractNewPasswordController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
]);

Expand Down
Loading