diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 6154195..044fab0 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -33,6 +33,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -151,6 +152,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -228,6 +248,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -346,6 +367,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -423,6 +463,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -541,6 +582,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -618,6 +678,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -736,6 +797,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -813,6 +893,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -931,6 +1012,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -1008,6 +1108,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -1126,6 +1227,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -1203,6 +1323,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -1321,6 +1442,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -1398,6 +1538,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -1516,6 +1657,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -1593,6 +1753,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -1711,6 +1872,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -1788,6 +1968,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -1906,6 +2087,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, @@ -1983,6 +2183,7 @@ 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Auth\StatefulGuard' => \Illuminate\Auth\SessionGuard::class, 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, 'Illuminate\Contracts\Console\Kernel' => \Illuminate\Foundation\Console\Kernel::class, 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, @@ -2101,6 +2302,25 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse' => \Laravel\Fortify\Http\Responses\EmailVerificationNotificationSentResponse::class, + 'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class, + 'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class, + 'Laravel\Fortify\Contracts\LoginResponse' => \Laravel\Fortify\Http\Responses\LoginResponse::class, + 'Laravel\Fortify\Contracts\LogoutResponse' => \Laravel\Fortify\Http\Responses\LogoutResponse::class, + 'Laravel\Fortify\Contracts\PasswordConfirmedResponse' => \Laravel\Fortify\Http\Responses\PasswordConfirmedResponse::class, + 'Laravel\Fortify\Contracts\PasswordUpdateResponse' => \Laravel\Fortify\Http\Responses\PasswordUpdateResponse::class, + 'Laravel\Fortify\Contracts\ProfileInformationUpdatedResponse' => \Laravel\Fortify\Http\Responses\ProfileInformationUpdatedResponse::class, + 'Laravel\Fortify\Contracts\RecoveryCodesGeneratedResponse' => \Laravel\Fortify\Http\Responses\RecoveryCodesGeneratedResponse::class, + 'Laravel\Fortify\Contracts\RegisterResponse' => \Laravel\Fortify\Http\Responses\RegisterResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorAuthenticationProvider' => \Laravel\Fortify\TwoFactorAuthenticationProvider::class, + 'Laravel\Fortify\Contracts\TwoFactorConfirmedResponse' => \Laravel\Fortify\Http\Responses\TwoFactorConfirmedResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorDisabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorDisabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorEnabledResponse' => \Laravel\Fortify\Http\Responses\TwoFactorEnabledResponse::class, + 'Laravel\Fortify\Contracts\TwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\TwoFactorLoginResponse::class, + 'Laravel\Fortify\Contracts\UpdatesUserPasswords' => \App\Actions\Fortify\UpdateUserPassword::class, + 'Laravel\Fortify\Contracts\UpdatesUserProfileInformation' => \App\Actions\Fortify\UpdateUserProfileInformation::class, + 'Laravel\Fortify\Contracts\VerifyEmailResponse' => \Laravel\Fortify\Http\Responses\VerifyEmailResponse::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \Illuminate\Auth\SessionGuard::class, diff --git a/app/Actions/Fortify/PasswordValidationRules.php b/app/Actions/Fortify/PasswordValidationRules.php new file mode 100644 index 0000000..d1cbe8e --- /dev/null +++ b/app/Actions/Fortify/PasswordValidationRules.php @@ -0,0 +1,18 @@ + + */ + protected function passwordRules(): array + { + return ["required", "string", Password::default(), "confirmed"]; + } +} diff --git a/app/Actions/Fortify/UpdateUserPassword.php b/app/Actions/Fortify/UpdateUserPassword.php new file mode 100644 index 0000000..5ea93fb --- /dev/null +++ b/app/Actions/Fortify/UpdateUserPassword.php @@ -0,0 +1,37 @@ + $input + * @throws ValidationException + */ + public function update(User $user, array $input): void + { + Validator::make( + $input, + [ + "current_password" => ["required", "string", "current_password:web"], + "password" => $this->passwordRules(), + ], + [ + "current_password.current_password" => __("The provided password does not match your current password."), + ] + ) + ->validateWithBag("updatePassword"); + + $user->forceFill(["password" => Hash::make($input["password"])])->save(); + } +} diff --git a/app/Actions/Fortify/UpdateUserProfileInformation.php b/app/Actions/Fortify/UpdateUserProfileInformation.php new file mode 100644 index 0000000..5e544c2 --- /dev/null +++ b/app/Actions/Fortify/UpdateUserProfileInformation.php @@ -0,0 +1,40 @@ + $input + */ + public function update(User $user, array $input): void + { + Validator::make($input, + [ + "name" => ["required", "string", "max:255"], + + "username" => [ + "required", + "string", + "max:255", + Rule::unique("users")->ignore($user->id), + ], + ] + ) + ->validateWithBag("updateProfileInformation"); + + $user->forceFill([ + "name" => $input["name"], + "email" => $input["email"], + ]) + ->save(); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php deleted file mode 100644 index 8677cd5..0000000 --- a/app/Http/Controllers/Controller.php +++ /dev/null @@ -1,8 +0,0 @@ -setValue($username); + $icon->setSize(100); + + return response($icon->getImageData("svg"), 200) + ->header("Cache-Control", "max-age=604800") + ->header("Content-Type", "image/svg+xml"); + } +} diff --git a/app/Models/Book.php b/app/Models/Book.php index 4e5fda1..5195605 100644 --- a/app/Models/Book.php +++ b/app/Models/Book.php @@ -8,6 +8,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany; /** + * + * * @property int|null $id * @property string|null $timestamp * @property string|null $author_sort diff --git a/app/Models/BookTag.php b/app/Models/BookTag.php index 4fd7e15..0d9858e 100644 --- a/app/Models/BookTag.php +++ b/app/Models/BookTag.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; /** - * + * * * @property string $name the name of the tag * @property int $book the id of the book this tag belongs to @@ -18,6 +18,7 @@ * @method static \Illuminate\Database\Eloquent\Builder|BookTag whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|BookTag whereLink($value) * @method static \Illuminate\Database\Eloquent\Builder|BookTag whereName($value) + * @property string $link * @mixin \Eloquent */ class BookTag extends Model diff --git a/app/Models/Series.php b/app/Models/Series.php index e5994b0..7f06275 100644 --- a/app/Models/Series.php +++ b/app/Models/Series.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; /** - * + * * * @property string $name the name of the series * @property string $sort the name of the series in a sortable format @@ -22,6 +22,7 @@ * @method static \Illuminate\Database\Eloquent\Builder|Series whereLink($value) * @method static \Illuminate\Database\Eloquent\Builder|Series whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|Series whereSort($value) + * @property-read Collection $books * @mixin \Eloquent */ class Series extends Model diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..53f3b1a --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,36 @@ +username)->first(); + + if ($user && Hash::check($request->password, $user->password)) { + return $user; + } + + return null; + }); + + Fortify::loginView(fn () => view("login")); + + RateLimiter::for("login", function (Request $request) { + $throttleKey = Str::transliterate(Str::lower($request->input(Fortify::username())) . "|" . $request->ip()); + + return Limit::perMinute(5)->by($throttleKey); + }); + } +} diff --git a/app/View/Components/Header.php b/app/View/Components/Header.php index a12a198..9ddfd7d 100644 --- a/app/View/Components/Header.php +++ b/app/View/Components/Header.php @@ -13,6 +13,8 @@ class Header extends Component */ public function render(): View|Closure|string { - return view("components.header"); + return view("components.header", [ + "username" => request()->user()->username, + ]); } } diff --git a/app/View/Components/Layout.php b/app/View/Components/Layout.php new file mode 100644 index 0000000..576d1a0 --- /dev/null +++ b/app/View/Components/Layout.php @@ -0,0 +1,26 @@ + "All books", - "books" => BookResource::collection(Book::all())->toArray($request) + "books" => BookResource::collection(Book::all())->toArray($request), ]); } } diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 38b258d..0ad9c57 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -2,4 +2,5 @@ return [ App\Providers\AppServiceProvider::class, + App\Providers\FortifyServiceProvider::class, ]; diff --git a/composer.json b/composer.json index 47bd7ee..2114471 100644 --- a/composer.json +++ b/composer.json @@ -6,9 +6,11 @@ "license": "MIT", "require": { "php": "^8.2", + "ext-pdo": "*", + "jdenticon/jdenticon": "^1.0", + "laravel/fortify": "^1.21", "laravel/framework": "^11.9", - "laravel/tinker": "^2.9", - "ext-pdo": "*" + "laravel/tinker": "^2.9" }, "require-dev": { "barryvdh/laravel-ide-helper": "^3.1", diff --git a/composer.lock b/composer.lock index f22b7ac..14e9c42 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,62 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8e855ca18db2973a7f96830cbdaec1d2", + "content-hash": "7944174c06cb861c58157ae9df412d17", "packages": [ + { + "name": "bacon/bacon-qr-code", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/Bacon/BaconQrCode.git", + "reference": "510de6eca6248d77d31b339d62437cc995e2fb41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/510de6eca6248d77d31b339d62437cc995e2fb41", + "reference": "510de6eca6248d77d31b339d62437cc995e2fb41", + "shasum": "" + }, + "require": { + "dasprid/enum": "^1.0.3", + "ext-iconv": "*", + "php": "^8.1" + }, + "require-dev": { + "phly/keep-a-changelog": "^2.12", + "phpunit/phpunit": "^10.5.11 || 11.0.4", + "spatie/phpunit-snapshot-assertions": "^5.1.5", + "squizlabs/php_codesniffer": "^3.9" + }, + "suggest": { + "ext-imagick": "to generate QR code images" + }, + "type": "library", + "autoload": { + "psr-4": { + "BaconQrCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "BaconQrCode is a QR code generator for PHP.", + "homepage": "https://github.com/Bacon/BaconQrCode", + "support": { + "issues": "https://github.com/Bacon/BaconQrCode/issues", + "source": "https://github.com/Bacon/BaconQrCode/tree/v3.0.0" + }, + "time": "2024-04-18T11:16:25+00:00" + }, { "name": "brick/math", "version": "0.12.1", @@ -135,6 +189,56 @@ ], "time": "2024-02-09T16:56:22+00:00" }, + { + "name": "dasprid/enum", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/DASPRiD/Enum.git", + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016", + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016", + "shasum": "" + }, + "require": { + "php": ">=7.1 <9.0" + }, + "require-dev": { + "phpunit/phpunit": "^7 | ^8 | ^9", + "squizlabs/php_codesniffer": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "DASPRiD\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "PHP 7.1 enum implementation", + "keywords": [ + "enum", + "map" + ], + "support": { + "issues": "https://github.com/DASPRiD/Enum/issues", + "source": "https://github.com/DASPRiD/Enum/tree/1.0.5" + }, + "time": "2023-08-25T16:18:39+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.3", @@ -1050,6 +1154,120 @@ ], "time": "2023-12-03T19:50:20+00:00" }, + { + "name": "jdenticon/jdenticon", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/dmester/jdenticon-php.git", + "reference": "cabb7a44c413c318392a341c5d3ca30fcdd57a6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dmester/jdenticon-php/zipball/cabb7a44c413c318392a341c5d3ca30fcdd57a6f", + "reference": "cabb7a44c413c318392a341c5d3ca30fcdd57a6f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Jdenticon\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Mester Pirttijärvi" + } + ], + "description": "Render PNG and SVG identicons.", + "homepage": "https://jdenticon.com/", + "keywords": [ + "avatar", + "identicon", + "jdenticon" + ], + "support": { + "docs": "https://jdenticon.com/php-api.html", + "issues": "https://github.com/dmester/jdenticon-php/issues", + "source": "https://github.com/dmester/jdenticon-php" + }, + "time": "2022-10-30T17:15:02+00:00" + }, + { + "name": "laravel/fortify", + "version": "v1.21.5", + "source": { + "type": "git", + "url": "https://github.com/laravel/fortify.git", + "reference": "3eaf01ec826c4f653628202640a4450784f78b15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/fortify/zipball/3eaf01ec826c4f653628202640a4450784f78b15", + "reference": "3eaf01ec826c4f653628202640a4450784f78b15", + "shasum": "" + }, + "require": { + "bacon/bacon-qr-code": "^3.0", + "ext-json": "*", + "illuminate/support": "^10.0|^11.0", + "php": "^8.1", + "pragmarx/google2fa": "^8.0", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^8.16|^9.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Fortify\\FortifyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Fortify\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Backend controllers and scaffolding for Laravel authentication.", + "keywords": [ + "auth", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/fortify/issues", + "source": "https://github.com/laravel/fortify" + }, + "time": "2024-07-04T14:36:27+00:00" + }, { "name": "laravel/framework", "version": "v11.16.0", @@ -2317,6 +2535,73 @@ ], "time": "2024-03-06T16:17:14+00:00" }, + { + "name": "paragonie/constant_time_encoding", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/52a0d99e69f56b9ec27ace92ba56897fe6993105", + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105", + "shasum": "" + }, + "require": { + "php": "^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^6|^7|^8|^9", + "vimeo/psalm": "^1|^2|^3|^4" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2024-05-08T12:18:48+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.2", @@ -2392,6 +2677,58 @@ ], "time": "2023-11-12T21:59:55+00:00" }, + { + "name": "pragmarx/google2fa", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/google2fa.git", + "reference": "80c3d801b31fe165f8fe99ea085e0a37834e1be3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/80c3d801b31fe165f8fe99ea085e0a37834e1be3", + "reference": "80c3d801b31fe165f8fe99ea085e0a37834e1be3", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1.0|^2.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.18", + "phpunit/phpunit": "^7.5.15|^8.5|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "PragmaRX\\Google2FA\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "description": "A One Time Password Authentication package, compatible with Google Authenticator.", + "keywords": [ + "2fa", + "Authentication", + "Two Factor Authentication", + "google2fa" + ], + "support": { + "issues": "https://github.com/antonioribeiro/google2fa/issues", + "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.1" + }, + "time": "2022-06-13T21:57:56+00:00" + }, { "name": "psr/clock", "version": "1.0.0", diff --git a/config/fortify.php b/config/fortify.php new file mode 100644 index 0000000..a547c6b --- /dev/null +++ b/config/fortify.php @@ -0,0 +1,161 @@ + "web", + + /* + |-------------------------------------------------------------------------- + | Fortify Password Broker + |-------------------------------------------------------------------------- + | + | Here you may specify which password broker Fortify can use when a user + | is resetting their password. This configured value should match one + | of your password brokers setup in your "auth" configuration file. + | + */ + + "passwords" => "users", + + /* + |-------------------------------------------------------------------------- + | Username / Email + |-------------------------------------------------------------------------- + | + | This value defines which model attribute should be considered as your + | application"s "username" field. Typically, this might be the email + | address of the users but you are free to change this value here. + | + | Out of the box, Fortify expects forgot password and reset password + | requests to have a field named "email". If the application uses + | another name for the field you may define it below as needed. + | + */ + + "username" => "username", + + "email" => "email", + + /* + |-------------------------------------------------------------------------- + | Lowercase Usernames + |-------------------------------------------------------------------------- + | + | This value defines whether usernames should be lowercased before saving + | them in the database, as some database system string fields are case + | sensitive. You may disable this for your application if necessary. + | + */ + + "lowercase_usernames" => true, + + /* + |-------------------------------------------------------------------------- + | Home Path + |-------------------------------------------------------------------------- + | + | Here you may configure the path where users will get redirected during + | authentication or password reset when the operations are successful + | and the user is authenticated. You are free to change this value. + | + */ + + "home" => "/", + + /* + |-------------------------------------------------------------------------- + | Fortify Routes Prefix / Subdomain + |-------------------------------------------------------------------------- + | + | Here you may specify which prefix Fortify will assign to all the routes + | that it registers with the application. If necessary, you may change + | subdomain under which all of the Fortify routes will be available. + | + */ + + "prefix" => "", + + "domain" => null, + + /* + |-------------------------------------------------------------------------- + | Fortify Routes Middleware + |-------------------------------------------------------------------------- + | + | Here you may specify which middleware Fortify will assign to the routes + | that it registers with the application. If necessary, you may change + | these middleware but typically this provided default is preferred. + | + */ + + "middleware" => ["web"], + + /* + |-------------------------------------------------------------------------- + | Rate Limiting + |-------------------------------------------------------------------------- + | + | By default, Fortify will throttle logins to five requests per minute for + | every email and IP address combination. However, if you would like to + | specify a custom rate limiter to call then you may specify it here. + | + */ + + "limiters" => [ + "login" => "login", + // "two-factor" => "two-factor", + ], + + /* + |-------------------------------------------------------------------------- + | Register View Routes + |-------------------------------------------------------------------------- + | + | Here you may specify if the routes returning views should be disabled as + | you may not need them when building your own application. This may be + | especially true if you're writing a custom single-page application. + | + */ + + "views" => true, + + /* + |-------------------------------------------------------------------------- + | Features + |-------------------------------------------------------------------------- + | + | Some of the Fortify features are optional. You may disable the features + | by removing them from this array. You"re free to only remove some of + | these features or you can even remove all of these if you need to. + | + */ + + "features" => [ + // Features::registration(), + // Features::resetPasswords(), + // Features::emailVerification(), + Features::updateProfileInformation(), + Features::updatePasswords(), + /* + Features::twoFactorAuthentication([ + "confirm" => true, + "confirmPassword" => true, + // "window" => 0, + ]), + */ + ], + +]; diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index 33dd09c..d0d9bd5 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -14,19 +14,12 @@ public function up(): void Schema::create("users", function (Blueprint $table) { $table->id(); $table->string("name"); - $table->string("email")->unique(); - $table->timestamp("email_verified_at")->nullable(); + $table->string("username")->unique(); $table->string("password"); $table->rememberToken(); $table->timestamps(); }); - Schema::create("password_reset_tokens", function (Blueprint $table) { - $table->string("email")->primary(); - $table->string("token"); - $table->timestamp("created_at")->nullable(); - }); - Schema::create("sessions", function (Blueprint $table) { $table->string("id")->primary(); $table->foreignId("user_id")->nullable()->index(); @@ -43,7 +36,6 @@ public function up(): void public function down(): void { Schema::dropIfExists("users"); - Schema::dropIfExists("password_reset_tokens"); Schema::dropIfExists("sessions"); } }; diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 0000000..06b51e8 --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,23 @@ +insert([ + "name" => Str::random(10), + "username" => "admin", + "password" => Hash::make("password"), + ]); + } +} diff --git a/resources/views/components/header.blade.php b/resources/views/components/header.blade.php index 7af871b..27265f5 100644 --- a/resources/views/components/header.blade.php +++ b/resources/views/components/header.blade.php @@ -24,18 +24,22 @@ class="w-6 h-6" -
+
- - - -
+ + + + + +
+
{{ "@" . $username }}
+ {{ $username  }}
diff --git a/resources/views/components/layout.blade.php b/resources/views/components/layout.blade.php new file mode 100644 index 0000000..b126d2f --- /dev/null +++ b/resources/views/components/layout.blade.php @@ -0,0 +1,14 @@ + +getLocale()) }}"> + + + + + calibuh + + @vite("resources/css/app.css") + + + {{ $slot }} + + diff --git a/resources/views/components/page.blade.php b/resources/views/components/page.blade.php index 06b4450..112bd8f 100644 --- a/resources/views/components/page.blade.php +++ b/resources/views/components/page.blade.php @@ -1,14 +1,4 @@ - -getLocale()) }}"> - - - - - calibuh - - @vite("resources/css/app.css") - - +
@@ -16,5 +6,4 @@
- - +
diff --git a/resources/views/login.blade.php b/resources/views/login.blade.php new file mode 100644 index 0000000..0cfcdfd --- /dev/null +++ b/resources/views/login.blade.php @@ -0,0 +1,61 @@ + + +
+
+
+

