UNPKG

shark-node-openid

Version:

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

184 lines (167 loc) 5.24 kB
var DBAccess = require('../db/DbAccess'); var orm = require('orm'); var q = require('q'); var OpenIdLoginUser = null; var OpenIdLoginUserModel = require('../model/OpenIdLoginUserModel'); function define(db){ OpenIdLoginUser = db.define("OpenIdLoginUser", { user_email : {type: 'text', size:64}, expires_time : {type: "integer", size: 8}, full_name: {type: "text", size:64}, nick_name: {type: "text", size: 64} }); return OpenIdLoginUser; } /** * @author: stone-jin * @description: 判断是否这个openid的过期 * @date: 2016/11/9 */ function UserExipreTime(email){ var defer = q.defer(); do{ /* 入参判断 */ if(email === void 0 || email === "" || !((typeof email === 'string') && email.constructor === String)){ defer.reject({ "code": 203 }); break; } /* 此处需要判断过期时间 */ OpenIdLoginUser.find({ user_email: email }, function (err, user) { if(err || user.length !== 1){ /* 没有找到 */ defer.reject({ "code": 201 }); }else{ if(user[0].expires_time > Date.parse(new Date())){ defer.resolve({ 'code': 200 }); }else{ /* 已经过期 */ defer.reject({ 'code': 202 }); } } }); }while(0); return defer.promise; } /** * @author: stone-jin * @description: 保存OpenId用户信息 * param: OpenIdLoginUserModel : userInfo * @date: 2016/11/9 */ function addOpenIdUser(userInfo){ var defer = q.defer(); do{ /* 入参判断 */ if(userInfo === void 0 || userInfo.constructor !== OpenIdLoginUserModel){ defer.reject({ "code": 202 }); break; } /* 保存新的数据到数据库中,可以在下次登陆的时候判断是否过期需要重新登陆 */ OpenIdLoginUser.create(userInfo.toJSON(), function(err, results) { if(err){ /* 保存数据库失败 */ defer.reject({ "code": 201 }); }else{ /* 保存成功 */ defer.resolve({ "code": 200 }); } }); }while(0); return defer.promise; } /** * @author: stone-jin * @description: 更新Openid用户信息,判断条件是user_email * @date: 2016/11/9 */ function updateOpenIdUser(userInfo){ var defer = q.defer(); do{ if(userInfo === void 0 || userInfo.constructor !== OpenIdLoginUserModel){ defer.reject({ "code": 203 }); break; } /* 保存新的数据到数据库中,可以在下次登陆的时候判断是否过期需要重新登陆 */ OpenIdLoginUser.find({"user_email" : userInfo.getUserEmail()}, function(err, user) { if(err || user.length !== 1){ /* 保存数据库失败 */ defer.reject({ "code": 201 }); }else{ user[0].expires_time = userInfo.getExpiresTime(); user[0].save(function(error){ if(error){ defer.reject({ "code": 202 }); } /* 保存成功 */ defer.resolve({ "code": 200 }); }); } }); }while(0); return defer.promise; } function getUserInfo(email){ var defer = q.defer(); do{ /* 入参判断 */ if(email === void 0 || email === "" || !((typeof email === 'string') && email.constructor === String)){ defer.reject({ "code": 203 }); break; } /* 此处需要判断过期时间 */ OpenIdLoginUser.find({ user_email: email }, function (err, user) { if(err || user.length !== 1){ /* 没有找到 */ defer.reject({ code: 201 }); }else{ if(user[0].expires_time > Date.parse(new Date())){ defer.resolve({ code: 200, data: { user_email: user[0].user_email, full_name: user[0].full_name, nick_name: user[0].nick_name } }); }else{ /* 已经过期 */ defer.reject({ 'code': 202 }); } } }); }while(0); return defer.promise; } module.exports = { define: define, UserExipreTime: UserExipreTime, addOpenIdUser: addOpenIdUser, updateOpenIdUser: updateOpenIdUser, getUserInfo: getUserInfo };