当前位置: 首页 > news >正文

南昌网站建设_南昌做网站公司南宁网络推广外包

南昌网站建设_南昌做网站公司,南宁网络推广外包,公司域名注册注意事项,wordpress中数据库配置文件书接上回,本文主要分享 企业内部系统集成钉钉官方OA审批流程的步骤 的第二部分。 前端代码集成钉钉免登JSAPI: 前端通过corpid 获得钉钉临时访问码code,再通过临时访问码code调用此接口返回当前用户的姓名、userid、 钉钉用户id、 系统工号、 钉钉部门…

书接上回,本文主要分享 企业内部系统集成钉钉官方OA审批流程的步骤 的第二部分。

前端代码集成钉钉免登JSAPI:

前端通过corpid 获得钉钉临时访问码code,再通过临时访问码code调用此接口返回当前用户的姓名、userid、 钉钉用户id、  系统工号、 钉钉部门id列表、 业务系统访问token 等信息,然后将 token 存储到 localStorage。

前端框架使用 react

操作 localStorage 的基础代码

export function getToken(){return localStorage.getItem("token") as string
}export function setToken(token:string){localStorage.setItem("token",token)
}export function removeToken(){localStorage.removeItem("token")
}

判断字段是否包含指定的字符串 

export function containsStr(str:string, target:string): boolean{str = str === null ? 'str' : str;target = target === null ? 'target' : target;if(str.indexOf(target) !== -1){// 字段str包含指定的字符串return true;} else {// 字段str不包含指定的字符串return false;}
}

钉钉免登录插件

export class checkLoginPlugin extends Middleware {async handler(ctx: MiddlewareContext<{}>, next: () => Promise<any>): Promise<void> {// 判断是否获取到了tokenvar token = getToken()const base_url = import.meta.env.BASE_URL;localStorage.setItem("base_url", base_url);if (token) {// token有值axios({method: 'get',baseURL: '/sale',url: '/api/checkToken?token=' + token,headers: {'Content-Type': 'application/json',},}).then((res: AxiosResponse) => {if (res.data.code == 200) {// token有效,打开应用localStorage.setItem("dingUserId", res.data.dingUserId);localStorage.setItem("dingDeptIds", res.data.dingDeptId);// 检查当前登录人的角色中是否包含 MANAGER 可以辅助实现数据权限校验var role_no = localStorage.getItem("role_no") as string;if (containsStr(role_no, "MANAGER")) {localStorage.setItem("manager", "true");} else {localStorage.setItem("manager", "false");}next()} else {               // token无效,钉钉重新获取token,不是钉钉,直接提示未登录if (dd.env.platform !== "notInDingTalk") {// 钉钉打开应用,重新获取code及tokenconst corpid = import.meta.env.CORPIDdd.ready(() => {dd.runtime.permission.requestAuthCode({corpId: corpid,}).then((result) => {const { code } = result;axios({method: 'get',baseURL: '/sale',url: '/dd/login?code=' + code,headers: {'Content-Type': 'application/json'},}).then((res: AxiosResponse) => {localStorage.setItem("token", res.data.data.token);localStorage.setItem("dingUserId", res.data.data.dingUserId);localStorage.setItem("dingDeptIds", res.data.data.dingDeptIds);localStorage.setItem("user_info", res.data.data.user_info);localStorage.setItem("userno", res.data.data.user_no);localStorage.setItem("user_id", res.data.data.user_id);// 检查当前登录人的角列表是否包含 MANAGER 可以辅助实现数据权限校验var role_no = localStorage.getItem("role_no") as string;if (containsStr(role_no, "MANAGER")) {localStorage.setItem("manager", "true");} else {localStorage.setItem("manager", "false");}token = res.data.data.token;// 可以继续访问应用资源next()return res.data.data}).catch(err => {router.navigate("/check")  //登录页return Promise.reject(err)})},).catch(err => {// 出现异常,跳转到登录页router.navigate("/checkLogin")});});} else {// 从钉钉外打开应用,跳转到登录页router.navigate("/checkLogin")}}}).catch(err => {// 出现异常,跳转到登录页router.navigate("/checkLogin")return Promise.reject(err)})} else {// token没有值if (dd.env.platform !== "notInDingTalk") {// 钉钉打开应用,重新获取钉钉临时code及tokenconst corpid = import.meta.env.CORPIDdd.ready(() => {dd.runtime.permission.requestAuthCode({corpId: corpid,}).then((result) => {const { code } = result;axios({method: 'get',baseURL: '/sale',url: '/dd/login?code=' + code,headers: {'Content-Type': 'application/json'},}).then((res: AxiosResponse) => {localStorage.setItem("usertoken", res.data.data.token);localStorage.setItem("dingtalkUserId", res.data.data.dingtalkUserId);localStorage.setItem("dingtalkDeptIds", res.data.data.dingtalkDeptIds);localStorage.setItem("user_info", res.data.data.user_info);localStorage.setItem("userno", res.data.data.user_no);localStorage.setItem("user_id", res.data.data.user_id);// 检查当前登录人的角色中是否包含 MANAGER 可以辅助实现数据权限校验var role_no = localStorage.getItem("role_no") as string;if (containsStr(role_no, "MANAGER")) {localStorage.setItem("manager", "true");} else {localStorage.setItem("manager", "false");}token = res.data.data.token;next()return res.data.data}).catch(err => {// 出现异常,跳转到登录页router.navigate("/checkLogin")return Promise.reject(err)})},).catch(err => {// 出现异常,跳转到登录页router.navigate("/checkLogin")});});} else {    // 从钉钉外打开应用,跳转到登录页router.navigate("/checkLogin")}}}}

http://www.ds6.com.cn/news/116827.html

相关文章:

  • 西安网站建设怎样找资源
  • 深圳网站建设公司排名最打动人心的广告语
  • 交流建筑的网站城市更新论坛破圈
  • 做网站什么好郑州seo关键词
  • 2019年做网站还有前景吗软文写作网站
  • 网站怎么做让PC和手机自动识别搜狐三季度营收多少
  • 知名网站制作电商平台开发
  • 美工网站设计新站整站优化
  • 做毕业网站的流程成都百度seo推广
  • 隆尧网站百度有哪些app产品
  • 优对 网站开发网络营销公司怎么注册
  • 一站式织梦网站模板网站的优化与推广分析
  • phpwind怎么做网站网店如何推广
  • asp.net 建立网站吗seo网站编辑优化招聘
  • 网站开发的价格互联网推广方案怎么写
  • 下面不属于网络推广方法南京seo全网营销
  • 做网站销售的话术app推广实名认证接单平台
  • 做一款app需要网站吗软件制作
  • 仪器仪表公司网站模版网页制作的软件有哪些
  • 英迈思做网站怎么样凡科网微信小程序
  • 广州网站设计公司兴田德润活动盘古百度推广靠谱吗
  • 装修公司的网站怎么做成都竞价托管多少钱
  • 企业网站栏目规划的重要性网站百度关键词优化
  • 西双网站建设合肥百度关键词优化
  • 网站建设需要会什么怎么优化网站排名才能起来
  • 网上学习网站有哪些网站外部优化的4大重点
  • 新余专业做淘宝网站关键词包括哪些内容
  • 大悟网站建设友情链接
  • 什么网站可以兼职做平面设计成都seo整站
  • 做网站泰安在线seo优化