fix idp on started
This commit is contained in:
@@ -41,9 +41,9 @@ RUN npm --workspace @lendry/sso-core run prisma:generate \
|
||||
&& npm --workspace @lendry/sso-core run proto:generate \
|
||||
&& npm --workspace @lendry/sso-core run build
|
||||
|
||||
COPY apps/sso-core/docker-entrypoint.sh /app/apps/sso-core/docker-entrypoint.sh
|
||||
RUN chmod +x /app/apps/sso-core/docker-entrypoint.sh
|
||||
COPY apps/sso-core/docker-entrypoint.sh /docker-entrypoint.sh
|
||||
RUN sed -i 's/\r$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh
|
||||
|
||||
EXPOSE 3001 50051
|
||||
|
||||
CMD ["/app/apps/sso-core/docker-entrypoint.sh"]
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
|
||||
@@ -41,6 +41,20 @@ export class SettingsService {
|
||||
}
|
||||
|
||||
async upsert(command: UpsertSettingCommand) {
|
||||
const trimmedValue = command.value?.trim() ?? '';
|
||||
if (command.isSecret && trimmedValue === '') {
|
||||
const existing = await this.prisma.systemSetting.findUnique({ where: { key: command.key } });
|
||||
if (existing) {
|
||||
return this.prisma.systemSetting.update({
|
||||
where: { key: command.key },
|
||||
data: {
|
||||
description: command.description,
|
||||
isSecret: command.isSecret ?? existing.isSecret
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return this.prisma.systemSetting.upsert({
|
||||
where: { key: command.key },
|
||||
create: {
|
||||
|
||||
@@ -40,22 +40,36 @@ export class MessagingService {
|
||||
private async sendEmailCode(payload: VerificationPayload) {
|
||||
const enabled = await this.settings.getBoolean('EMAIL_ENABLED', false);
|
||||
const provider = (await this.settings.getValue('EMAIL_PROVIDER', 'smtp')).trim().toLowerCase();
|
||||
const host = (await this.settings.getValue('EMAIL_SMTP_HOST', '')).trim();
|
||||
const fromAddress = (await this.settings.getValue('EMAIL_FROM_ADDRESS', '')).trim();
|
||||
const smtpConfigured = Boolean(host && fromAddress);
|
||||
|
||||
if (!enabled || provider === 'console') {
|
||||
this.logConsoleFallback('email', payload);
|
||||
if (provider === 'console') {
|
||||
this.logConsoleFallback('email', payload, 'выбран режим «Только лог» (EMAIL_PROVIDER=console)');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!enabled && !smtpConfigured) {
|
||||
this.logConsoleFallback(
|
||||
'email',
|
||||
payload,
|
||||
'EMAIL_ENABLED=false — включите Email в админке и нажмите «Сохранить»'
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!enabled && smtpConfigured) {
|
||||
this.logger.warn('[EMAIL] EMAIL_ENABLED=false, но SMTP заполнен — отправляем письмо');
|
||||
}
|
||||
|
||||
if (provider !== 'smtp') {
|
||||
throw new BadRequestException(`Неизвестный email-провайдер: ${provider}`);
|
||||
}
|
||||
|
||||
const host = (await this.settings.getValue('EMAIL_SMTP_HOST', '')).trim();
|
||||
const port = await this.settings.getNumber('EMAIL_SMTP_PORT', 587);
|
||||
const secure = await this.settings.getBoolean('EMAIL_SMTP_SECURE', false);
|
||||
const user = (await this.settings.getValue('EMAIL_SMTP_USER', '')).trim();
|
||||
const password = await this.settings.getValue('EMAIL_SMTP_PASSWORD', '');
|
||||
const fromAddress = (await this.settings.getValue('EMAIL_FROM_ADDRESS', '')).trim();
|
||||
const fromName = (await this.settings.getValue('EMAIL_FROM_NAME', '')).trim();
|
||||
const projectName = await this.settings.getValue('PROJECT_NAME', 'MVK ID');
|
||||
|
||||
@@ -96,7 +110,13 @@ export class MessagingService {
|
||||
const provider = (await this.settings.getValue('SMS_PROVIDER', 'smsru')).trim().toLowerCase();
|
||||
|
||||
if (!enabled || provider === 'console') {
|
||||
this.logConsoleFallback('sms', payload);
|
||||
this.logConsoleFallback(
|
||||
'sms',
|
||||
payload,
|
||||
!enabled
|
||||
? 'SMS_ENABLED=false — включите SMS в админке и нажмите «Сохранить»'
|
||||
: 'выбран режим «Только лог» (SMS_PROVIDER=console)'
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -196,10 +216,8 @@ export class MessagingService {
|
||||
`.trim();
|
||||
}
|
||||
|
||||
private logConsoleFallback(channel: MessagingChannel, payload: VerificationPayload) {
|
||||
this.logger.warn(
|
||||
`[${channel.toUpperCase()}] Код для ${payload.target}: ${payload.code} (провайдер отключён — включите EMAIL_ENABLED/SMS_ENABLED в админке)`
|
||||
);
|
||||
private logConsoleFallback(channel: MessagingChannel, payload: VerificationPayload, reason: string) {
|
||||
this.logger.warn(`[${channel.toUpperCase()}] Код для ${payload.target}: ${payload.code} (${reason})`);
|
||||
}
|
||||
|
||||
private maskTarget(target: string, channel: MessagingChannel) {
|
||||
|
||||
Reference in New Issue
Block a user