UNPKG

sails-base

Version:

sails1.0+扩展基础包,包含用户体系权限校验及model的attr,action的inputs入参提示语自定义功能

87 lines (72 loc) 2.12 kB
module.exports = { friendlyName: 'Passport user ref build', description: '第三方授权登录成功后token记录', inputs: { protocol: { type: 'string', description: '授权协议类型: oauth,oauth2,openapi等', }, provider: { type: 'string', description: '第三方服务授权平台: local,wechat,sina_weibo等', required: true }, accessToken: { type: 'string', description: '授权凭证:第三方授权登录——token', }, identifier: { type: 'string', description: '身份唯一标识:系统内账号为用户名或者邮箱地址,第三方授权账号为外部系统用户标识', }, unionId: { type: 'string', description: '统一平台ID,多系统统一主体的用户标识', } }, exits: { paramsError: { description: 'params error.', outputDescription: '必填参数值缺失', responseType: 'serverError' } }, fn: async function (inputs,exits) { let passport; let where = {}; if(_.isEmpty(inputs.identifier) && !_.isEmpty(inputs.unionId)){ where = { unionId: inputs.unionId }; }else if(!_.isEmpty(inputs.identifier)){ where = { provider: inputs.provider, identifier: inputs.identifier }; }else{ throw { paramsError: new Error('参数值有误!') }; } passport = await Passport.findOne(where); if (passport) { passport.accessToken = inputs.accessToken; passport.protocol = inputs.protocol; await Passport.updateOne(passport.id, passport); } else { let user = await User.create({ username: inputs.identifier }).fetch(); if (user) passport = await Passport.create({ provider: inputs.provider, protocol: inputs.protocol, identifier: inputs.identifier, unionId: inputs.unionId, accessToken: inputs.accessToken, user: user.id }).fetch(); } return exits.success(_.omit(passport,['password'])); } };