chore(server): remove enable flag in mail config (#11680)

close #11625
This commit is contained in:
forehalo
2025-04-15 09:18:09 +00:00
parent b249939093
commit 7257f1b55b
15 changed files with 55 additions and 70 deletions

View File

@@ -37,7 +37,6 @@ import { CurrentUser, Session } from './session';
interface PreflightResponse {
registered: boolean;
hasPassword: boolean;
magicLink: boolean;
}
interface SignInCredential {
@@ -91,20 +90,16 @@ export class AuthController {
const user = await this.models.user.getUserByEmail(params.email);
const magicLinkAvailable = this.config.mailer.enabled;
if (!user) {
return {
registered: false,
hasPassword: false,
magicLink: magicLinkAvailable,
};
}
return {
registered: user.registered,
hasPassword: !!user.password,
magicLink: magicLinkAvailable,
};
}

View File

@@ -3,7 +3,6 @@ import { defineModuleConfig } from '../../base';
declare global {
interface AppConfigSchema {
mailer: {
enabled: boolean;
SMTP: {
host: string;
port: number;
@@ -17,10 +16,6 @@ declare global {
}
defineModuleConfig('mailer', {
enabled: {
desc: 'Whether enabled mail service.',
default: false,
},
'SMTP.host': {
desc: 'Host of the email server (e.g. smtp.gmail.com)',
default: '',
@@ -49,6 +44,6 @@ defineModuleConfig('mailer', {
'SMTP.ignoreTLS': {
desc: "Whether ignore email server's TSL certification verification. Enable it for self-signed certificates.",
default: false,
env: 'MAILER_IGNORE_TLS',
env: ['MAILER_IGNORE_TLS', 'boolean'],
},
});

View File

@@ -1,12 +1,25 @@
import { Injectable } from '@nestjs/common';
import { JobQueue } from '../../base';
import { EmailServiceNotConfigured, JobQueue } from '../../base';
import { MailSender } from './sender';
@Injectable()
export class Mailer {
constructor(private readonly queue: JobQueue) {}
constructor(
private readonly queue: JobQueue,
private readonly sender: MailSender
) {}
get enabled() {
// @ts-expect-error internal api
return this.sender.smtp !== null;
}
async send(command: Jobs['notification.sendMail']) {
if (!this.enabled) {
throw new EmailServiceNotConfigured();
}
try {
await this.queue.add('notification.sendMail', command);
return true;

View File

@@ -56,13 +56,7 @@ export class MailSender {
}
private setup() {
const { SMTP, enabled } = this.config.mailer;
if (!enabled) {
this.smtp = null;
return;
}
const { SMTP } = this.config.mailer;
const opts = configToSMTPOptions(SMTP);
if (SMTP.host) {
@@ -83,6 +77,7 @@ export class MailSender {
});
} else {
this.logger.warn('Mailer SMTP transport is not configured.');
this.smtp = null;
}
}