diff --git a/routes/inertia.php b/routes/inertia.php index 914205ba4..9482fee73 100644 --- a/routes/inertia.php +++ b/routes/inertia.php @@ -28,7 +28,7 @@ ? config('jetstream.auth_session') : null; - Route::group(['middleware' => array_values(array_filter([$authMiddleware, $authSessionMiddleware, 'verified']))], function () { + Route::group(['middleware' => array_values(array_filter([$authMiddleware, $authSessionMiddleware]))], function () { // User & Profile... Route::get('/user/profile', [UserProfileController::class, 'show']) ->name('profile.show'); @@ -44,32 +44,34 @@ ->name('current-user.destroy'); } - // API... - if (Jetstream::hasApiFeatures()) { - Route::get('/user/api-tokens', [ApiTokenController::class, 'index'])->name('api-tokens.index'); - Route::post('/user/api-tokens', [ApiTokenController::class, 'store'])->name('api-tokens.store'); - Route::put('/user/api-tokens/{token}', [ApiTokenController::class, 'update'])->name('api-tokens.update'); - Route::delete('/user/api-tokens/{token}', [ApiTokenController::class, 'destroy'])->name('api-tokens.destroy'); - } + Route::group(['middleware' => 'verified'], function () { + // API... + if (Jetstream::hasApiFeatures()) { + Route::get('/user/api-tokens', [ApiTokenController::class, 'index'])->name('api-tokens.index'); + Route::post('/user/api-tokens', [ApiTokenController::class, 'store'])->name('api-tokens.store'); + Route::put('/user/api-tokens/{token}', [ApiTokenController::class, 'update'])->name('api-tokens.update'); + Route::delete('/user/api-tokens/{token}', [ApiTokenController::class, 'destroy'])->name('api-tokens.destroy'); + } - // Teams... - if (Jetstream::hasTeamFeatures()) { - Route::get('/teams/create', [TeamController::class, 'create'])->name('teams.create'); - Route::post('/teams', [TeamController::class, 'store'])->name('teams.store'); - Route::get('/teams/{team}', [TeamController::class, 'show'])->name('teams.show'); - Route::put('/teams/{team}', [TeamController::class, 'update'])->name('teams.update'); - Route::delete('/teams/{team}', [TeamController::class, 'destroy'])->name('teams.destroy'); - Route::put('/current-team', [CurrentTeamController::class, 'update'])->name('current-team.update'); - Route::post('/teams/{team}/members', [TeamMemberController::class, 'store'])->name('team-members.store'); - Route::put('/teams/{team}/members/{user}', [TeamMemberController::class, 'update'])->name('team-members.update'); - Route::delete('/teams/{team}/members/{user}', [TeamMemberController::class, 'destroy'])->name('team-members.destroy'); + // Teams... + if (Jetstream::hasTeamFeatures()) { + Route::get('/teams/create', [TeamController::class, 'create'])->name('teams.create'); + Route::post('/teams', [TeamController::class, 'store'])->name('teams.store'); + Route::get('/teams/{team}', [TeamController::class, 'show'])->name('teams.show'); + Route::put('/teams/{team}', [TeamController::class, 'update'])->name('teams.update'); + Route::delete('/teams/{team}', [TeamController::class, 'destroy'])->name('teams.destroy'); + Route::put('/current-team', [CurrentTeamController::class, 'update'])->name('current-team.update'); + Route::post('/teams/{team}/members', [TeamMemberController::class, 'store'])->name('team-members.store'); + Route::put('/teams/{team}/members/{user}', [TeamMemberController::class, 'update'])->name('team-members.update'); + Route::delete('/teams/{team}/members/{user}', [TeamMemberController::class, 'destroy'])->name('team-members.destroy'); - Route::get('/team-invitations/{invitation}', [TeamInvitationController::class, 'accept']) - ->middleware(['signed']) - ->name('team-invitations.accept'); + Route::get('/team-invitations/{invitation}', [TeamInvitationController::class, 'accept']) + ->middleware(['signed']) + ->name('team-invitations.accept'); - Route::delete('/team-invitations/{invitation}', [TeamInvitationController::class, 'destroy']) - ->name('team-invitations.destroy'); - } + Route::delete('/team-invitations/{invitation}', [TeamInvitationController::class, 'destroy']) + ->name('team-invitations.destroy'); + } + }); }); }); diff --git a/routes/livewire.php b/routes/livewire.php index be2111717..8d44bd625 100644 --- a/routes/livewire.php +++ b/routes/livewire.php @@ -24,25 +24,26 @@ ? config('jetstream.auth_session') : null; - Route::group(['middleware' => array_values(array_filter([$authMiddleware, $authSessionMiddleware, 'verified']))], function () { + Route::group(['middleware' => array_values(array_filter([$authMiddleware, $authSessionMiddleware]))], function () { // User & Profile... - Route::get('/user/profile', [UserProfileController::class, 'show']) - ->name('profile.show'); - - // API... - if (Jetstream::hasApiFeatures()) { - Route::get('/user/api-tokens', [ApiTokenController::class, 'index'])->name('api-tokens.index'); - } - - // Teams... - if (Jetstream::hasTeamFeatures()) { - Route::get('/teams/create', [TeamController::class, 'create'])->name('teams.create'); - Route::get('/teams/{team}', [TeamController::class, 'show'])->name('teams.show'); - Route::put('/current-team', [CurrentTeamController::class, 'update'])->name('current-team.update'); - - Route::get('/team-invitations/{invitation}', [TeamInvitationController::class, 'accept']) - ->middleware(['signed']) - ->name('team-invitations.accept'); - } + Route::get('/user/profile', [UserProfileController::class, 'show'])->name('profile.show'); + + Route::group(['middleware' => 'verified'], function () { + // API... + if (Jetstream::hasApiFeatures()) { + Route::get('/user/api-tokens', [ApiTokenController::class, 'index'])->name('api-tokens.index'); + } + + // Teams... + if (Jetstream::hasTeamFeatures()) { + Route::get('/teams/create', [TeamController::class, 'create'])->name('teams.create'); + Route::get('/teams/{team}', [TeamController::class, 'show'])->name('teams.show'); + Route::put('/current-team', [CurrentTeamController::class, 'update'])->name('current-team.update'); + + Route::get('/team-invitations/{invitation}', [TeamInvitationController::class, 'accept']) + ->middleware(['signed']) + ->name('team-invitations.accept'); + } + }); }); }); diff --git a/src/Http/Livewire/UpdateProfileInformationForm.php b/src/Http/Livewire/UpdateProfileInformationForm.php index ac913a66f..a2e461c5e 100644 --- a/src/Http/Livewire/UpdateProfileInformationForm.php +++ b/src/Http/Livewire/UpdateProfileInformationForm.php @@ -25,6 +25,13 @@ class UpdateProfileInformationForm extends Component */ public $photo; + /** + * Determine if the verification email was sent. + * + * @var bool + */ + public $verificationLinkSent = false; + /** * Prepare the component. * @@ -73,6 +80,18 @@ public function deleteProfilePhoto() $this->emit('refresh-navigation-menu'); } + /** + * Sent the email verification. + * + * @return void + */ + public function sendEmailVerification() + { + Auth::user()->sendEmailVerificationNotification(); + + $this->verificationLinkSent = true; + } + /** * Get the current user of the application. * diff --git a/stubs/inertia/resources/js/Pages/Auth/VerifyEmail.vue b/stubs/inertia/resources/js/Pages/Auth/VerifyEmail.vue index 58eddaac8..1398a1785 100644 --- a/stubs/inertia/resources/js/Pages/Auth/VerifyEmail.vue +++ b/stubs/inertia/resources/js/Pages/Auth/VerifyEmail.vue @@ -27,11 +27,11 @@ const verificationLinkSent = computed(() => props.status === 'verification-link-