Login

+

Enter your email and password to access your account.

+
+
+ @csrf + +
+ + +
+
+
+ + + Forgot password? + +
+ +
+ +
+
+ Don't have an account?   + + Sign up + +
+
+
+
diff --git a/routes/web.php b/routes/web.php index 09f6e92..2ba3e3a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,12 +1,20 @@ new Pages\BookPage()); -Route::get("/serieses", fn() => new Pages\SeriesesPage()); -Route::get("/shelves", fn() => new Pages\ShelvesPage()); -Route::get("/search", fn() => new Pages\SearchPage()); +Route::middleware(["auth"])->group(function () { + Route::get("/", fn() => new Pages\BooksPage()); + Route::get("/serieses", fn() => new Pages\SeriesesPage()); + Route::get("/shelves", fn() => new Pages\ShelvesPage()); + Route::get("/search", fn() => new Pages\SearchPage()); -Route::get("/series/{id}", fn(int $id) => new Pages\SeriesPage($id)); -Route::get("/shelf/{id}", fn(int $id) => new Pages\ShelfPage($id)); + Route::get("/series/{id}", fn(int $id) => new Pages\SeriesPage($id)); + Route::get("/shelf/{id}", fn(int $id) => new Pages\ShelfPage($id)); + + Route::get("/identicon/{username}", [UserController::class, "identicon"]); + + Route::get("/content/{file}", fn(string $file) => Storage::disk("local")->response("content/$file")) + ->where("file", ".*"); +});