resolveTemplate('reset_password'); if (! $template) { return DbTemplateMail::skipped( recipientEmail: $notifiable->email, templateType: 'reset_password', extensionType: ExtensionOwnerType::Core, extensionIdentifier: 'core', recipientName: $notifiable->name ?? null, ); } $resetPath = $this->redirectPrefix ? '/' . $this->redirectPrefix . '/reset-password' : '/reset-password'; $url = config('app.url') . $resetPath . '?' . http_build_query([ 'token' => $this->token, 'email' => $notifiable->email, ]); $expireMinutes = config('auth.passwords.users.expire', 60); $variables = [ 'name' => $notifiable->name ?? '', 'app_name' => config('app.name'), 'action_url' => $url, 'expire_minutes' => (string) $expireMinutes, 'site_url' => config('app.url'), ]; $rendered = $service->renderTemplate($template, $variables); return new DbTemplateMail( renderedSubject: $rendered['subject'], renderedBody: $rendered['body'], recipientEmail: $notifiable->email, templateType: 'reset_password', extensionType: ExtensionOwnerType::Core, extensionIdentifier: 'core', recipientName: $notifiable->name ?? null, ); } /** * 비밀번호 재설정 토큰을 반환합니다. * * @return string */ public function getToken(): string { return $this->token; } }