Make auth module optional to conditionnaly load auth providers (#518)

* Make auth module optional to conditionnaly load auth providers

* Fixes
This commit is contained in:
Charles Bochet
2023-07-05 15:46:09 +02:00
committed by GitHub
parent 463994df1f
commit 9ea765fcfd
6 changed files with 31 additions and 35 deletions

View File

@ -0,0 +1,18 @@
import { Transform } from 'class-transformer';
export function CastToBoolean() {
return Transform(({ value }: { value: string }) => toBoolean(value));
}
const toBoolean = (value: any) => {
if (typeof value === 'boolean') {
return value;
}
if (['true', 'on', 'yes', '1'].includes(value.toLowerCase())) {
return true;
}
if (['false', 'off', 'no', '0'].includes(value.toLowerCase())) {
return false;
}
return undefined;
};

View File

@ -13,6 +13,7 @@ import { IsDuration } from './decorators/is-duration.decorator';
import { StorageType } from './interfaces/storage.interface';
import { AwsRegion } from './interfaces/aws-region.interface';
import { IsAWSRegion } from './decorators/is-aws-region.decorator';
import { CastToBoolean } from './decorators/cast-to-boolean.decorator';
export class EnvironmentVariables {
// Database
@ -39,7 +40,7 @@ export class EnvironmentVariables {
@IsUrl({ require_tld: false })
FRONT_AUTH_CALLBACK_URL: string;
@Transform(({ value }) => envValueToBoolean(value))
@CastToBoolean()
@IsOptional()
@IsBoolean()
AUTH_GOOGLE_ENABLED?: boolean;
@ -75,27 +76,10 @@ export class EnvironmentVariables {
}
export function validate(config: Record<string, unknown>) {
const validatedConfig = plainToClass(EnvironmentVariables, config, {
enableImplicitConversion: false,
});
const validatedConfig = plainToClass(EnvironmentVariables, config);
const errors = validateSync(validatedConfig, {
skipMissingProperties: false,
});
const errors = validateSync(validatedConfig);
assert(!errors.length, errors.toString());
return validatedConfig;
}
const envValueToBoolean = (value: any) => {
if (typeof value === 'boolean') {
return value;
}
if (['true', 'on', 'yes', '1'].includes(value.toLowerCase())) {
return true;
}
if (['false', 'off', 'no', '0'].includes(value.toLowerCase())) {
return false;
}
return undefined;
};