Added docs

This commit is contained in:
Wyatt Johnson
2017-05-09 15:32:19 -06:00
parent 3649605629
commit 76d0fdfd67
3 changed files with 18 additions and 12 deletions
+5 -2
View File
@@ -24,10 +24,13 @@ The Talk application looks for the following configuration values either as envi
- `TALK_MONGO_URL` (*required*) - the database connection string for the MongoDB database.
- `TALK_REDIS_URL` (*required*) - the database connection string for the Redis database.
- `TALK_SESSION_SECRET` (*required*) - a random string which will be used to
secure cookies.
- `TALK_ROOT_URL` (*required*) - root url of the installed application externally
available in the format: `<scheme>://<host>` without the path.
- `TALK_JWT_SECRET` (*required*) - a long and cryptographical secure random string which will be used to
sign and verify tokens via a `HS256` algorithm.
- `TALK_JWT_EXPIRY` (_optional_) - the expiry duration (`exp`) for the tokens issued for logged in sessions (Default `1 day`)
- `TALK_JWT_ISSUER` (_optional_) - the issuer (`iss`) claim for login JWT tokens (Default `process.env.TALK_ROOT_URL`)
- `TALK_JWT_AUDIENCE` (_optional_) - the audience (`aud`) claim for login JWT tokens (Default `talk`)
- `TALK_SMTP_EMAIL` (*required for email*) - the address to send emails from using the
SMTP provider.
- `TALK_SMTP_USERNAME` (*required for email*) - username of the SMTP provider you are using.
+4 -1
View File
@@ -11,7 +11,10 @@ const debug = require('debug')('talk:passport');
// JWT_SECRET is the secret used to sign and verify tokens issued by this
// application.
const JWT_SECRET = process.env.JWT_SECRET;
const JWT_SECRET = process.env.JWT_SECRET || null;
if (JWT_SECRET === null) {
throw new Error('JWT_SECRET must be provided in the environment to sign/verify tokens');
}
// JWT_EXPIRY is the time for which a given token is valid for.
const JWT_EXPIRY = process.env.JWT_EXPIRY || '1 day';
+9 -9
View File
@@ -22,12 +22,12 @@ const SettingsService = require('./settings');
const ActionsService = require('./actions');
const MailerService = require('./mailer');
// In the event that the TALK_SESSION_SECRET is missing but we are testing, then
// set the process.env.TALK_SESSION_SECRET.
if (process.env.NODE_ENV === 'test' && !process.env.TALK_SESSION_SECRET) {
process.env.TALK_SESSION_SECRET = 'keyboard cat';
} else if (!process.env.TALK_SESSION_SECRET) {
throw new Error('TALK_SESSION_SECRET must be defined to encode JSON Web Tokens and other auth functionality');
// In the event that the TALK_JWT_SECRET is missing but we are testing, then
// set the process.env.TALK_JWT_SECRET.
if (process.env.NODE_ENV === 'test' && !process.env.TALK_JWT_SECRET) {
process.env.TALK_JWT_SECRET = 'keyboard cat';
} else if (!process.env.TALK_JWT_SECRET) {
throw new Error('TALK_JWT_SECRET must be defined to encode JSON Web Tokens and other auth functionality');
}
const EMAIL_CONFIRM_JWT_SUBJECT = 'email_confirm';
@@ -564,7 +564,7 @@ module.exports = class UsersService {
version: user.__v
};
return jwt.sign(payload, process.env.TALK_SESSION_SECRET, {
return jwt.sign(payload, process.env.TALK_JWT_SECRET, {
algorithm: 'HS256',
expiresIn: '1d',
subject: PASSWORD_RESET_JWT_SUBJECT
@@ -583,7 +583,7 @@ module.exports = class UsersService {
// Set the allowed algorithms.
options.algorithms = ['HS256'];
jwt.verify(token, process.env.TALK_SESSION_SECRET, options, (err, decoded) => {
jwt.verify(token, process.env.TALK_JWT_SECRET, options, (err, decoded) => {
if (err) {
return reject(err);
}
@@ -740,7 +740,7 @@ module.exports = class UsersService {
email,
referer,
userID: user.id
}, process.env.TALK_SESSION_SECRET, tokenOptions);
}, process.env.TALK_JWT_SECRET, tokenOptions);
});
}