UNPKG

sails-base

Version:

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

72 lines (51 loc) 1.86 kB
module.exports = { friendlyName: 'Provider', description: '第三方授权登录入口', inputs: { code: { type: 'string', description: '第三方平台用户登录code.', required: true } }, exits: { providerNotFoundError: { description: 'provider not found.', outputDescription: 'provider参数为空,请检查url地址是否正确.', responseType: 'serverError' }, providerConfigNotFoundError: { description: 'provider\'s config not found. ', outputDescription: '未找到对应的provider的配置参数', responseType: 'serverError' }, callbackFnNotFoundError: { description: 'provider\'s callback function not found.', outputDescription: '未配置回调函数', responseType: 'serverError' } }, fn: async function (inputs, exits) { let that = this; let provider = that.req.param('provider'); if (_.isEmpty(provider)) throw { providerNotFoundError: new Error('provider参数为空,请检查url地址是否正确.') }; let strategies = sails.config.custom.passport; if (!_.has(strategies, provider)) throw { providerConfigNotFoundError: new Error('未找到' + provider + '对应的配置参数.') }; if (!strategies[provider].callback || !_.isFunction(strategies[provider].callback)) throw { callbackFnNotFoundError: new Error('未找到' + provider + '对应的回调方法.') }; return require('passport').authenticate(provider, function (err, passport, info) { if (err) return exits.error(_.isError(err) ? err : new Error(err)); that.req.session.passport = passport; that.req.session.authenticated = true; return exits.success({ token: passport.accessToken }); })(this.req, this.res, this.req.next); } };