UNPKG

shark-node-openid

Version:

shark-node-openid is used for netease's openid.

130 lines (116 loc) 3.82 kB
/** * @author: stone-jin * @description: 当前openid的库支持express和hapi两个版本的openid登陆 * @date: 2016/11/1 */ var app_type = ""; var openIDDecoractor = null; var DBAccess = require('./lib/db/DbAccess'); var q = require('q'); var utils = require('./lib/utils/systeminfo.js'); var package = require('./package.json'); var log4js = require('log4js'); var log4js_config = require('./lib/config/log.config'); log4js.configure(log4js_config); var logger = log4js.getLogger('shark_openid'); /** * @author: stone-jin * @description: 当前支持hapi和express版本 * app: express实例或者hapi的实例 * type:表示那种类型,hapi或者express * options:控制参数 * { * contextPath: 登陆登出前面有一个contextPath可以进行配置 * sqlUrl: 数据库连接的地址,参照db.json,或者查看orm框架里面如何连接对应的数据库来操作 * } * @date: 2016/11/1 */ function init(app, type, options){ var defer = q.defer(); logger.info("\n---------------start------------"); logger.info("shark_openid_version: " + package.version); //打印系统信息 utils.recordSystemInfo(); do{ switch(type){ case 'express':{ openIDDecoractor = require('./lib/index/openIDDecoractor'); break; } case 'hapi':{ openIDDecoractor = require('./lib/index/openIDDecoractor_hapi'); break; } default:{ logger.info("type need to be express or hapi"); defer.reject({ "code": 202, "message": "type need to be express or hapi" }); break; } } app_type = type; if(options === void 0){ options = {}; } /* 跟数据库建立长连接,没搞连接池 */ new DBAccess().init(options.sqlUrl).then(function(OpenIdLoginUser){ openIDDecoractor.init(app, options); defer.resolve({ "code": 200, "data" :{ OpenIdLoginUser: OpenIdLoginUser } }); }, function(err){ /* 数据库操作失败 */ logger.info("Fail to init DBAccess()"); defer.reject({ "code": 201, "message": "Fail to init DBAccess()" }); }); }while(0); return defer.promise; } function needLogin(func){ if(app_type !== 'express' && app_type !== 'hapi'){ logger.info("you should init first"); throw new Error("you should init first"); } return openIDDecoractor.needLogin(func); } function ajaxNeedLogin(func, config){ if(app_type !== 'express' && app_type !== 'hapi'){ logger.info("you should init first"); throw new Error("you should init first"); } return openIDDecoractor.ajaxNeedLogin(func, config); } function getCurrentUserInfo(email){ var OpenIdLoginService = require('./lib/service/OpenIdLoginService'); return OpenIdLoginService.getCurrentUserInfo(email); } function authLogin(config){ return function(req, res, next){ needLogin(function(){ next(); })(req, res, next); } } function ajaxAuthLogin(config){ return function(req, res,next){ ajaxNeedLogin(function(){ next(); }, config)(req, res, next); } } module.exports = { init: init, needLogin: needLogin, ajaxNeedLogin: ajaxNeedLogin, getCurrentUserInfo: getCurrentUserInfo, authLogin: authLogin, ajaxAuthLogin: ajaxAuthLogin };