Fix/smtp creds env (#12634)

* submodule update commit

* fix: updated smtp env creds

* fix: updated smtp route, added base flag

* feat: added smtp util service

* fix: removed instanceSettings module

* fix: updated email to use smtpUtil, removed instanceUtil

* fix: added smtpmodule import

* fix: removed instance settings module from email module
This commit is contained in:
Devanshu Gupta 2025-04-21 14:44:29 +05:30 committed by GitHub
parent 64a4eb3f9e
commit f5230a8529
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 47 additions and 15 deletions

@ -1 +1 @@
Subproject commit 9aa23fc0aa78a84dd13dd7308fa3de63c9c553ff
Subproject commit dfecbc41b216cea248245c862a0c362756c6b70d

@ -1 +1 @@
Subproject commit 9099be6814072b4e37713af6f374868b027c95f8
Subproject commit ec251e560902d7fc7cd5c97bfcc6de539e40cd13

View file

@ -1,8 +1,8 @@
import { DynamicModule } from '@nestjs/common';
import { getImportPath } from '@modules/app/constants';
import { WhiteLabellingModule } from '@modules/white-labelling/module';
import { InstanceSettingsModule } from '@modules/instance-settings/module';
import { DataSourcesModule } from '@modules/data-sources/module';
import { SMTPModule } from '@modules/smtp/module';
export class EmailModule {
static async register(configs?: { IS_GET_CONTEXT: boolean }): Promise<DynamicModule> {
@ -14,8 +14,8 @@ export class EmailModule {
module: EmailModule,
imports: [
await WhiteLabellingModule.register(configs),
await InstanceSettingsModule.register(configs),
await DataSourcesModule.register(configs),
await SMTPModule.register(configs),
],
providers: [EmailService, EmailListener, EmailUtilService],
};

View file

@ -1,14 +1,14 @@
import { IEmailUtilService } from '@modules/email/interfaces/IUtilService';
import { INSTANCE_SETTINGS_TYPE, INSTANCE_SYSTEM_SETTINGS } from '@modules/instance-settings/constants';
import { InstanceSettingsUtilService } from '@modules/instance-settings/util.service';
import { WhiteLabellingUtilService } from '@modules/white-labelling/util.service';
import { Injectable } from '@nestjs/common';
import { SMTPUtilService } from '@modules/smtp/util.service';
@Injectable()
export class EmailUtilService implements IEmailUtilService {
constructor(
protected readonly instanceSettingsUtilService: InstanceSettingsUtilService,
protected readonly whiteLabellingUtilService: WhiteLabellingUtilService
protected readonly whiteLabellingUtilService: WhiteLabellingUtilService,
protected readonly smtpUtilService: SMTPUtilService
) {}
async retrieveWhiteLabelSettings(organizationId?: string | null): Promise<any> {
@ -17,7 +17,7 @@ export class EmailUtilService implements IEmailUtilService {
}
async retrieveSmtpSettings(): Promise<any> {
const smtpSetting = await this.instanceSettingsUtilService.getSettings(
const smtpSetting = await this.smtpUtilService.getSmtpEnv(
[
INSTANCE_SYSTEM_SETTINGS.SMTP_ENABLED,
INSTANCE_SYSTEM_SETTINGS.SMTP_DOMAIN,

View file

@ -57,6 +57,6 @@ export function getDefaultInstanceSettings() {
[INSTANCE_SYSTEM_SETTINGS.SMTP_PASSWORD]: process.env.SMTP_PASSWORD,
[INSTANCE_SYSTEM_SETTINGS.SMTP_ENABLED]: process.env.SMTP_DISABLED === 'true' ? 'false' : 'true',
[INSTANCE_SYSTEM_SETTINGS.SMTP_ENV_CONFIGURED]: 'true',
[INSTANCE_SYSTEM_SETTINGS.SMTP_FROM_EMAIL]: process.env.DEFAULT_FROM_EMAIL
[INSTANCE_SYSTEM_SETTINGS.SMTP_FROM_EMAIL]: process.env.DEFAULT_FROM_EMAIL,
};
}

View file

@ -9,12 +9,13 @@ export class SMTPModule {
const importPath = await getImportPath(configs?.IS_GET_CONTEXT);
const { SMTPService } = await import(`${importPath}/smtp/service`);
const { SmtpController } = await import(`${importPath}/smtp/controller`);
const { SMTPUtilService } = await import(`${importPath}/smtp/util.service`)
const { SMTPUtilService } = await import(`${importPath}/smtp/util.service`);
return {
module: SMTPModule,
imports: [await InstanceSettingsModule.register(configs)],
controllers: [SmtpController],
providers: [SMTPService, FeatureAbilityFactory, SMTPUtilService],
exports: [SMTPUtilService],
};
}
}

View file

@ -1,9 +1,40 @@
import { Injectable } from "@nestjs/common";
import { ISMTPUtilService } from "./interfaces/IUtilService";
import { Injectable } from '@nestjs/common';
import { ISMTPUtilService } from './interfaces/IUtilService';
import { getDefaultInstanceSettings } from '@modules/instance-settings/constants';
import { InstanceSettingsUtilService } from '@modules/instance-settings/util.service';
@Injectable()
export class SMTPUtilService implements ISMTPUtilService {
getSmtpEnv(key?: string | string[], getAllData = false, type?: any): Promise<any> {
throw new Error('Method not implemented.');
constructor(protected instanceSettingsUtilService: InstanceSettingsUtilService) {}
async getSmtpEnv(key?: string | string[], getAllData = false, type?: any): Promise<any> {
const defaultInstanceSettings = getDefaultInstanceSettings();
const instanceSmtpConfig = await this.instanceSettingsUtilService.getSettings(key, false, type);
if (instanceSmtpConfig.SMTP_ENV_CONFIGURED === 'true') {
let settings = Object.keys(defaultInstanceSettings)
.filter((e) => (Array.isArray(key) ? key.includes(e) : key === e))
.map((e) => ({ key: e, value: defaultInstanceSettings[e] }));
if (!settings) {
settings = [];
}
if (key) {
(Array.isArray(key) ? key : [key]).forEach((s) => {
if (!settings.some((e) => e.key === s)) {
settings.push({ key: s, value: null });
}
});
}
const instanceConfigs = {};
settings?.forEach((config) => {
instanceConfigs[config.key] = getAllData ? config : config.value;
});
return Array.isArray(key) ? instanceConfigs : instanceConfigs[key];
}
return instanceSmtpConfig;
}
}
}