109 lines
2.6 KiB
JavaScript
109 lines
2.6 KiB
JavaScript
'use strict'
|
|
|
|
const _ = require('lodash')
|
|
|
|
const config = {
|
|
site: require('./site'),
|
|
}
|
|
|
|
module.exports = {
|
|
invite: {
|
|
from: `${config.site.title} Robot <${config.site.emails.robot}>`,
|
|
subject: `You have been invited to ${config.site.title}`,
|
|
},
|
|
|
|
changePassword: {
|
|
from: `${config.site.title} Robot <${config.site.emails.robot}>`,
|
|
subject: `Password Reset Request for ${config.site.title}`,
|
|
},
|
|
|
|
timeouts: {
|
|
// 1 day
|
|
changePassword: 24 * 60 * 60 * 1000,
|
|
// verify email
|
|
verifyEmail: 7 * 24 * 60 * 60 * 1000,
|
|
},
|
|
|
|
paths: {
|
|
register: '/register',
|
|
login: '/login',
|
|
forgotPassword: '/forgot',
|
|
resetPassword: '/reset',
|
|
verifyEmail: '/verify',
|
|
},
|
|
|
|
redirects: {
|
|
login: '/',
|
|
logout: '/login',
|
|
register: '/login',
|
|
},
|
|
|
|
remember: {
|
|
// if expires is defined, it will be used. otherwise maxage
|
|
expires: new Date('2038-01-19T03:14:07.000Z'),
|
|
// expires: Date.now() - 1,
|
|
maxAge: 30 * 24 * 60 * 60 * 1000,
|
|
},
|
|
|
|
messages: {
|
|
login: {
|
|
notLocal: 'Account requires external login.',
|
|
wrongPassword: 'Wrong password.',
|
|
noUserFound: 'No user registered with that email.',
|
|
noExternalUser: 'The account is not connected to this website.',
|
|
externalLoginFailed: 'External login failed.',
|
|
emailNotVerified: "This account's email has not been verified.",
|
|
banned: 'User is banned.',
|
|
blocked: 'User is blocked due to too many login attempts.',
|
|
},
|
|
|
|
register: {
|
|
missingProperties: 'Oh no missing stuff',
|
|
notAuthorized: 'The email is not authorized to create an account.',
|
|
duplicateEmail: 'The email has already been registered.',
|
|
},
|
|
},
|
|
|
|
passport: {
|
|
local: {
|
|
usernameField: 'email',
|
|
},
|
|
|
|
scope: ['email'],
|
|
|
|
// providers: {
|
|
// facebook: {
|
|
// clientID: 'change-this-fool',
|
|
// clientSecret: 'change-this-fool',
|
|
// callbackURL: p.join(config.site.domain, '/auth/facebook/callback'),
|
|
// passReqToCallback: true
|
|
// },
|
|
},
|
|
|
|
userColumns: [
|
|
'givenName',
|
|
'familyName',
|
|
'dateBanned',
|
|
'dateBlocked',
|
|
'dateMuted',
|
|
'dateVerified',
|
|
// ['array(SELECT name FROM user_roles LEFT OUTER JOIN roles ON user_roles.role_id = roles.id WHERE user_roles.user_id = users.id)', 'roles'],
|
|
[
|
|
`(SELECT array_to_json(array_agg(row_to_json(d)))
|
|
FROM (
|
|
SELECT id, name
|
|
FROM user_roles
|
|
LEFT OUTER JOIN roles ON user_roles.role_id = roles.id WHERE user_roles.user_id = users.id
|
|
ORDER BY roles.id DESC
|
|
) d
|
|
)`,
|
|
'roles',
|
|
],
|
|
],
|
|
|
|
// needs to be even
|
|
tokenLength: 64,
|
|
// needs to be even
|
|
saltLength: 16,
|
|
}
|