{"version":3,"sources":["jsdelivr-header.js","/npm/nodebb-plugin-sso-wechat3@0.1.3/library.js"],"names":[],"mappings":"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","file":"/npm/nodebb-plugin-sso-wechat3@0.1.3/library.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/nodebb-plugin-sso-wechat3@0.1.3/library.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nvar user = module.parent.require('./user'),\n  meta = module.parent.require('./meta'),\n  db = module.parent.require('../src/database'),\n  passport = module.parent.require('passport'),\n  passportWechat = require('passport-wechat').Strategy,\n  fs = module.parent.require('fs'),\n  path = module.parent.require('path'),\n  nconf = module.parent.require('nconf'),\n  async = module.parent.require('async');\n\n//var constants = module.parent.require('../plugin_configs/sso_wechat_constants');\nvar constants = Object.freeze({\n  'name': \"Wechat3\",\n  'admin': {\n    'icon': 'fa-weixin',\n    'route': '/plugins/sso-wechat3'\n  }\n});\n\nvar Wechat = {};\n\nfunction wechatCheck(req, res, next) {\n  if (req.get(\"user-agent\").match(/micromessenger/i)){\n    if (!req.user) {\n      res.json({'code': 500});\n    }\n  }\n  res.json({'code': 200});\n}\n\nWechat.getStrategy = function(strategies, callback) {\n  meta.settings.get('sso-wechat3', function(err, settings) {\n    if (!err && settings.id && settings.secret) {\n      passport.use(new passportWechat({\n        appID: settings.id,\n        appSecret: settings.secret,\n        client: settings.weclient ? 'wechat' : 'website',\n        scope: \"snsapi_userinfo\",\n        callbackURL: nconf.get('url') + '/auth/wechat/callback'\n      }, function(accessToken, refreshToken, profile, expiresIn, done) {\n\t\t\t\tconsole.log(\"get wechat profile: \", profile, expiresIn);\n        Wechat.login(profile.openid, profile.nickname, profile.headimgurl, function(err, user) {\n          if (err) {\n            return done(err);\n          }\n          done(null, user);\n        });\n      }));\n      strategies.push({\n        name: 'wechat',\n        url: '/auth/wechat',\n        callbackURL: '/auth/wechat/callback',\n        icon: 'fa-weixin',\n        scope: ''\n      });\n    }\n    callback(null, strategies);\n  });\n};\n\nWechat.getAssociation = function(data, callback) {\n  user.getUserField(data.uid, 'wxid', function(err, wxid) {\n    if (err) {\n      return callback(err, data);\n    }\n\n    if (wxid) {\n      data.associations.push({\n        associated: true,\n        name: constants.name,\n        icon: constants.admin.icon\n      });\n    } else {\n      data.associations.push({\n        associated: false,\n        url: nconf.get('url') + '/auth/wechat',\n        name: constants.name,\n        icon: constants.admin.icon\n      });\n    }\n\n    callback(null, data);\n  })\n};\n\nWechat.addMenuItem = function(custom_header, callback) {\n  custom_header.authentication.push({\n    \"route\": constants.admin.route,\n    \"icon\": constants.admin.icon,\n    \"name\": constants.name\n  });\n\n  callback(null, custom_header);\n};\n\nWechat.login = function(wxid, handle, pictureUrl, callback) {\n  Wechat.getUidByWechatId(wxid, function(err, uid) {\n    if (err) {\n      return callback(err);\n    }\n\n    if (uid !== null) {\n      // Existing User\n      callback(null, {\n        uid: uid\n      });\n    } else {\n\t\t\t// New User\n\t\t\tvar success = function(uid) {\n\t\t\t\t// Save google-specific information to the user\n\t\t\t\tuser.setUserField(uid, 'wxid', wxid);\n\t\t\t\tdb.setObjectField('wxid:uid', wxid, uid);\n\n\t\t\t\tasync.waterfall([\n\t\t\t\t\tasync.apply(user.getUserFields, uid, ['picture', 'firstName', 'lastName', 'fullname']),\n\t\t\t\t\tfunction(info, next) {\n\t\t\t\t\t\tif (!info.picture && pictureUrl) {\n\t\t\t\t\t\t\tuser.setUserField(uid, 'uploadedpicture', pictureUrl);\n\t\t\t\t\t\t\tuser.setUserField(uid, 'picture', pictureUrl);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnext();\n\t\t\t\t\t}\n\t\t\t\t], function (err) {\n\t\t\t\t\tcallback(err, {\n\t\t\t\t\t\tuid: uid\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\n      user.create({\n        username: handle,\n\t\t\t\tregisterFrom: 'wechat'\n      }, function(err, uid) {\n        if (err) {\n          return callback(err);\n        }\n\t\t\t\tsuccess(uid);\n      });\n    }\n  });\n};\n\nWechat.getUidByWechatId = function(wxid, callback) {\n  db.getObjectField('wxid:uid', wxid, function(err, uid) {\n    if (err) {\n      return callback(err);\n    }\n    callback(null, uid);\n  });\n};\n\nWechat.deleteUserData = function(uid, callback) {\n  async.waterfall([\n    async.apply(user.getUserField, uid, 'wxid'),\n    function(oAuthIdToDelete, next) {\n      db.deleteObjectField('wxid:uid', oAuthIdToDelete, next);\n    }\n  ], function(err) {\n    if (err) {\n      winston.error('[sso-wechat] Could not remove OAuthId data for uid ' + uid + '. Error: ' + err);\n      return callback(err);\n    }\n    callback(null, uid);\n  });\n};\n\nWechat.init = function(data, callback) {\n  function renderAdmin(req, res) {\n    res.render('admin/plugins/sso-wechat3', {\n      callbackURL: nconf.get('url') + '/auth/wechat/callback'\n    });\n  }\n\n  data.router.get('/checkwechat', wechatCheck);\n  data.router.get('/admin/plugins/sso-wechat3', data.middleware.admin.buildHeader, renderAdmin);\n  data.router.get('/api/admin/plugins/sso-wechat3', renderAdmin);\n\n  callback();\n};\n\nmodule.exports = Wechat;\n"]}