2.0.6 • Published 10 months ago

enhancer-thirdparty-api v2.0.6

Weekly downloads
3
License
ISC
Repository
-
Last release
10 months ago

自定义登陆相关配置

function(Enhancer, user, done) {
  var api = require('enhancer-thirdparty-api');

  api.login({
    enhancer: Enhancer, // 全局对象 可以直接引用
    user: user, //如果已经登陆, 可以通过 Enhancer.getCurrentUser() 来获取
    complete: function (err, message, data) { //登陆完成的回调
      /*
        err: 报错对象, 如果无值则表示没有错误
        message: 错误提示消息
        data: {
          method: 'enhancer', // 说明是通过查询用户表登陆的
          //method: 'enterprise_wechat', // 说明是通过企业微信登陆的
          //method: 'dingtalk', // 说明是通过钉钉自建应用登陆的
          //method: 'dingtalk_third', // 说明是通过钉钉第三方网站登陆的
          //method: 'wechat_mp', // 说明是通过微信公众号登陆的
          //method: 'wechat_mini', // 说明是通过微信小程序登陆的
          //method: 'wechat_web', // 说明是通过微信网站应用登陆的
          //method: 'alipay', // 说明是通过支付宝登陆的
        }
      */
      done(err, message);
    },


    /* 微信小程序的配置  */
    miniWechatUserId: 'MINI_WX_USER_ID',  // 在用户表中存放 微信小程序的用户ID 的字段名
    miniWechatAppId: '',  // 小程序的appId
    miniWechatAppSecret: '', // 小程序的appSecret


    /* 企业微信的配置 */
    entWechatUserId: 'ENT_WX_USER_ID', // 在用户表中存放 企业微信用户ID 的字段名
    entWechatCorpid: '',  // 企业ID
    entWechatCorpsecret: '',  // Corpsecre
    entWechatAgentid: '',  // 获取的AgentId
    wxEntInfo: false, // 是否需要获取企业微信登录人的用户信息
    wxEntNickname: 'WX_ENT_NICKNAME', // 用户表中存放企业微信用户昵称的字段, 当 wxEntInfo 为 true 时才生效
    wxEntAvatar: 'WX_ENT_AVATAR', // 用户表中存放企业微信用户头像的字段, 当 wxEntInfo 为 true 时才生效
    customInfo: function (info, end) { // 根据当前企业用户信息返回自定义用户信息
      /*
        end: 参考上面 complete 里面的 method, 但值不包含 'enhancer'
        info: { //企业微信中当前登陆用户信息
          "errcode": 0,
          "errmsg": "ok",
          "userid": "zhangsan",
          "name": "李四",
          "department": [1, 2],
          "position": "后台工程师",
          "mobile": "15913215421",
          "gender": 1,
          "tel": "62394",
          "email": "zhangsan@gzdev.com",
          "weixinid": "lisifordev",
          "avatar": "http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0",
          "status": 1
        } 
        参考 https://doxmate.cool/node-webot/wechat-enterprise-api/api.html#api_user_exports_getUser
      */
      return {
        //根据 info 自定义要返回的字段, 返回的这些字段是否要入库 开发者自己在后面的步骤中决定
      }
    },


    /* 微信的配置 */
    mpWechatUserId: 'MP_WX_USER_ID', // 在用户表中存放 微信公众号ID(union_id 或 open_id) 的字段名
    mpWechatAppId: '',  // appId
    mpWechatAppSecret: '', // appSecret
    wxInfo: true, // 获取微信登录人的用户信息
    wxNickname: 'WX_NICKNAME', // 数据库里存储微信用户昵称的字段
    wxAvatar: 'WX_AVATAR', // 数据库里存储微信用户头像的字段
    customInfo: function(info, end) {//自定义获取哪些信息字段
      /*
        end: 参考上面 complete 里面的 method, 但值不包含 'enhancer'
        info: { //微信返回的用户信息对象
          "openid": "OPENID",
          "nickname": NICKNAME,
          "sex": 1,
          "province":"PROVINCE",
          "city":"CITY",
          "country":"COUNTRY",
          "headimgurl":"https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
          "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
          "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
        }
        // 参考 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
      */

      return {
        //根据 info 自定义要返回的字段, 返回的这些字段是否要入库 开发者自己在后面的步骤中决定
      }
    }, 
    /*微信网站应用配置(扫描二维码登陆)*/
    webWechatAppId: '',  // appId
    webWechatAppSecret: '', // appSecret



    /*钉钉的配置*/
    dingtalkUserId: 'DINGTALK_USER_ID, // 在用户表中存放 钉钉用户ID 的字段名 
    dingtalkAppKey: '',  // AppKey
    dingtalkAppSecret: '', // AppSecret
    ddInfo: false, //获取钉钉用户信息
    ddNickname: 'DD_NICKNAME', //用户表中存放钉钉用户昵称的字段
    ddAvatar: 'DD_AVATAR',   //用户表中存放钉钉用户头像的字段
    customInfo: function (info, end) {
      /*
        end: 参考上面 complete 里面的 method, 但值不包含 'enhancer'
        info: { //钉钉返回的用户信息对象
          "extension":"{\"爱好\":\"旅游\",\"年龄\":\"24\"}",
          "unionid":"z21HjQliSzpw0YWxxxxx",
          "boss":"true",
          "role_list":{
            "group_name":"职务",
            "name":"总监",
            "id":"100"
          },
          "exclusive_account":false,
          "manager_userid":"manager240",
          "admin":"true",
          "remark":"备注备注",
          "title":"技术总监",
          "hired_date":"1597573616828",
          "userid":"zhangsan",
          "work_place":"未来park",
          "dept_order_list":{
            "dept_id":"2",
            "order":"1"
          },
          "real_authed":"true",
          "dept_id_list":"[2,3,4]",
          "job_number":"4",
          "email":"test@xxx.com",
          "leader_in_dept":{
            "leader":"true",
            "dept_id":"2"
          },
          "mobile":"18513027676",
          "active":"true",
          "org_email":"test@xxx.com",
          "telephone":"010-86123456-2345",
          "avatar":"xxx",
          "hide_mobile":"false",
          "senior":"true",
          "name":"张三",
          "union_emp_ext":{
            "union_emp_map_list":{
              "userid":"5000",
              "corp_id":"dingxxx"
            },
            "userid":"500",
            "corp_id":"dingxxx"
          },
          "state_code":"86"
        }
        //参考 https://open.dingtalk.com/document/orgapp/query-user-details
      */
      return {
        //根据 info 自定义要返回的字段, 返回的这些字段是否要入库 开发者自己在后面的步骤中决定
      }
    }, // 自定义获取钉钉用户信息
    /* 钉钉第三方网站的配置 */
    dingtalkAppId: '',  // appId
    dingtalkUnionId: 'DINGTALK_UNION_ID', // 在用户表中存放 钉钉UNION_ID 的字段名
    dingtalkThirdSecret: '', // appSecret

    /* 下面是支付宝的配置*/
    alipayUserId: 'ALIPAY_USER_ID', //在用户表中存放 支付宝 user_id 的字段名
    alipayPrivateKey: '',
    alipayPubKey: '', 	  

    // 如果你希望自动为你实现登录逻辑, 请检查下面的配置是否和你的应用一致
    userTableName: 'USERINFO',  // Enhancer 应用的用户表表名
    userId: 'USER_ID',  // 在用户表中存放 用户ID 的字段名 
    userName: 'USER_NAME',  // 在用户表中存放 用户名 的字段名
    userRoles: 'USER_ROLES',  // 在用户表中存放 用户角色 的字段名
    password: 'PASSWORD',  // 在用户表中存放 密码 的字段名

    thirdpartyLogin: function (err, id, method, next) {// 自定义三方登陆的过程
      /*
        err: 错误对象
        id: 获取到的三方应用的用户id
        method: 参考上面 complete 里面的 method, 但值不包含 'enhancer'
        next: function (err, rows, data)  {//获取到自定义信息后, 可以继续调用这个函数完成登陆
          // err: 为错误对象
          // rows: 为登陆信息, 可以是通过 id 去用户表里查出来的数据
          // data: [id] 
        }
        // next(err, rows, [id])
      */
    }, 

    enhancerLogin: function (id, method, next) {
      /*
        id: 绑定id
        method: 参考上面 complete 里面的 method, 但值不包含 'enhancer'
        next: 参考上面 thirdpartyLogin 中的 next
      */
    },

    customBind: function (id, method, info) {// 自定义三方账号和enhancer应用账号的绑定
      /*
        id: 绑定id
        method: 参考上面 complete 里面的 method, 但值不包含 'enhancer'
        info: 参考上面各个端上 customInfo 中的 info
      */

      // 根据info信息自己去完成和系统用户的绑定
    }

    multipleUser: function (rows, data) { //当获取到的用户有多个时, 自定义返回哪个
      /*
        rows: 多个登陆用户的信息
        data: 是一个数组, data[0] 为三方应用id
      */
      return rows[0];
    }

    statusCheck: function (row) {//根据当前获取的登陆用户信息返回用户是否被禁用
      /*
        row: 登陆用户的信息
      */

      return '该账号已经被禁用'; // 如果返回了字符串 则认为该用户被禁用了 且字符串会被用作提示消息
    }

    bindVariable: true, //是否将登陆用户信息(row)里的字段自动绑定到系统变量里, 绑定后就可以直接使用 后端: @xxx@ 或 前端:@1-xxx@

    customWhere: function(user) { //自定义自动登陆时 sql 的where 条件
      return {
        where: `user_id = ? and password = ?`,
        param: [user.getId(), user.getPassword()]
      }
    }, 

    lang: 'zh-cn'
  });
}

