DingTalkLogin.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <template>
  2. <div class="divClass">认证中...</div>
  3. </template>
  4. <script>
  5. import AuthSettingResource from '../api/commom/AuthSettingResource.js';
  6. export default {
  7. components: {
  8. },
  9. data: function () {
  10. return {
  11. isUniqueLoginModel: false, //唯一认证方式
  12. }
  13. },
  14. mounted: function () {
  15. this.getIsUniqueLoginModel();
  16. this.initData();
  17. },
  18. methods: {
  19. /**
  20. * 初始化数据
  21. * @author GuoZhiBo 20200218
  22. */
  23. initData: function () {
  24. var _self = this;
  25. _self.appName = _self.$route.query.appName;
  26. console.log(_self.$route.query);
  27. console.log(_self.appName);
  28. if (
  29. _self.appName != undefined &&
  30. window.dd != undefined &&
  31. window.dd.env.platform != 'notInDingTalk'
  32. ) {
  33. _self.corpId = _self.$route.query.corpId;
  34. _self.clientId = _self.$route.query.clientId;
  35. _self.type = 'Ding';
  36. _self.getDingDingConfig();
  37. } else {
  38. _self.type = 'Browser';
  39. }
  40. },
  41. /**
  42. * 获取钉钉免登Config
  43. */
  44. getDingDingConfig: function () {
  45. var _self = this;
  46. //获取临时登录码
  47. window.dd.ready(function () {
  48. window.dd.runtime.permission.requestAuthCode({
  49. corpId: _self.corpId, // 企业id
  50. onSuccess: function (info) {
  51. _self.code = info.code; // 通过该免登授权码可以获取用户身份
  52. _self.dingDingAutoLogin();
  53. },
  54. });
  55. });
  56. },
  57. /**
  58. * 钉钉自动登录
  59. */
  60. dingDingAutoLogin: function () {
  61. var _self = this;
  62. $.ajax({
  63. url:
  64. Common.getApiUrl2('authApi/LoginResource/dingTalkAutoLogin'),
  65. data: {
  66. code: _self.code,
  67. clientId: _self.clientId,
  68. appName: _self.appName,
  69. languageId: _self.languageSelected,
  70. },
  71. type: 'GET',
  72. dataType: 'json',
  73. success: function (loginInfo) {
  74. Common.clearLocalStorage();
  75. // path为指定路径,直接删除该路径下的cookie
  76. $.removeCookie('token', { path: '/' });
  77. // bug fixed by jack
  78. // 清除掉/pcapp路径的cookie
  79. $.removeCookie('token', { path: '/pcapp' });
  80. $.cookie('token', loginInfo.token, { expires: 7, path: '/', secure: true, sameSite: 'Strict' });
  81. $('#input-pwd').attr('type', 'text').val('');
  82. if (_self.redirectUrl != '' && _self.redirectUrl.length > 0) {
  83. window.location = _self.redirectUrl;
  84. } else {
  85. _self.$router.push('/desktop/dashboard');
  86. }
  87. loginInfo.accountName = _self.accountItem.accountName;
  88. LoginService.setLoginInfo(loginInfo.data, _self.$router);
  89. LoginService.saveLocalStorage(_self);
  90. _self.saveLocalStorage(loginInfo);
  91. _self.setTokenClient();
  92. },
  93. error: function (e) {
  94. _self.isDing = 'Browser';
  95. },
  96. });
  97. },
  98. /**
  99. * 设置TokenClient
  100. * @param {Object} TokenClient
  101. */
  102. setTokenClient: function(){
  103. TokenClientResource.saveTokenClient().then(
  104. successData => {
  105. if (successData != null) {
  106. console.log(successData);
  107. }
  108. },
  109. );
  110. },
  111. }
  112. }
  113. </script>
  114. <style scoped>
  115. .divClass {
  116. text-align: center;
  117. font-size: 30px;
  118. color: red;
  119. }
  120. </style>