leagueofcomicgeeks
Version:
Unofficial Node.js library for interacting with League of Comic Geeks
60 lines (49 loc) • 1.35 kB
JavaScript
const _ = require('lodash');
const request = require('request');
const cookie = require('cookie');
const moment = require('moment');
const config = require('../../config');
const cookieJar = request.jar();
let user = null;
const getSession = function () {
const cookieString = cookieJar.getCookieString(config.rootUrl);
return cookie.parse(cookieString)[config.sessionKey];
};
const setSession = function (value, expiry, age) {
const options = {
expires: expiry,
maxAge: age,
path: '/'
};
const cookieValue = cookie.serialize(config.sessionKey, value, options);
cookieJar.setCookie(cookieValue, config.rootUrl);
};
module.exports = {
isAuthenticated() {
return _.isObject(user) && _.isString(getSession());
},
destroy() {
const yesterday = moment().subtract(1, 'day').toDate();
setSession('', yesterday, 0);
user = null;
},
get() {
const session = getSession();
if (!_.isObject(user)) return null;
return _.extend({}, user, { session });
},
set(id, username, email, session) {
user = {
id,
username,
email
};
if (_.isString(session)) {
const inThirtyDays = moment().add(30, 'days').toDate();
const thirtyDaysInSeconds = 2592000;
setSession(session, inThirtyDays, thirtyDaysInSeconds);
}
return true;
},
cookieJar
};