启动函数里的配置

function (Enhancer, done) {
  var  api = require('enhancer-thirdparty-api');

  /* 企业微信 */
  api.setEntWechat({
    enhancer: Enhancer,
    entWechatCorpid: '', // Corpid
    entWechatCorpsecret: '', // Corpsecret
    entWechatAgentid: '', // Agentid
  });
  const entWechat = api.getEntWechat();
  entWechat.getCacheToken((err, token)=> {}) //获取当前token

  api.setEntApps([ //设置多个企业微信账号
    {
      enhancer: Enhancer,
      entWechatCorpid: '应用1 Corpid'
      entWechatCorpsecret: '应用1 Corpsecret'
      entWechatAgentid: '应用1 Agentid',
      login: true // 表示用这个应用去实现免登
    },
    {
      enhancer: Enhancer,
      entWechatCorpid: '应用2 Corpid'
      entWechatCorpsecret: '应用2 Corpsecret'
      entWechatAgentid: '应用2 Agentid'
    }
  ]); 

  const apps = api.getEntApps();
  /* 企业微信 */




  /* 微信 */
  api.setMPWechat({
    enhancer: Enhancer,
    mpWechatAppId: '',  // 请修改成对应的值
    mpWechatAppSecret: '', // 请修改成对应的值
    webWechatAppId: '',  // 请修改成对应的值
    webWechatAppSecret: '', // 请修改成对应的值
  });
  const wechat = api.getMPWechat();
  wechat.getCacheToken((err, token)=> {}) //获取当前token
  // https://github.com/node-webot/wechat-api
  /* 微信 */


  /* 钉钉 */
  api.setDingTalk({
    enhancer: Enhancer,
    dingtalkAppKey: '', // AppKey
    dingtalkAppSecret: '' // AppSecret
  });
  const dingding = api.getDingTalk();
  dingding.getCacheToken((err, token)=> {}) //获取当前token
  // https://github.com/ali-sdk/node-dingtalk
  /* 钉钉 */

  /* 微信小程序 */
  const miniWechat = api.getMiniWechat();
  miniWechat.getCacheToken((err, token)=> {})
  /* 微信小程序 */

  done();
} 

具体各端的具体配置请参考

2.0.5

10 months ago

2.0.4

10 months ago

2.0.6

10 months ago

2.0.3

2 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.1.9

3 years ago

1.1.8

3 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago