Make email service initialization asynchronous
Build And Push Image / docker (push) Successful in 3m10s
Details
Build And Push Image / docker (push) Successful in 3m10s
Details
Convert getEmailService() to async function and update all callers to use await. Replace synchronous require() with dynamic import() for admin-config module. Add SMTP config loading to admin configuration dialog.
This commit is contained in:
parent
97a0b5eea6
commit
dcb7840825
|
|
@ -673,6 +673,12 @@ const loadConfigurations = async () => {
|
||||||
if (registrationResponse.success && registrationResponse.data) {
|
if (registrationResponse.success && registrationResponse.data) {
|
||||||
registrationForm.value = { ...registrationResponse.data };
|
registrationForm.value = { ...registrationResponse.data };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load SMTP/Email config
|
||||||
|
const smtpResponse = await $fetch<{ success: boolean; data?: SMTPConfig }>('/api/admin/smtp-config');
|
||||||
|
if (smtpResponse.success && smtpResponse.data) {
|
||||||
|
emailForm.value = { ...smtpResponse.data };
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to load configurations:', error);
|
console.error('Failed to load configurations:', error);
|
||||||
errorMessage.value = 'Failed to load current settings';
|
errorMessage.value = 'Failed to load current settings';
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ export default defineEventHandler(async (event) => {
|
||||||
|
|
||||||
// Get email service and send test email
|
// Get email service and send test email
|
||||||
const { getEmailService } = await import('~/server/utils/email');
|
const { getEmailService } = await import('~/server/utils/email');
|
||||||
const emailService = getEmailService();
|
const emailService = await getEmailService();
|
||||||
|
|
||||||
// Verify connection first
|
// Verify connection first
|
||||||
const connectionOk = await emailService.verifyConnection();
|
const connectionOk = await emailService.verifyConnection();
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ export default defineEventHandler(async (event) => {
|
||||||
|
|
||||||
// Send verification email
|
// Send verification email
|
||||||
const { getEmailService } = await import('~/server/utils/email');
|
const { getEmailService } = await import('~/server/utils/email');
|
||||||
const emailService = getEmailService();
|
const emailService = await getEmailService();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await emailService.sendWelcomeEmail(email, {
|
await emailService.sendWelcomeEmail(email, {
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ export default defineEventHandler(async (event) => {
|
||||||
const { getEmailService } = await import('~/server/utils/email');
|
const { getEmailService } = await import('~/server/utils/email');
|
||||||
const { generateEmailVerificationToken } = await import('~/server/utils/email-tokens');
|
const { generateEmailVerificationToken } = await import('~/server/utils/email-tokens');
|
||||||
|
|
||||||
const emailService = getEmailService();
|
const emailService = await getEmailService();
|
||||||
const verificationToken = await generateEmailVerificationToken(keycloakId, member.email);
|
const verificationToken = await generateEmailVerificationToken(keycloakId, member.email);
|
||||||
const config = useRuntimeConfig();
|
const config = useRuntimeConfig();
|
||||||
const verificationLink = `${config.public.domain}/api/auth/verify-email?token=${verificationToken}`;
|
const verificationLink = `${config.public.domain}/api/auth/verify-email?token=${verificationToken}`;
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ export default defineEventHandler(async (event) => {
|
||||||
const { getEmailService } = await import('~/server/utils/email');
|
const { getEmailService } = await import('~/server/utils/email');
|
||||||
const { generateEmailVerificationToken } = await import('~/server/utils/email-tokens');
|
const { generateEmailVerificationToken } = await import('~/server/utils/email-tokens');
|
||||||
|
|
||||||
const emailService = getEmailService();
|
const emailService = await getEmailService();
|
||||||
const verificationToken = await generateEmailVerificationToken(createdKeycloakId, body.email);
|
const verificationToken = await generateEmailVerificationToken(createdKeycloakId, body.email);
|
||||||
const config = useRuntimeConfig();
|
const config = useRuntimeConfig();
|
||||||
const verificationLink = `${config.public.domain}/api/auth/verify-email?token=${verificationToken}`;
|
const verificationLink = `${config.public.domain}/api/auth/verify-email?token=${verificationToken}`;
|
||||||
|
|
|
||||||
|
|
@ -334,8 +334,8 @@ let emailServiceInstance: EmailService | null = null;
|
||||||
/**
|
/**
|
||||||
* Get or create EmailService instance with current SMTP config
|
* Get or create EmailService instance with current SMTP config
|
||||||
*/
|
*/
|
||||||
export function getEmailService(): EmailService {
|
export async function getEmailService(): Promise<EmailService> {
|
||||||
const { getSMTPConfig } = require('./admin-config');
|
const { getSMTPConfig } = await import('./admin-config');
|
||||||
const config = getSMTPConfig();
|
const config = getSMTPConfig();
|
||||||
|
|
||||||
if (!emailServiceInstance) {
|
if (!emailServiceInstance) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue