feat: email auth provider disabled on smtp disable
This commit is contained in:
@@ -367,4 +367,23 @@ export class InfraResolver {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Mutation(() => Boolean, {
|
||||||
|
description: 'Enable or Disable SMTP for sending emails',
|
||||||
|
})
|
||||||
|
@UseGuards(GqlAuthGuard, GqlAdminGuard)
|
||||||
|
async enableAndDisableSMTP(
|
||||||
|
@Args({
|
||||||
|
name: 'status',
|
||||||
|
type: () => ServiceStatus,
|
||||||
|
description: 'Toggle SMTP',
|
||||||
|
})
|
||||||
|
status: ServiceStatus,
|
||||||
|
) {
|
||||||
|
const isUpdated = await this.infraConfigService.enableAndDisableSMTP(
|
||||||
|
status,
|
||||||
|
);
|
||||||
|
if (E.isLeft(isUpdated)) throwErr(isUpdated.left);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -218,6 +218,47 @@ export class InfraConfigService implements OnModuleInit {
|
|||||||
return E.right(isUpdated.right.value === 'true');
|
return E.right(isUpdated.right.value === 'true');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable or Disable SMTP
|
||||||
|
* @param status Status to enable or disable
|
||||||
|
* @returns Either true or an error
|
||||||
|
*/
|
||||||
|
async enableAndDisableSMTP(status: ServiceStatus) {
|
||||||
|
const isUpdated = await this.toggleServiceStatus(
|
||||||
|
InfraConfigEnum.MAILER_SMTP_ENABLE,
|
||||||
|
status,
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
if (E.isLeft(isUpdated)) return E.left(isUpdated.left);
|
||||||
|
|
||||||
|
if (status === ServiceStatus.DISABLE) {
|
||||||
|
this.enableAndDisableSSO([{ provider: AuthProvider.EMAIL, status }]);
|
||||||
|
}
|
||||||
|
return E.right(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable or Disable Service (i.e. ALLOW_AUDIT_LOGS, ALLOW_ANALYTICS_COLLECTION, ALLOW_DOMAIN_WHITELISTING, SITE_PROTECTION)
|
||||||
|
* @param configName Name of the InfraConfigEnum
|
||||||
|
* @param status Status to enable or disable
|
||||||
|
* @param restartEnabled If true, restart the app after updating the InfraConfig
|
||||||
|
* @returns Either true or an error
|
||||||
|
*/
|
||||||
|
async toggleServiceStatus(
|
||||||
|
configName: InfraConfigEnum,
|
||||||
|
status: ServiceStatus,
|
||||||
|
restartEnabled = false,
|
||||||
|
) {
|
||||||
|
const isUpdated = await this.update(
|
||||||
|
configName,
|
||||||
|
status === ServiceStatus.ENABLE ? 'true' : 'false',
|
||||||
|
restartEnabled,
|
||||||
|
);
|
||||||
|
if (E.isLeft(isUpdated)) return E.left(isUpdated.left);
|
||||||
|
|
||||||
|
return E.right(true);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable or Disable SSO for login/signup
|
* Enable or Disable SSO for login/signup
|
||||||
* @param provider Auth Provider to enable or disable
|
* @param provider Auth Provider to enable or disable
|
||||||
|
|||||||
Reference in New Issue
Block a user