createResetUrl(...); VerifyEmail::$createUrlCallback = $this->createValidationUrl(...); } public function createValidationUrl(Customer $notifiable): string { $appKey = Config::string('app.key'); if (empty(trim($appKey))) { throw new \UnexpectedValueException('App key is not set.'); } return url( URL::temporarySignedRoute( 'fo.auth.verification.verify', Date::now()->addMinutes(Config::integer( 'auth.verification.expire', 60 )), [ 'id' => $notifiable->getKey(), 'hash' => hash_hmac( 'sha256', $notifiable->getEmailForVerification(), $appKey ), ], false ) ); } public function createResetUrl(mixed $notifiable, string $token): string { if (! is_object($notifiable) || ! ($notifiable instanceof Customer)) { throw new \InvalidArgumentException('Invalid notifiable provided.'); } return url( URL::temporarySignedRoute( 'fo.auth.reset-password', Date::now()->addMinutes(Config::integer('auth.reset.expire', 60)), [ 'token' => $token, 'email' => $notifiable->getEmailForPasswordReset(), ], false ) ); } }