user()?->currentTeam()->id !== 0) { return redirect(RouteServiceProvider::HOME); } TestEvent::dispatch(); return 'Look at your other tab.'; } public function verify() { return view('auth.verify-email'); } public function email_verify(EmailVerificationRequest $request) { $request->fulfill(); $name = request()->user()?->name; // send_internal_notification("User {$name} verified their email address."); return redirect(RouteServiceProvider::HOME); } public function forgot_password(Request $request) { if (is_transactional_emails_active()) { $arrayOfRequest = $request->only(Fortify::email()); $request->merge([ 'email' => Str::lower($arrayOfRequest['email']), ]); $type = set_transanctional_email_settings(); if (! $type) { return response()->json(['message' => 'Transactional emails are not active'], 400); } $request->validate([Fortify::email() => 'required|email']); $status = Password::broker(config('fortify.passwords'))->sendResetLink( $request->only(Fortify::email()) ); if ($status == Password::RESET_LINK_SENT) { return app(SuccessfulPasswordResetLinkRequestResponse::class, ['status' => $status]); } if ($status == Password::RESET_THROTTLED) { return response('Already requested a password reset in the past minutes.', 400); } return app(FailedPasswordResetLinkRequestResponse::class, ['status' => $status]); } return response()->json(['message' => 'Transactional emails are not active'], 400); } public function link() { $token = request()->get('token'); if ($token) { $decrypted = Crypt::decryptString($token); $email = Str::of($decrypted)->before('@@@'); $password = Str::of($decrypted)->after('@@@'); $user = User::whereEmail($email)->first(); if (! $user) { return redirect()->route('login'); } if (Hash::check($password, $user->password)) { $invitation = TeamInvitation::whereEmail($email); if ($invitation->exists()) { $team = $invitation->first()->team; $user->teams()->attach($team->id, ['role' => $invitation->first()->role]); $invitation->delete(); } else { $team = $user->teams()->first(); } if (is_null(data_get($user, 'email_verified_at'))) { $user->email_verified_at = now(); $user->save(); } Auth::login($user); session(['currentTeam' => $team]); return redirect()->route('dashboard'); } } return redirect()->route('login')->with('error', 'Invalid credentials.'); } public function accept_invitation() { try { $resetPassword = request()->query('reset-password'); $invitationUuid = request()->route('uuid'); $invitation = TeamInvitation::whereUuid($invitationUuid)->firstOrFail(); $user = User::whereEmail($invitation->email)->firstOrFail(); $invitationValid = $invitation->isValid(); if ($invitationValid) { if ($resetPassword) { $user->update([ 'password' => Hash::make($invitationUuid), 'force_password_reset' => true, ]); } if ($user->teams()->where('team_id', $invitation->team->id)->exists()) { $invitation->delete(); return redirect()->route('team.index'); } $user->teams()->attach($invitation->team->id, ['role' => $invitation->role]); $invitation->delete(); if (auth()->user()?->id !== $user->id) { return redirect()->route('login'); } refreshSession($invitation->team); return redirect()->route('team.index'); } else { abort(401); } } catch (\Throwable $e) { ray($e->getMessage()); throw $e; } } public function revoke_invitation() { try { $invitation = TeamInvitation::whereUuid(request()->route('uuid'))->firstOrFail(); $user = User::whereEmail($invitation->email)->firstOrFail(); if (is_null(auth()->user())) { return redirect()->route('login'); } if (auth()->user()->id !== $user->id) { abort(401); } $invitation->delete(); return redirect()->route('team.index'); } catch (\Throwable $e) { throw $e; } } }