mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-10-25 10:47:00 +08:00
feat(api): email service (#50637)
Co-authored-by: Naomi Carrigan <nhcarrigan@gmail.com>
This commit is contained in:
co-authored by
Naomi Carrigan
parent
d206d568a4
commit
f3da82518a
+29
-5
@@ -22,9 +22,15 @@ function isAllowedEnv(env: string): env is 'development' | 'production' {
|
||||
return ['development', 'production'].includes(env);
|
||||
}
|
||||
|
||||
function isAllowedProvider(provider: string): provider is 'ses' | 'nodemailer' {
|
||||
return ['ses', 'nodemailer'].includes(provider);
|
||||
}
|
||||
|
||||
assert.ok(process.env.HOME_LOCATION);
|
||||
assert.ok(process.env.FREECODECAMP_NODE_ENV);
|
||||
assert.ok(isAllowedEnv(process.env.FREECODECAMP_NODE_ENV));
|
||||
assert.ok(process.env.EMAIL_PROVIDER);
|
||||
assert.ok(isAllowedProvider(process.env.EMAIL_PROVIDER));
|
||||
assert.ok(process.env.AUTH0_DOMAIN);
|
||||
assert.ok(process.env.AUTH0_AUDIENCE);
|
||||
assert.ok(process.env.API_LOCATION);
|
||||
@@ -34,20 +40,30 @@ assert.ok(process.env.FCC_ENABLE_DEV_LOGIN_MODE);
|
||||
assert.ok(process.env.JWT_SECRET);
|
||||
|
||||
if (process.env.FREECODECAMP_NODE_ENV !== 'development') {
|
||||
assert.ok(process.env.SES_ID);
|
||||
assert.ok(process.env.SES_SECRET);
|
||||
assert.notEqual(
|
||||
process.env.SES_SECRET,
|
||||
'ses_secret_from_aws',
|
||||
'The SES secret should be changed from the default value.'
|
||||
);
|
||||
assert.ok(process.env.SES_REGION);
|
||||
assert.ok(process.env.COOKIE_DOMAIN);
|
||||
assert.ok(process.env.PORT);
|
||||
assert.ok(process.env.MONGOHQ_URL);
|
||||
assert.ok(process.env.SENTRY_DSN);
|
||||
assert.notEqual(
|
||||
process.env.JWT_SECRET,
|
||||
'a_jwt_secret',
|
||||
'The JWT secret should be changed from the default value.'
|
||||
);
|
||||
// The following values can exist in development, but production-like
|
||||
// environments need to override the defaults.
|
||||
assert.notEqual(
|
||||
process.env.SENTRY_DSN,
|
||||
'dsn_from_sentry_dashboard',
|
||||
`The DSN from Sentry's dashboard should be used.`
|
||||
);
|
||||
assert.notEqual(
|
||||
process.env.JWT_SECRET,
|
||||
'a_jwt_secret',
|
||||
'The JWT secret should be changed from the default value.'
|
||||
);
|
||||
assert.notEqual(
|
||||
process.env.SESSION_SECRET,
|
||||
'a_thirty_two_plus_character_session_secret',
|
||||
@@ -57,6 +73,10 @@ if (process.env.FREECODECAMP_NODE_ENV !== 'development') {
|
||||
process.env.FCC_ENABLE_DEV_LOGIN_MODE !== 'true',
|
||||
'Dev login mode MUST be disabled in production.'
|
||||
);
|
||||
assert.ok(
|
||||
process.env.EMAIL_PROVIDER === 'ses',
|
||||
'SES MUST be used in production.'
|
||||
);
|
||||
}
|
||||
|
||||
export const HOME_LOCATION = process.env.HOME_LOCATION;
|
||||
@@ -79,3 +99,7 @@ export const SENTRY_DSN =
|
||||
: process.env.SENTRY_DSN;
|
||||
export const COOKIE_DOMAIN = process.env.COOKIE_DOMAIN || 'localhost';
|
||||
export const JWT_SECRET = process.env.JWT_SECRET;
|
||||
export const SES_ID = process.env.SES_ID;
|
||||
export const SES_SECRET = process.env.SES_SECRET;
|
||||
export const SES_REGION = process.env.SES_REGION;
|
||||
export const EMAIL_PROVIDER = process.env.EMAIL_PROVIDER;
|
||||
|
||||
Reference in New Issue
Block a user