mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-15 13:47:33 +01:00
Make env vars more palatable for containerization (#10895)
* refactor(env-vars): remove object/colon syntax * fix(tests): correct config expectations
This commit is contained in:
@@ -1,116 +1,81 @@
|
|||||||
{
|
{
|
||||||
"PORT":3000,
|
"ADMIN_EMAIL": "you@example.com",
|
||||||
"ENABLE_CONSOLE_LOGS_IN_PROD":"false",
|
"AMAZON_PAYMENTS_CLIENT_ID": "CLIENT_ID",
|
||||||
"IP":"0.0.0.0",
|
"AMAZON_PAYMENTS_MODE": "sandbox",
|
||||||
"WEB_CONCURRENCY":1,
|
"AMAZON_PAYMENTS_MWS_KEY": "MWS_KEY",
|
||||||
"BASE_URL":"http://localhost:3000",
|
"AMAZON_PAYMENTS_MWS_SECRET": "MWS_SECRET",
|
||||||
"FACEBOOK_KEY":"123456789012345",
|
"AMAZON_PAYMENTS_SELLER_ID": "SELLER_ID",
|
||||||
"FACEBOOK_SECRET":"aaaabbbbccccddddeeeeffff00001111",
|
"AMPLITUDE_KEY": "AMPLITUDE_KEY",
|
||||||
"GOOGLE_CLIENT_ID":"123456789012345",
|
"AMPLITUDE_SECRET": "AMPLITUDE_SECRET",
|
||||||
"GOOGLE_CLIENT_SECRET":"aaaabbbbccccddddeeeeffff00001111",
|
"BASE_URL": "http://localhost:3000",
|
||||||
"PLAY_API": {
|
"CRON_SAFE_MODE": "false",
|
||||||
"CLIENT_ID": "aaaabbbbccccddddeeeeffff00001111",
|
"CRON_SEMI_SAFE_MODE": "false",
|
||||||
"CLIENT_SECRET": "aaaabbbbccccddddeeeeffff00001111",
|
"DISABLE_REQUEST_LOGGING": "true",
|
||||||
"ACCESS_TOKEN":"aaaabbbbccccddddeeeeffff00001111",
|
"EMAILS_COMMUNITY_MANAGER_EMAIL": "admin@habitica.com",
|
||||||
"REFRESH_TOKEN":"aaaabbbbccccddddeeeeffff00001111"
|
"EMAILS_PRESS_ENQUIRY_EMAIL": "admin@habitica.com",
|
||||||
},
|
"EMAILS_TECH_ASSISTANCE_EMAIL": "admin@habitica.com",
|
||||||
"NODE_DB_URI":"mongodb://localhost/habitrpg",
|
"EMAIL_SERVER_AUTH_PASSWORD": "password",
|
||||||
"TEST_DB_URI":"mongodb://localhost/habitrpg_test",
|
"EMAIL_SERVER_AUTH_USER": "user",
|
||||||
"NODE_ENV":"development",
|
"EMAIL_SERVER_URL": "http://example.com",
|
||||||
"ENABLE_CONSOLE_LOGS_IN_TEST": "false",
|
"ENABLE_CONSOLE_LOGS_IN_PROD": "false",
|
||||||
"CRON_SAFE_MODE":"false",
|
"ENABLE_CONSOLE_LOGS_IN_TEST": "false",
|
||||||
"CRON_SEMI_SAFE_MODE":"false",
|
"FACEBOOK_KEY": "123456789012345",
|
||||||
"MAINTENANCE_MODE": "false",
|
"FACEBOOK_SECRET": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
"SESSION_SECRET":"YOUR SECRET HERE",
|
"FLAG_REPORT_EMAIL": "email@example.com, email2@example.com",
|
||||||
"SESSION_SECRET_KEY": "1234567891234567891234567891234567891234567891234567891234567891",
|
"GA_ID": "GA_ID",
|
||||||
"SESSION_SECRET_IV": "12345678912345678912345678912345",
|
"GOOGLE_CLIENT_ID": "123456789012345",
|
||||||
"ADMIN_EMAIL": "you@example.com",
|
"GOOGLE_CLIENT_SECRET": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
"SMTP_USER":"user@example.com",
|
"IAP_GOOGLE_KEYDIR": "/path/to/google/public/key/dir/",
|
||||||
"SMTP_PASS":"password",
|
"IGNORE_REDIRECT": "true",
|
||||||
"SMTP_SERVICE":"Gmail",
|
"ITUNES_SHARED_SECRET": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
"SMTP_HOST":"example.com",
|
"LOGGLY_CLIENT_TOKEN": "token",
|
||||||
"SMTP_PORT": 587,
|
"LOGGLY_SUBDOMAIN": "example-subdomain",
|
||||||
"SMTP_TLS": true,
|
"LOGGLY_TOKEN": "example-token",
|
||||||
"STRIPE_API_KEY":"aaaabbbbccccddddeeeeffff00001111",
|
"MAINTENANCE_MODE": "false",
|
||||||
"STRIPE_PUB_KEY":"22223333444455556666777788889999",
|
"NODE_DB_URI": "mongodb://localhost/habitrpg",
|
||||||
"NEW_RELIC_LICENSE_KEY":"NEW_RELIC_LICENSE_KEY",
|
"NODE_ENV": "development",
|
||||||
"NEW_RELIC_NO_CONFIG_FILE":"true",
|
"PATH": "bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin",
|
||||||
"NEW_RELIC_APPLICATION_ID":"NEW_RELIC_APPLICATION_ID",
|
"PAYPAL_BILLING_PLANS_basic_12mo": "basic_12mo",
|
||||||
"NEW_RELIC_API_KEY":"NEW_RELIC_API_KEY",
|
"PAYPAL_BILLING_PLANS_basic_3mo": "basic_3mo",
|
||||||
"GA_ID": "GA_ID",
|
"PAYPAL_BILLING_PLANS_basic_6mo": "basic_6mo",
|
||||||
"AMPLITUDE_KEY": "AMPLITUDE_KEY",
|
"PAYPAL_BILLING_PLANS_basic_earned": "basic_earned",
|
||||||
"AMPLITUDE_SECRET": "AMPLITUDE_SECRET",
|
"PAYPAL_BILLING_PLANS_google_6mo": "google_6mo",
|
||||||
"AMAZON_PAYMENTS": {
|
"PAYPAL_CLIENT_ID": "client_id",
|
||||||
"SELLER_ID": "SELLER_ID",
|
"PAYPAL_CLIENT_SECRET": "client_secret",
|
||||||
"CLIENT_ID": "CLIENT_ID",
|
"PAYPAL_EXPERIENCE_PROFILE_ID": "xp_profile_id",
|
||||||
"MWS_KEY": "",
|
"PAYPAL_MODE": "sandbox",
|
||||||
"MWS_SECRET": "",
|
"PLAY_API_ACCESS_TOKEN": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
"MODE": "sandbox"
|
"PLAY_API_CLIENT_ID": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
},
|
"PLAY_API_CLIENT_SECRET": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
"FLAG_REPORT_EMAIL": "email@mod.com,email2@mod.com",
|
"PLAY_API_REFRESH_TOKEN": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
"EMAIL_SERVER": {
|
"PORT": 3000,
|
||||||
"url": "http://example.com",
|
"PUSH_CONFIGS_APN_ENABLED": "false",
|
||||||
"authUser": "user",
|
"PUSH_CONFIGS_APN_KEY": "xxxxxxxxxx",
|
||||||
"authPassword": "password"
|
"PUSH_CONFIGS_APN_KEY_ID": "xxxxxxxxxx",
|
||||||
},
|
"PUSH_CONFIGS_APN_TEAM_ID": "aaabbbcccd",
|
||||||
"S3":{
|
"PUSH_CONFIGS_FCM_SERVER_API_KEY": "aaabbbcccd",
|
||||||
"bucket":"bucket",
|
"S3_ACCESS_KEY_ID": "accessKeyId",
|
||||||
"accessKeyId":"accessKeyId",
|
"S3_BUCKET": "bucket",
|
||||||
"secretAccessKey":"secretAccessKey"
|
"S3_SECRET_ACCESS_KEY": "secretAccessKey",
|
||||||
},
|
"SESSION_SECRET": "YOUR SECRET HERE",
|
||||||
"SLACK_URL": "https://hooks.slack.com/services/some-url",
|
"SESSION_SECRET_IV": "12345678912345678912345678912345",
|
||||||
"TRANSIFEX_SLACK_CHANNEL": "transifex",
|
"SESSION_SECRET_KEY": "1234567891234567891234567891234567891234567891234567891234567891",
|
||||||
"PAYPAL":{
|
"SITE_HTTP_AUTH_ENABLED": "false",
|
||||||
"billing_plans": {
|
"SITE_HTTP_AUTH_PASSWORD": "password",
|
||||||
"basic_earned":"basic_earned",
|
"SITE_HTTP_AUTH_USERNAME": "admin",
|
||||||
"basic_3mo":"basic_3mo",
|
"SLACK_FLAGGING_FOOTER_LINK": "https://habitrpg.github.io/flag-o-rama/",
|
||||||
"basic_6mo":"basic_6mo",
|
"SLACK_FLAGGING_URL": "https://hooks.slack.com/services/id/id/id",
|
||||||
"google_6mo":"google_6mo",
|
"SLACK_SUBSCRIPTIONS_URL": "https://hooks.slack.com/services/id/id/id",
|
||||||
"basic_12mo":"basic_12mo"
|
"SLACK_URL": "https://hooks.slack.com/services/some-url",
|
||||||
},
|
"SMTP_HOST": "example.com",
|
||||||
"mode":"sandbox",
|
"SMTP_PASS": "password",
|
||||||
"client_id":"client_id",
|
"SMTP_PORT": 587,
|
||||||
"client_secret":"client_secret",
|
"SMTP_SERVICE": "Gmail",
|
||||||
"experience_profile_id": ""
|
"SMTP_TLS": "true",
|
||||||
},
|
"SMTP_USER": "user@example.com",
|
||||||
"IAP_GOOGLE_KEYDIR": "/path/to/google/public/key/dir/",
|
"STRIPE_API_KEY": "aaaabbbbccccddddeeeeffff00001111",
|
||||||
"LOGGLY_TOKEN": "token",
|
"STRIPE_PUB_KEY": "22223333444455556666777788889999",
|
||||||
"LOGGLY_CLIENT_TOKEN": "token",
|
"TEST_DB_URI": "mongodb://localhost/habitrpg_test",
|
||||||
"LOGGLY_ACCOUNT": "account",
|
"TRANSIFEX_SLACK_CHANNEL": "transifex",
|
||||||
"PUSH_CONFIGS": {
|
"WEB_CONCURRENCY": 1
|
||||||
"GCM_SERVER_API_KEY": "",
|
|
||||||
"APN_ENABLED": "false",
|
|
||||||
"APN_KEY_ID": "xxxxxxxxxx",
|
|
||||||
"APN_KEY": "xxxxxxxxxx",
|
|
||||||
"APN_TEAM_ID": "aaabbbcccd",
|
|
||||||
"FCM_SERVER_API_KEY": ""
|
|
||||||
},
|
|
||||||
"SITE_HTTP_AUTH": {
|
|
||||||
"ENABLED": "false",
|
|
||||||
"USERNAME": "admin",
|
|
||||||
"PASSWORD": "password"
|
|
||||||
},
|
|
||||||
"SLACK": {
|
|
||||||
"FLAGGING_URL": "https://hooks.slack.com/services/id/id/id",
|
|
||||||
"FLAGGING_FOOTER_LINK": "https://habitrpg.github.io/flag-o-rama/",
|
|
||||||
"SUBSCRIPTIONS_URL": "https://hooks.slack.com/services/id/id/id"
|
|
||||||
},
|
|
||||||
"ITUNES_SHARED_SECRET": "aaaabbbbccccddddeeeeffff00001111",
|
|
||||||
"EMAILS" : {
|
|
||||||
"COMMUNITY_MANAGER_EMAIL" : "admin@habitica.com",
|
|
||||||
"TECH_ASSISTANCE_EMAIL" : "admin@habitica.com",
|
|
||||||
"PRESS_ENQUIRY_EMAIL" : "admin@habitica.com"
|
|
||||||
},
|
|
||||||
"LOGGLY" : {
|
|
||||||
"TOKEN" : "example-token",
|
|
||||||
"SUBDOMAIN" : "exmaple-subdomain"
|
|
||||||
},
|
|
||||||
"KAFKA": {
|
|
||||||
"GROUP_ID": "",
|
|
||||||
"CLOUDKARAFKA_BROKERS": "",
|
|
||||||
"CLOUDKARAFKA_USERNAME": "",
|
|
||||||
"CLOUDKARAFKA_PASSWORD": "",
|
|
||||||
"CLOUDKARAFKA_TOPIC_PREFIX": ""
|
|
||||||
},
|
|
||||||
"MIGRATION_CONNECT_STRING": "mongodb://localhost:27017/habitrpg?auto_reconnect=true"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,28 +12,27 @@ const nconf = require('nconf');
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const paypal = require('paypal-rest-sdk');
|
const paypal = require('paypal-rest-sdk');
|
||||||
const blocks = require('../website/common').content.subscriptionBlocks;
|
const blocks = require('../website/common').content.subscriptionBlocks;
|
||||||
const live = nconf.get('PAYPAL:mode') === 'live';
|
const live = nconf.get('PAYPAL_MODE') === 'live';
|
||||||
|
|
||||||
nconf.argv().env().file('user', path.join(path.resolve(__dirname, '../config.json')));
|
nconf.argv().env().file('user', path.join(path.resolve(__dirname, '../config.json')));
|
||||||
|
|
||||||
let OP = 'create'; // list create update remove
|
let OP = 'create'; // list get update create create-webprofile
|
||||||
|
|
||||||
paypal.configure({
|
paypal.configure({
|
||||||
mode: nconf.get('PAYPAL:mode'), // sandbox or live
|
mode: nconf.get('PAYPAL_MODE'), // sandbox or live
|
||||||
client_id: nconf.get('PAYPAL:client_id'),
|
client_id: nconf.get('PAYPAL_CLIENT_ID'),
|
||||||
client_secret: nconf.get('PAYPAL:client_secret'),
|
client_secret: nconf.get('PAYPAL_CLIENT_SECRET'),
|
||||||
});
|
});
|
||||||
|
|
||||||
// https://developer.paypal.com/docs/api/#billing-plans-and-agreements
|
// https://developer.paypal.com/docs/api/#billing-plans-and-agreements
|
||||||
let billingPlanTitle = 'Habitica Subscription';
|
let billingPlanTitle = 'Habitica Subscription';
|
||||||
let billingPlanAttributes = {
|
let billingPlanAttributes = {
|
||||||
name: billingPlanTitle,
|
|
||||||
description: billingPlanTitle,
|
description: billingPlanTitle,
|
||||||
type: 'INFINITE',
|
type: 'INFINITE',
|
||||||
merchant_preferences: {
|
merchant_preferences: {
|
||||||
auto_bill_amount: 'yes',
|
auto_bill_amount: 'yes',
|
||||||
cancel_url: live ? 'https://habitica.com' : 'http://localhost:3000',
|
cancel_url: live ? 'https://habitica.com' : 'http://localhost:3000',
|
||||||
return_url: `${live ? 'https://habitica.com' : 'http://localhost:3000' }/paypal/subscribe/success`,
|
return_url: `${live ? 'https://habitica.com' : 'http://localhost:3000'}/paypal/subscribe/success`,
|
||||||
},
|
},
|
||||||
payment_definitions: [{
|
payment_definitions: [{
|
||||||
type: 'REGULAR',
|
type: 'REGULAR',
|
||||||
@@ -45,7 +44,7 @@ let billingPlanAttributes = {
|
|||||||
_.each(blocks, (block) => {
|
_.each(blocks, (block) => {
|
||||||
block.definition = _.cloneDeep(billingPlanAttributes);
|
block.definition = _.cloneDeep(billingPlanAttributes);
|
||||||
_.merge(block.definition.payment_definitions[0], {
|
_.merge(block.definition.payment_definitions[0], {
|
||||||
name: `${billingPlanTitle } ($${block.price} every ${block.months} months, recurring)`,
|
name: `${billingPlanTitle} ($${block.price} every ${block.months} months, recurring)`,
|
||||||
frequency_interval: `${block.months}`,
|
frequency_interval: `${block.months}`,
|
||||||
amount: {
|
amount: {
|
||||||
currency: 'USD',
|
currency: 'USD',
|
||||||
@@ -63,7 +62,7 @@ switch (OP) {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'get':
|
case 'get':
|
||||||
paypal.billingPlan.get(nconf.get('PAYPAL:billing_plans:12'), (err, plan) => {
|
paypal.billingPlan.get(nconf.get('PAYPAL_BILLING_PLANS_basic_12mo'), (err, plan) => {
|
||||||
console.log({err, plan});
|
console.log({err, plan});
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
@@ -75,7 +74,7 @@ switch (OP) {
|
|||||||
cancel_url: 'https://habitica.com',
|
cancel_url: 'https://habitica.com',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
paypal.billingPlan.update(nconf.get('PAYPAL:billing_plans:12'), updatePayload, (err, res) => {
|
paypal.billingPlan.update(nconf.get('PAYPAL_BILLING_PLANS_basic_12mo'), updatePayload, (err, res) => {
|
||||||
console.log({err, plan: res});
|
console.log({err, plan: res});
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
@@ -101,9 +100,6 @@ switch (OP) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'remove': break;
|
|
||||||
|
|
||||||
case 'create-webprofile':
|
case 'create-webprofile':
|
||||||
let webexpinfo = {
|
let webexpinfo = {
|
||||||
name: 'HabiticaProfile',
|
name: 'HabiticaProfile',
|
||||||
@@ -116,4 +112,4 @@ switch (OP) {
|
|||||||
console.log(error, result);
|
console.log(error, result);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ describe('checkout', () => {
|
|||||||
|
|
||||||
function getPaypalCreateOptions (description, amount) {
|
function getPaypalCreateOptions (description, amount) {
|
||||||
return {
|
return {
|
||||||
|
experience_profile_id: 'xp_profile_id',
|
||||||
intent: 'sale',
|
intent: 'sale',
|
||||||
payer: { payment_method: 'Paypal' },
|
payer: { payment_method: 'Paypal' },
|
||||||
redirect_urls: {
|
redirect_urls: {
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ describe('slack', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('noops if no flagging url is provided', () => {
|
it('noops if no flagging url is provided', () => {
|
||||||
sandbox.stub(nconf, 'get').withArgs('SLACK:FLAGGING_URL').returns('');
|
sandbox.stub(nconf, 'get').withArgs('SLACK_FLAGGING_URL').returns('');
|
||||||
sandbox.stub(logger, 'error');
|
sandbox.stub(logger, 'error');
|
||||||
let reRequiredSlack = requireAgain('../../../../website/server/libs/slack');
|
let reRequiredSlack = requireAgain('../../../../website/server/libs/slack');
|
||||||
|
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ describe('POST /groups/:id/chat/:id/clearflags', () => {
|
|||||||
.to.eventually.be.rejected.and.eql({
|
.to.eventually.be.rejected.and.eql({
|
||||||
code: 400,
|
code: 400,
|
||||||
error: 'BadRequest',
|
error: 'BadRequest',
|
||||||
message: t('messageCannotFlagSystemMessages', {communityManagerEmail: config.EMAILS.COMMUNITY_MANAGER_EMAIL}),
|
message: t('messageCannotFlagSystemMessages', {communityManagerEmail: config.EMAILS_COMMUNITY_MANAGER_EMAIL}),
|
||||||
});
|
});
|
||||||
// let messages = await members[0].get(`/groups/${group._id}/chat`);
|
// let messages = await members[0].get(`/groups/${group._id}/chat`);
|
||||||
// expect(messages[0].id).to.eql(skillMsg.id);
|
// expect(messages[0].id).to.eql(skillMsg.id);
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ describe('Post /groups/:groupId/invite', () => {
|
|||||||
.to.eventually.be.rejected.and.eql({
|
.to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('inviteLimitReached', {techAssistanceEmail: nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL')}),
|
message: t('inviteLimitReached', {techAssistanceEmail: nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL')}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ describe('POST /user/auth/local/login', () => {
|
|||||||
})).to.eventually.be.rejected.and.eql({
|
})).to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('accountSuspended', { communityManagerEmail: nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL'), userId: user._id }),
|
message: t('accountSuspended', { communityManagerEmail: nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL'), userId: user._id }),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ describe('PUT /user/auth/update-email', () => {
|
|||||||
})).to.eventually.be.rejected.and.eql({
|
})).to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('cannotFulfillReq', { techAssistanceEmail: nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL') }),
|
message: t('cannotFulfillReq', { techAssistanceEmail: nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL') }),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ setupNconf(configFile);
|
|||||||
// @TODO: Do we need? const CLIENT_VARS = ['language', 'isStaticPage', 'availableLanguages', 'translations',
|
// @TODO: Do we need? const CLIENT_VARS = ['language', 'isStaticPage', 'availableLanguages', 'translations',
|
||||||
// 'FACEBOOK_KEY', 'GOOGLE_CLIENT_ID', 'NODE_ENV', 'BASE_URL', 'GA_ID',
|
// 'FACEBOOK_KEY', 'GOOGLE_CLIENT_ID', 'NODE_ENV', 'BASE_URL', 'GA_ID',
|
||||||
// 'AMAZON_PAYMENTS', 'STRIPE_PUB_KEY', 'AMPLITUDE_KEY',
|
// 'AMAZON_PAYMENTS', 'STRIPE_PUB_KEY', 'AMPLITUDE_KEY',
|
||||||
// 'worldDmg', 'mods', 'IS_MOBILE', 'PUSHER:KEY', 'PUSHER:ENABLED'];
|
// 'worldDmg', 'mods', 'IS_MOBILE'];
|
||||||
|
|
||||||
const AMAZON_SELLER_ID = nconf.get('AMAZON_PAYMENTS:SELLER_ID') || nconf.get('AMAZON_PAYMENTS_SELLER_ID');
|
const AMAZON_SELLER_ID = nconf.get('AMAZON_PAYMENTS_SELLER_ID');
|
||||||
const AMAZON_CLIENT_ID = nconf.get('AMAZON_PAYMENTS:CLIENT_ID') || nconf.get('AMAZON_PAYMENTS_CLIENT_ID');
|
const AMAZON_CLIENT_ID = nconf.get('AMAZON_PAYMENTS_CLIENT_ID');
|
||||||
const AMAZON_MODE = nconf.get('AMAZON_PAYMENTS:MODE') || nconf.get('AMAZON_PAYMENTS_MODE');
|
const AMAZON_MODE = nconf.get('AMAZON_PAYMENTS_MODE');
|
||||||
|
|
||||||
let env = {
|
let env = {
|
||||||
NODE_ENV: '"production"',
|
NODE_ENV: '"production"',
|
||||||
@@ -30,13 +30,13 @@ let env = {
|
|||||||
MODE: `"${AMAZON_MODE}"`,
|
MODE: `"${AMAZON_MODE}"`,
|
||||||
},
|
},
|
||||||
EMAILS: {
|
EMAILS: {
|
||||||
COMMUNITY_MANAGER_EMAIL: `"${nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL')}"`,
|
COMMUNITY_MANAGER_EMAIL: `"${nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL')}"`,
|
||||||
TECH_ASSISTANCE_EMAIL: `"${nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL')}"`,
|
TECH_ASSISTANCE_EMAIL: `"${nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL')}"`,
|
||||||
PRESS_ENQUIRY_EMAIL: `"${nconf.get('EMAILS:PRESS_ENQUIRY_EMAIL')}"`,
|
PRESS_ENQUIRY_EMAIL: `"${nconf.get('EMAILS_PRESS_ENQUIRY_EMAIL')}"`,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY GOOGLE_CLIENT_ID AMPLITUDE_KEY PUSHER:KEY PUSHER:ENABLED LOGGLY_CLIENT_TOKEN'
|
'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY GOOGLE_CLIENT_ID AMPLITUDE_KEY LOGGLY_CLIENT_TOKEN'
|
||||||
.split(' ')
|
.split(' ')
|
||||||
.forEach(key => {
|
.forEach(key => {
|
||||||
env[key] = `"${nconf.get(key)}"`;
|
env[key] = `"${nconf.get(key)}"`;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import {
|
|||||||
import {verifyUsername} from '../../libs/user/validation';
|
import {verifyUsername} from '../../libs/user/validation';
|
||||||
|
|
||||||
const BASE_URL = nconf.get('BASE_URL');
|
const BASE_URL = nconf.get('BASE_URL');
|
||||||
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL');
|
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL');
|
||||||
|
|
||||||
let api = {};
|
let api = {};
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import shared from '../../../common';
|
|||||||
import apiError from '../../libs/apiError';
|
import apiError from '../../libs/apiError';
|
||||||
|
|
||||||
const MAX_EMAIL_INVITES_BY_USER = 200;
|
const MAX_EMAIL_INVITES_BY_USER = 200;
|
||||||
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL');
|
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @apiDefine GroupBodyInvalid
|
* @apiDefine GroupBodyInvalid
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import * as userLib from '../../libs/user';
|
|||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import get from 'lodash/get';
|
import get from 'lodash/get';
|
||||||
|
|
||||||
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL');
|
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL');
|
||||||
const DELETE_CONFIRMATION = 'DELETE';
|
const DELETE_CONFIRMATION = 'DELETE';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import {
|
|||||||
S3,
|
S3,
|
||||||
} from '../../libs/aws';
|
} from '../../libs/aws';
|
||||||
|
|
||||||
const S3_BUCKET = nconf.get('S3:bucket');
|
const S3_BUCKET = nconf.get('S3_BUCKET');
|
||||||
|
|
||||||
const BASE_URL = nconf.get('BASE_URL');
|
const BASE_URL = nconf.get('BASE_URL');
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import shortid from 'short-uuid';
|
|||||||
|
|
||||||
import { NotAuthorized } from '../errors';
|
import { NotAuthorized } from '../errors';
|
||||||
|
|
||||||
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL');
|
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL');
|
||||||
const translator = shortid('0123456789abcdefghijklmnopqrstuvwxyz');
|
const translator = shortid('0123456789abcdefghijklmnopqrstuvwxyz');
|
||||||
|
|
||||||
function generateUsername () {
|
function generateUsername () {
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ import AWS from 'aws-sdk';
|
|||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
|
|
||||||
export const S3 = new AWS.S3({
|
export const S3 = new AWS.S3({
|
||||||
accessKeyId: nconf.get('S3:accessKeyId'),
|
accessKeyId: nconf.get('S3_ACCESS_KEY_ID'),
|
||||||
secretAccessKey: nconf.get('S3:secretAccessKey'),
|
secretAccessKey: nconf.get('S3_SECRET_ACCESS_KEY'),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { model as Group } from '../../models/group';
|
|||||||
import { chatModel as Chat } from '../../models/message';
|
import { chatModel as Chat } from '../../models/message';
|
||||||
import apiError from '../apiError';
|
import apiError from '../apiError';
|
||||||
|
|
||||||
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL');
|
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL');
|
||||||
const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email) => {
|
const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email) => {
|
||||||
return { email, canSend: true };
|
return { email, canSend: true };
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import common from '../../common';
|
|||||||
|
|
||||||
const IS_PROD = nconf.get('IS_PROD');
|
const IS_PROD = nconf.get('IS_PROD');
|
||||||
const EMAIL_SERVER = {
|
const EMAIL_SERVER = {
|
||||||
url: nconf.get('EMAIL_SERVER:url'),
|
url: nconf.get('EMAIL_SERVER_URL'),
|
||||||
auth: {
|
auth: {
|
||||||
user: nconf.get('EMAIL_SERVER:authUser'),
|
user: nconf.get('EMAIL_SERVER_AUTH_USER'),
|
||||||
password: nconf.get('EMAIL_SERVER:authPassword'),
|
password: nconf.get('EMAIL_SERVER_AUTH_PASSWORD'),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const BASE_URL = nconf.get('BASE_URL');
|
const BASE_URL = nconf.get('BASE_URL');
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ import iap from 'in-app-purchase';
|
|||||||
iap.config({
|
iap.config({
|
||||||
// This is the path to the directory containing iap-sanbox/iap-live files
|
// This is the path to the directory containing iap-sanbox/iap-live files
|
||||||
googlePublicKeyPath: nconf.get('IAP_GOOGLE_KEYDIR'),
|
googlePublicKeyPath: nconf.get('IAP_GOOGLE_KEYDIR'),
|
||||||
googleAccToken: nconf.get('PLAY_API:ACCESS_TOKEN'),
|
googleAccToken: nconf.get('PLAY_API_ACCESS_TOKEN'),
|
||||||
googleRefToken: nconf.get('PLAY_API:REFRESH_TOKEN'),
|
googleRefToken: nconf.get('PLAY_API_REFRESH_TOKEN'),
|
||||||
googleClientID: nconf.get('PLAY_API:CLIENT_ID'),
|
googleClientID: nconf.get('PLAY_API_CLIENT_ID'),
|
||||||
googleClientSecret: nconf.get('PLAY_API:CLIENT_SECRET'),
|
googleClientSecret: nconf.get('PLAY_API_CLIENT_SECRET'),
|
||||||
applePassword: nconf.get('ITUNES_SHARED_SECRET'),
|
applePassword: nconf.get('ITUNES_SHARED_SECRET'),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ if (IS_PROD) {
|
|||||||
prettyPrint: false,
|
prettyPrint: false,
|
||||||
});
|
});
|
||||||
logger.add(winston.transports.Loggly, {
|
logger.add(winston.transports.Loggly, {
|
||||||
inputToken: nconf.get('LOGGLY:TOKEN'),
|
inputToken: nconf.get('LOGGLY_TOKEN'),
|
||||||
subdomain: nconf.get('LOGGLY:SUBDOMAIN'),
|
subdomain: nconf.get('LOGGLY_SUBDOMAIN'),
|
||||||
tags: ['Winston-NodeJS'],
|
tags: ['Winston-NodeJS'],
|
||||||
json: true,
|
json: true,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ import { model as Coupon } from '../../models/coupon';
|
|||||||
// TODO better handling of errors
|
// TODO better handling of errors
|
||||||
|
|
||||||
const i18n = common.i18n;
|
const i18n = common.i18n;
|
||||||
const IS_SANDBOX = nconf.get('AMAZON_PAYMENTS:MODE') === 'sandbox';
|
const IS_SANDBOX = nconf.get('AMAZON_PAYMENTS_MODE') === 'sandbox';
|
||||||
|
|
||||||
let amzPayment = amazonPayments.connect({
|
let amzPayment = amazonPayments.connect({
|
||||||
environment: amazonPayments.Environment[IS_SANDBOX ? 'Sandbox' : 'Production'],
|
environment: amazonPayments.Environment[IS_SANDBOX ? 'Sandbox' : 'Production'],
|
||||||
sellerId: nconf.get('AMAZON_PAYMENTS:SELLER_ID'),
|
sellerId: nconf.get('AMAZON_PAYMENTS_SELLER_ID'),
|
||||||
mwsAccessKey: nconf.get('AMAZON_PAYMENTS:MWS_KEY'),
|
mwsAccessKey: nconf.get('AMAZON_PAYMENTS_MWS_KEY'),
|
||||||
mwsSecretKey: nconf.get('AMAZON_PAYMENTS:MWS_SECRET'),
|
mwsSecretKey: nconf.get('AMAZON_PAYMENTS_MWS_SECRET'),
|
||||||
clientId: nconf.get('AMAZON_PAYMENTS:CLIENT_ID'),
|
clientId: nconf.get('AMAZON_PAYMENTS_CLIENT_ID'),
|
||||||
});
|
});
|
||||||
|
|
||||||
let api = {};
|
let api = {};
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
sendTxn as txnEmail,
|
sendTxn as txnEmail,
|
||||||
} from '../email';
|
} from '../email';
|
||||||
|
|
||||||
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL');
|
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL');
|
||||||
const JOINED_GROUP_PLAN = 'joined group plan';
|
const JOINED_GROUP_PLAN = 'joined group plan';
|
||||||
|
|
||||||
function _dateDiff (earlyDate, lateDate) {
|
function _dateDiff (earlyDate, lateDate) {
|
||||||
|
|||||||
@@ -28,16 +28,16 @@ const i18n = shared.i18n;
|
|||||||
// a web interface for billing-plan creation), see ./paypalBillingSetup.js for how. After the billing plan is created
|
// a web interface for billing-plan creation), see ./paypalBillingSetup.js for how. After the billing plan is created
|
||||||
// there, get it's plan.id and store it in config.json
|
// there, get it's plan.id and store it in config.json
|
||||||
_.each(shared.content.subscriptionBlocks, (block) => {
|
_.each(shared.content.subscriptionBlocks, (block) => {
|
||||||
block.paypalKey = nconf.get(`PAYPAL:billing_plans:${block.key}`);
|
block.paypalKey = nconf.get(`PAYPAL_BILLING_PLANS_${block.key}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
paypal.configure({
|
paypal.configure({
|
||||||
mode: nconf.get('PAYPAL:mode'), // sandbox or live
|
mode: nconf.get('PAYPAL_MODE'), // sandbox or live
|
||||||
client_id: nconf.get('PAYPAL:client_id'),
|
client_id: nconf.get('PAYPAL_CLIENT_ID'),
|
||||||
client_secret: nconf.get('PAYPAL:client_secret'),
|
client_secret: nconf.get('PAYPAL_CLIENT_SECRET'),
|
||||||
});
|
});
|
||||||
|
|
||||||
let experienceProfileId = nconf.get('PAYPAL:experience_profile_id');
|
let experienceProfileId = nconf.get('PAYPAL_EXPERIENCE_PROFILE_ID');
|
||||||
|
|
||||||
// TODO better handling of errors
|
// TODO better handling of errors
|
||||||
// @TODO: Create constants
|
// @TODO: Create constants
|
||||||
|
|||||||
@@ -4,20 +4,20 @@ import apn from 'apn';
|
|||||||
import logger from './logger';
|
import logger from './logger';
|
||||||
import gcmLib from 'node-gcm'; // works with FCM notifications too
|
import gcmLib from 'node-gcm'; // works with FCM notifications too
|
||||||
|
|
||||||
const FCM_API_KEY = nconf.get('PUSH_CONFIGS:FCM_SERVER_API_KEY');
|
const FCM_API_KEY = nconf.get('PUSH_CONFIGS_FCM_SERVER_API_KEY');
|
||||||
|
|
||||||
const fcmSender = FCM_API_KEY ? new gcmLib.Sender(FCM_API_KEY) : undefined;
|
const fcmSender = FCM_API_KEY ? new gcmLib.Sender(FCM_API_KEY) : undefined;
|
||||||
|
|
||||||
let apnProvider;
|
let apnProvider;
|
||||||
// Load APN certificate and key from S3
|
// Load APN certificate and key from S3
|
||||||
const APN_ENABLED = nconf.get('PUSH_CONFIGS:APN_ENABLED') === 'true';
|
const APN_ENABLED = nconf.get('PUSH_CONFIGS_APN_ENABLED') === 'true';
|
||||||
|
|
||||||
if (APN_ENABLED) {
|
if (APN_ENABLED) {
|
||||||
apnProvider = APN_ENABLED ? new apn.Provider({
|
apnProvider = APN_ENABLED ? new apn.Provider({
|
||||||
token: {
|
token: {
|
||||||
key: nconf.get('PUSH_CONFIGS:APN_KEY'),
|
key: nconf.get('PUSH_CONFIGS_APN_KEY'),
|
||||||
keyId: nconf.get('PUSH_CONFIGS:APN_KEY_ID'),
|
keyId: nconf.get('PUSH_CONFIGS_APN_KEY_ID'),
|
||||||
teamId: nconf.get('PUSH_CONFIGS:APN_TEAM_ID'),
|
teamId: nconf.get('PUSH_CONFIGS_APN_TEAM_ID'),
|
||||||
},
|
},
|
||||||
production: nconf.get('IS_PROD'),
|
production: nconf.get('IS_PROD'),
|
||||||
}) : undefined;
|
}) : undefined;
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import { TAVERN_ID } from '../models/group';
|
|||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
const SLACK_FLAGGING_URL = nconf.get('SLACK:FLAGGING_URL');
|
const SLACK_FLAGGING_URL = nconf.get('SLACK_FLAGGING_URL');
|
||||||
const SLACK_FLAGGING_FOOTER_LINK = nconf.get('SLACK:FLAGGING_FOOTER_LINK');
|
const SLACK_FLAGGING_FOOTER_LINK = nconf.get('SLACK_FLAGGING_FOOTER_LINK');
|
||||||
const SLACK_SUBSCRIPTIONS_URL = nconf.get('SLACK:SUBSCRIPTIONS_URL');
|
const SLACK_SUBSCRIPTIONS_URL = nconf.get('SLACK_SUBSCRIPTIONS_URL');
|
||||||
const BASE_URL = nconf.get('BASE_URL');
|
const BASE_URL = nconf.get('BASE_URL');
|
||||||
|
|
||||||
let flagSlack;
|
let flagSlack;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import url from 'url';
|
import url from 'url';
|
||||||
|
|
||||||
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL');
|
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL');
|
||||||
|
|
||||||
function getUserFields (options, req) {
|
function getUserFields (options, req) {
|
||||||
// A list of user fields that aren't needed for the route and are not loaded from the db.
|
// A list of user fields that aren't needed for the route and are not loaded from the db.
|
||||||
|
|||||||
Reference in New Issue
Block a user