we-core
Version:
We.js is a node.js framework for build real time applications, sites or blogs!
113 lines (103 loc) • 2.67 kB
JavaScript
/**
* We.js oauth2 util functions and helpers
* @author Alberto Souza <contato@albertosouza.net>
* @license [url] MIT
*/
var util = {};
/**
* Get access token from requst param
*
* Getter order :
* Header Authorization
* req.cookie
* req.param
* req.session
*
* @param {object} req express request param
* @return {string} return the token string or null
*/
util.parseToken = function parseToken(req) {
var we = req.we;
var accessToken;
if (req.header) {
// get from bearer header Authorization
accessToken = req.header('Authorization');
if (accessToken) {
var token = accessToken.split(' ');
if (token && token[0] === 'Bearer') {
return token[1];
}
}
}
if (req.cookies) {
// get from cookie
if (req.cookies && req.cookies[we.config.passport.cookieName]) {
return req.cookies[we.config.passport.cookieName];
}
}
// get from query string or body param
if (req.query && req.query.access_token) {
return req.query.access_token;
}
// get from session
if (req.session && req.session.authToken) {
return req.session.authToken;
}
return null;
}
/**
* Check if one token is expired
*
* @param {object} token AccessToken record
* @param {int} accessTokenTime valid token max time
* @return {boolean}
*/
util.checkIfTokenIsExpired = function checkIfTokenIsExpired(token, accessTokenTime) {
// skip if dont set accessToken time
if(!accessTokenTime) return true;
// check if cache is valid
var dateNow = new Date().getTime(),
timeDiference = dateNow - token.createdAt;
// if cache is valid return cached page data
if (timeDiference <= accessTokenTime) {
// is valid
return true;
} else {
// is expired
return false;
}
}
/**
* Expire one user token
*
* @param {string} token AccessToken string
* @param {string} userId valid token max time
* @param {function} cb callback(err,results);
*/
util.expireToken = function expireOneToken(token, app, cb) {
return app.db.models.accesstoken.update({
isValid: false
},{
where: { token: token },
})
.then(function queryResult(results) {
cb(null, results);
}).catch(cb);
}
/**
* Check is user is authenticated
* based on passport npm package
*
* @param {object} req express.js request object
* @return {Boolean}
*/
util.setIsAuthenticated = function setIsAuthenticatedFunc(req) {
// add one isAuthenticated function on every req object
req.isAuthenticated = function checkIfIsAuthenticated() {
if (req.user && req.user.id) {
return true;
}
return false;
}
}
module.exports = util;