@tapni/auth 0.0.168 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/.vite/manifest.json +48 -10
  2. package/dist/Account-IR-XgmiM.js +153 -0
  3. package/dist/Apps-CQXLKu2F.js +112 -0
  4. package/dist/CustomApp-FxfYHVid.js +112 -0
  5. package/dist/General-BVjTsECb.js +477 -0
  6. package/dist/{QR-UQySwgoT.js → QR-B60f-H2Q.js} +11 -11
  7. package/dist/TapniAuth.es.js +1 -1
  8. package/dist/TapniAuth.umd.js +17 -17
  9. package/dist/index.css +193 -0
  10. package/dist/{install-KFv1Z6O7.js → install-BOPYSGGa.js} +3487 -3504
  11. package/dist/style.css +1 -1
  12. package/dist/{web-NrPZl3qD.js → web-XbruGdlD.js} +2 -5
  13. package/package.json +3 -3
  14. package/src/App.vue +6 -19
  15. package/src/components/{Language.vue → DELETE_Language.vue} +26 -16
  16. package/src/components/{LinkIcon.vue → DELETE_LinkIcon.vue} +1 -1
  17. package/src/components/{ModalOverlay.vue → DELETE_ModalOverlay.vue} +2 -2
  18. package/src/components/{OTP.vue → DELETE_OTP.vue} +3 -3
  19. package/src/main.js +1 -0
  20. package/src/mixins/DELETE_mfa-auth.mixin.js +53 -0
  21. package/src/mixins/auth.mixin.js +7 -1
  22. package/src/mixins/global.mixin.js +7 -0
  23. package/src/routes.js +27 -15
  24. package/src/store/auth.js +1 -1
  25. package/src/store/constants.js +2 -6
  26. package/src/store/locales/cn.js +1 -1
  27. package/src/store/locales/en.js +28 -3
  28. package/src/views/Account.vue +72 -110
  29. package/src/views/Apps.vue +106 -0
  30. package/src/views/CustomApp.vue +106 -0
  31. package/src/views/General.vue +192 -0
  32. package/src/views/Login.vue +27 -10
  33. package/src/views/QR.vue +1 -1
  34. package/src/views/Security.vue +322 -0
  35. package/src/views/Welcome.vue +10 -4
  36. package/dist/Account-uZVmDKkt.js +0 -113
  37. package/src/mixins/mfa-auth.mixin.js +0 -76
  38. package/src/views/MFA.vue +0 -117
  39. /package/dist/{web-L3jORB19.js → web-AXRKjAOB.js} +0 -0
  40. /package/dist/{web-5VtGcKeU.js → web-IFGkBi0t.js} +0 -0
  41. /package/dist/{web-AImUTDQQ.js → web-LIfHmYL2.js} +0 -0
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .app-store-icon[data-v-615ed484]{box-shadow:0 4px 10px #00000017;border-radius:12px}#codeInput[data-v-89d98ef3],#emailInput[data-v-89d98ef3],#emailInput[data-v-69a9cfa3]{text-align:center;padding-right:15%;font-size:17px}.fade-enter-to[data-v-17c95816]{opacity:1}.sso-img[data-v-11f19a09]{margin:2px auto 0;width:35px}input[data-v-11f19a09]{margin:0 auto;height:25px}.sso-img[data-v-4f821f65]{margin:2px auto 0;width:35px}input[data-v-4f821f65]{margin:0 auto;height:25px}.link-grid,.user-link-img{width:100%;display:inline-table;position:relative}.link-grid{width:30%;margin:1.6%;padding:1.6%}.link-grid .user-link-img img{border-radius:25%!important}.link-grid .edit-icon{border-radius:20px;right:-3%;top:-3%;position:absolute;z-index:3;max-width:23%;overflow:hidden;min-width:30px}.link-grid .direct-icon{border-radius:20px;left:-3%;top:-3%;position:absolute;z-index:555;max-width:23%;overflow:hidden;min-width:30px}.link-grid .link-text{min-height:20px;margin-top:3px!important;display:block;text-align:center;line-height:normal;overflow-wrap:anywhere}.link-list{width:93%;max-height:67px!important;margin:0 auto;display:flex;border-radius:15px!important;background-color:#fff;border:solid 1px #e8e8e8;position:relative;align-items:center}.link-list .user-link-img{display:inline-block;width:65px;border-radius:25%!important}.link-list .link-text{display:inline-block;padding:18px 0% 17px 10%;font-size:15px;font-weight:500;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:1;text-align:left;border-radius:15px!important}.link-list .edit-icon{border-radius:20px;right:7%;top:30%;position:absolute;z-index:3;width:26px;overflow:hidden}.link-list .switching{width:45px}.link-list .direct-icon{border-radius:20px;left:-2%;top:-13%;position:absolute;z-index:555;width:26px;overflow:hidden}.small{width:22%!important;margin:2% 4% 0%;padding:0%}.small .link-text{margin-top:0!important;font-size:13px}.linkExternal{margin-right:20px;width:20px;display:inline-block!important;height:20px;background:#000;-webkit-mask:url(https://cdn.tapni.co/icons/link-external.svg) no-repeat center;mask:url(https://cdn.tapni.co/icons/link-external.svg) no-repeat center;transform:scale(1.5)}.user-img[data-v-a49a90e5]{margin:2px auto 0;width:65px}input[data-v-a49a90e5]{margin:0 auto;height:25px}html *{font-family:Inter,sans-serif}#bodyId{padding-top:3%;max-width:667px!important;margin:1.5% auto auto;height:95%!important;border-radius:20px}.action-block-top .default-text,.action-block-top .default-text:after{border-radius:50%;width:10em!important;height:10em!important}.action-block-top .default-text{margin:10px auto;font-size:3px;position:relative;text-indent:-9999em;border-left:.5em solid #000000;border-top:.5em solid rgba(0,0,0,.2);border-right:.5em solid rgba(0,0,0,.2);border-bottom:.5em solid rgba(0,0,0,.2);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.smartbanner-ios{background:linear-gradient(to bottom,#f4f4f4,#f4f4f4);box-shadow:0 0 #fff;border-bottom:1px solid #dddddd}.smartbanner-icon{border-radius:16px}.smartbanner-ios .smartbanner-button{font-size:13px;padding:9px 0;height:40px;border-radius:13px;background:#f4f4f4;color:#0a99d2;border:none;box-shadow:none;text-transform:uppercase}.snack-body{display:none;border-radius:40px;font-size:15px!important}#errorSnack{background-color:#fee3e3!important;border:2px solid #edd9d9!important;color:#000}#successSnack{background-color:#eff5eb!important;border:2px solid #e3ecd7!important;color:#000}.grecaptcha-badge{visibility:hidden}.header-logo{position:absolute;left:50%;transform:translate(-50%,-50%);margin-top:0;z-index:2}.header-logo-img{height:40px;margin-top:10px}.container[data-v-992c1e64]{padding:20px 20px 100px!important;display:flex;flex-direction:column;gap:20px}.settingsCard[data-v-992c1e64]{background-color:#fff;padding:20px;border-radius:26px;align-items:center}.device[data-v-992c1e64]{display:flex;align-items:center}h4[data-v-992c1e64]{margin-left:20px;font-weight:700}.middle[data-v-992c1e64]{flex:1}.left img[data-v-992c1e64]{background-color:#f7f8f9;border-radius:20px;padding:10px}.divider[data-v-992c1e64]{height:1px;background-color:#f0f0f0;margin:20px 0}.moreFooter[data-v-992c1e64]{display:flex;align-items:center;justify-content:space-between;padding:0 10px}
1
+ .app-store-icon[data-v-7aad6400]{box-shadow:0 4px 10px #00000017;border-radius:12px}#codeInput[data-v-89d98ef3],#emailInput[data-v-89d98ef3]{text-align:center;padding-right:15%;font-size:17px}.firstRow img[data-v-04b9da4f]{width:25px;height:25px;position:absolute;top:50%;right:0;transform:translate(-50%,-50%)}#emailInput[data-v-69a9cfa3]{text-align:center;padding-right:15%;font-size:17px}.fade-enter-to[data-v-e5fbde19]{opacity:1}.sso-img[data-v-11f19a09]{margin:2px auto 0;width:35px}input[data-v-11f19a09]{margin:0 auto;height:25px}.sso-img[data-v-4f821f65]{margin:2px auto 0;width:35px}input[data-v-4f821f65]{margin:0 auto;height:25px}.link-grid,.user-link-img{width:100%;display:inline-table;position:relative}.link-grid{width:30%;margin:1.6%;padding:1.6%}.link-grid .user-link-img img{border-radius:25%!important}.link-grid .edit-icon{border-radius:20px;right:-3%;top:-3%;position:absolute;z-index:3;max-width:23%;overflow:hidden;min-width:30px}.link-grid .direct-icon{border-radius:20px;left:-3%;top:-3%;position:absolute;z-index:555;max-width:23%;overflow:hidden;min-width:30px}.link-grid .link-text{min-height:20px;margin-top:3px!important;display:block;text-align:center;line-height:normal;overflow-wrap:anywhere}.link-list{width:93%;max-height:67px!important;margin:0 auto;display:flex;border-radius:15px!important;background-color:#fff;border:solid 1px #e8e8e8;position:relative;align-items:center}.link-list .user-link-img{display:inline-block;width:65px;border-radius:25%!important}.link-list .link-text{display:inline-block;padding:18px 0% 17px 10%;font-size:15px;font-weight:500;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:1;text-align:left;border-radius:15px!important}.link-list .edit-icon{border-radius:20px;right:7%;top:30%;position:absolute;z-index:3;width:26px;overflow:hidden}.link-list .switching{width:45px}.link-list .direct-icon{border-radius:20px;left:-2%;top:-13%;position:absolute;z-index:555;width:26px;overflow:hidden}.small{width:22%!important;margin:2% 4% 0%;padding:0%}.small .link-text{margin-top:0!important;font-size:13px}.linkExternal{margin-right:20px;width:20px;display:inline-block!important;height:20px;background:#000;-webkit-mask:url(https://cdn.tapni.co/icons/link-external.svg) no-repeat center;mask:url(https://cdn.tapni.co/icons/link-external.svg) no-repeat center;transform:scale(1.5)}.user-img[data-v-ce677789]{margin:2px auto 0;width:65px}input[data-v-ce677789]{margin:0 auto;height:25px}html *{font-family:Inter,sans-serif}#bodyId{padding-top:3%;max-width:667px!important;margin:1.5% auto auto;height:95%!important;border-radius:20px}.action-block-top .default-text,.action-block-top .default-text:after{border-radius:50%;width:10em!important;height:10em!important}.action-block-top .default-text{margin:10px auto;font-size:3px;position:relative;text-indent:-9999em;border-left:.5em solid #000000;border-top:.5em solid rgba(0,0,0,.2);border-right:.5em solid rgba(0,0,0,.2);border-bottom:.5em solid rgba(0,0,0,.2);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.smartbanner-ios{background:linear-gradient(to bottom,#f4f4f4,#f4f4f4);box-shadow:0 0 #fff;border-bottom:1px solid #dddddd}.smartbanner-icon{border-radius:16px}.smartbanner-ios .smartbanner-button{font-size:13px;padding:9px 0;height:40px;border-radius:13px;background:#f4f4f4;color:#0a99d2;border:none;box-shadow:none;text-transform:uppercase}.snack-body{display:none;border-radius:40px;font-size:15px!important}#errorSnack{background-color:#fee3e3!important;border:2px solid #edd9d9!important;color:#000}#successSnack{background-color:#eff5eb!important;border:2px solid #e3ecd7!important;color:#000}.grecaptcha-badge{visibility:hidden}.header-logo{position:absolute;left:50%;transform:translate(-50%,-50%);margin-top:0;z-index:2}.header-logo-img{height:40px;margin-top:10px}.withBackground[data-v-3e0687c7],.withBackground[data-v-851bd608]{height:50px}[data-v-a6dcb82a] .vue-select{padding:5px 0}[data-v-a6dcb82a] .vue-select .dropdown-icon{color:#1d1d1d;width:25px!important;height:25px!important}[data-v-a6dcb82a] .vue-select .menu-option:hover{background-color:#d9d9d9}[data-v-a6dcb82a] .vue-select .menu-option.focused{background-color:#f4f4f4}[data-v-a6dcb82a] .vue-select .menu-option{border-bottom:1px solid #D9D9D9;font-size:15px;color:#151515}[data-v-a6dcb82a] .vue-select .menu-option:last-child{border-bottom:none}[data-v-a6dcb82a] .vue-select .menu{border-radius:10px;border:none}[data-v-a6dcb82a] .vue-select .control.focused{border:none;box-shadow:none}[data-v-a6dcb82a] .vue-select .control{min-height:54px!important;background-color:#f4f4f4;border:none;border-radius:10px}[data-v-a6dcb82a] .vue-select .menu-option.selected{background-color:#e4e4e4}[data-v-a6dcb82a] .vue-select .indicators-container{padding:5px 15px!important}[data-v-a6dcb82a] .vue-select .value-container{padding:5px 15px}[data-v-a6dcb82a] .vue-select .menu-option{background-color:#f4f4f4}
@@ -11,9 +11,7 @@ var w = { exports: {} };
11
11
  })("$script", function() {
12
12
  var i = document, p = i.getElementsByTagName("head")[0], I = !1, m = "push", S = "readyState", A = "onreadystatechange", s = {}, o = {}, d = {}, f, v;
13
13
  function g(e, t) {
14
- for (var n = 0, u = e.length; n < u; ++n)
15
- if (!t(e[n]))
16
- return I;
14
+ for (var n = 0, u = e.length; n < u; ++n) if (!t(e[n])) return I;
17
15
  return 1;
18
16
  }
19
17
  function h(e, t) {
@@ -36,8 +34,7 @@ var w = { exports: {} };
36
34
  }
37
35
  return setTimeout(function() {
38
36
  h(e, function c(a, W) {
39
- if (a === null)
40
- return _();
37
+ if (a === null) return _();
41
38
  if (!W && !/^https?:\/\//.test(a) && f && (a = a.indexOf(".js") === -1 ? f + a + ".js" : f + a), d[a])
42
39
  return d[a] == 2 ? _() : setTimeout(function() {
43
40
  c(a, !0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapni/auth",
3
- "version": "0.0.168",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "main": "./dist/TapniAuth.umd.js",
6
6
  "module": "./dist/TapniAuth.es.js",
@@ -34,7 +34,7 @@
34
34
  "@otplib/preset-browser": "^12.0.1",
35
35
  "@recognizebv/capacitor-plugin-msauth": "^3.5.1",
36
36
  "@tapni/capacitor-reactive-localstorage-vue3": "^0.0.17",
37
- "@tapni/styles": "^0.0.3",
37
+ "@tapni/styles": "^0.0.8",
38
38
  "await-to-js": "^3.0.0",
39
39
  "axios": "^1.6.5",
40
40
  "buffer": "^6.0.3",
@@ -43,9 +43,9 @@
43
43
  "vue": "^3.3.11",
44
44
  "vue-cookies": "^1.8.3",
45
45
  "vue-router": "^4.2.5",
46
+ "vue3-select-component": "^0.5.2",
46
47
  "vuex": "^4.0.2",
47
48
  "vuex-router-sync": "v6.0.0-rc.1"
48
-
49
49
  },
50
50
  "devDependencies": {
51
51
  "@rollup/plugin-inject": "^5.0.5",
package/src/App.vue CHANGED
@@ -14,15 +14,6 @@ document.addEventListener('DOMContentLoaded', function() {
14
14
  <template>
15
15
  <div id="ssoapp">
16
16
  <a v-if="display === 'redirect' || renderView.includes('Auth')" href="/" class="header-logo"><img src="data:image/png;base64,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" onerror="this.onerror=null;this.src='https://cdn.tapni.co/images/logo-dark.png';" class="header-logo-img"></a>
17
-
18
- <a v-if="display === 'redirect'"
19
- @click="toggleSSOLanguageModal"
20
- class="font-18 no-border pointer color-black"
21
- style="position: absolute; right: 20px; top: -10px; z-index: 1;">
22
- <span class="lang-icon">{{ appLanguage.toUpperCase() }}</span>
23
- </a>
24
-
25
-
26
17
  <ModalOverlay />
27
18
  <Language v-if="!isModal" />
28
19
  <SSO v-if="!isModal" />
@@ -33,7 +24,7 @@ document.addEventListener('DOMContentLoaded', function() {
33
24
  <AuthLogin v-else-if="initialized && renderView === 'AuthLogin'" :isModal="isModal" />
34
25
  <AuthRegister v-else-if="initialized && renderView === 'AuthRegister'" :isModal="isModal" />
35
26
  <AuthVerify v-else-if="initialized && renderView === 'AuthVerify'" :isModal="isModal" />
36
- <AuthMFA v-else-if="initialized && renderView === 'AuthMFA'" :isModal="isModal" :payload="payload" />
27
+ <AuthSecurity v-else-if="initialized && renderView === 'AuthSecurity'" :isModal="isModal" :payload="payload" />
37
28
  <AuthReset v-else-if="initialized && renderView === 'AuthReset'" />
38
29
  <AuthCallback v-else-if="initialized && renderView === 'AuthCallback'" />
39
30
  <RouterView v-else-if="display !== 'npm'" />
@@ -84,16 +75,15 @@ import AuthWelcome from "@/views/Welcome.vue";
84
75
  import AuthLogin from "@/views/Login.vue";
85
76
  import AuthRegister from "@/views/Register.vue";
86
77
  import AuthVerify from "@/views/Verify.vue";
87
- import AuthMFA from "@/views/MFA.vue";
78
+ import AuthSecurity from "@/views/Security.vue";
88
79
  import AuthReset from "@/views/Reset.vue";
89
80
  import AuthCallback from "@/views/Callback.vue";
90
- import ModalOverlay from "@/components/ModalOverlay.vue";
81
+ import ModalOverlay from "@/components/DELETE_ModalOverlay.vue";
91
82
  import SSO from "@/components/SSO.vue";
92
- import OTP from "@/components/OTP.vue";
93
83
  import SSOPick from "@/components/SSOPick.vue";
94
84
  import {EventBus} from "./store/event-bus.js";
95
85
  import AuthMixin from "@/mixins/auth.mixin.js";
96
- import Language from "@/components/Language.vue";
86
+ import Language from "@/components/DELETE_Language.vue";
97
87
  import ReactiveStorage from '@tapni/capacitor-reactive-localstorage-vue3'
98
88
  import store from './store/auth.js';
99
89
 
@@ -109,9 +99,8 @@ export default {
109
99
  },
110
100
  components: {
111
101
  Language,
112
- OTP,
113
102
  SSOPick,
114
- SSO, ModalOverlay, AuthCallback, AuthReset, AuthVerify, AuthMFA, AuthRegister, AuthLogin, AuthWelcome
103
+ SSO, ModalOverlay, AuthCallback, AuthReset, AuthVerify, AuthSecurity, AuthRegister, AuthLogin, AuthWelcome
115
104
  },
116
105
  props: {
117
106
  viewProp: {
@@ -154,6 +143,7 @@ export default {
154
143
  EventBus.$on('refreshTokenAction',(data) => this.refreshTokenAction({...data, storage: this.$storex}))
155
144
  EventBus.$on('switchAccount',(data) => this.switchAccount(data))
156
145
  EventBus.$on('setToken',(data) => this.setToken(data))
146
+ EventBus.$on('setStorage',(data) => this.setStorage(data))
157
147
  },
158
148
  methods: {
159
149
  async init () {
@@ -184,9 +174,6 @@ export default {
184
174
  document.getElementsByTagName("html")[0].style = ""
185
175
  }
186
176
  },
187
- toggleSSOLanguageModal () {
188
- EventBus.$emit('toggleSSOLanguageModal', true)
189
- }
190
177
  },
191
178
  watch: {
192
179
  viewProp (nv) {
@@ -23,80 +23,90 @@
23
23
 
24
24
  <LinkIcon
25
25
  @click.native="updateLanguage('en')"
26
- :link-style="'link-grid'"
26
+ :link-style="'link-list'"
27
27
  :data="{ type: 'lang/en', text: ssoLang[this.appLanguage].english }"
28
28
  :editing="false"
29
29
  :class="{ 'add-button': true }"
30
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
30
31
  />
31
32
 
32
33
  <LinkIcon
33
34
  @click.native="updateLanguage('es')"
34
- :link-style="'link-grid'"
35
+ :link-style="'link-list'"
35
36
  :data="{ type: 'lang/es', text: ssoLang[this.appLanguage].spanish }"
36
37
  :editing="false"
37
38
  :class="{ 'add-button': true }"
39
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
38
40
  />
39
41
 
40
42
  <LinkIcon
41
43
  @click.native="updateLanguage('de')"
42
- :link-style="'link-grid'"
44
+ :link-style="'link-list'"
43
45
  :data="{ type: 'lang/de', text: ssoLang[this.appLanguage].german }"
44
46
  :editing="false"
45
47
  :class="{ 'add-button': true }"
48
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
46
49
  />
47
50
 
48
51
  <LinkIcon
49
52
  @click.native="updateLanguage('it')"
50
- :link-style="'link-grid'"
53
+ :link-style="'link-list'"
51
54
  :data="{ type: 'lang/it', text: ssoLang[this.appLanguage].italian }"
52
55
  :editing="false"
53
56
  :class="{ 'add-button': true }"
57
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
54
58
  />
55
59
 
56
60
  <LinkIcon
57
61
  @click.native="updateLanguage('fr')"
58
- :link-style="'link-grid'"
62
+ :link-style="'link-list'"
59
63
  :data="{ type: 'lang/fr', text: ssoLang[this.appLanguage].french }"
60
64
  :editing="false"
61
65
  :class="{ 'add-button': true }"
66
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
62
67
  />
63
68
 
64
69
  <LinkIcon
65
70
  @click.native="updateLanguage('kr')"
66
- :link-style="'link-grid'"
71
+ :link-style="'link-list'"
67
72
  :data="{ type: 'lang/kr', text: ssoLang[this.appLanguage].korean }"
68
73
  :editing="false"
69
74
  :class="{ 'add-button': true }"
75
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
70
76
  />
71
77
 
72
78
  <LinkIcon
73
79
  @click.native="updateLanguage('sr')"
74
- :link-style="'link-grid'"
80
+ :link-style="'link-list'"
75
81
  :data="{ type: 'lang/sr', text: ssoLang[this.appLanguage].serbian }"
76
82
  :editing="false"
77
83
  :class="{ 'add-button': true }"
84
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
78
85
  />
79
86
 
80
87
  <LinkIcon
81
88
  @click.native="updateLanguage('tr')"
82
- :link-style="'link-grid'"
89
+ :link-style="'link-list'"
83
90
  :data="{ type: 'lang/tr', text: ssoLang[this.appLanguage].turkish }"
84
91
  :editing="false"
85
92
  :class="{ 'add-button': true }"
93
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
94
+ />
95
+
96
+ <LinkIcon
97
+ @click.native="updateLanguage('cn')"
98
+ :link-style="'link-list'"
99
+ :data="{ type: 'lang/cn', text: ssoLang[this.appLanguage].chinese }"
100
+ :editing="false"
101
+ :class="{ 'add-button': true }"
102
+ :customLinkStyle="{ linkIcon: { display: 'none' }}"
86
103
  />
87
- <!--
88
- <LinkIcon @click.native="updateLanguage('cn')"
89
- :link-style="'link-grid'"
90
- :data="{ type: 'lang/cn', text: ssoLang[this.appLanguage].chinese }"
91
- :editing="false"
92
- :class="{ 'add-button': true }" />
93
- -->
94
104
  </div>
95
105
  </template>
96
106
 
97
107
  <script>
98
108
  import { EventBus } from "../store/event-bus.js";
99
- import LinkIcon from "./LinkIcon.vue";
109
+ import LinkIcon from "./DELETE_LinkIcon.vue";
100
110
  import UtilService from "../services/UtilService.js";
101
111
  import CONSTANTS from "../store/constants.js";
102
112
  import { Device } from "@capacitor/device";
@@ -4,7 +4,7 @@
4
4
  :class="linkStyle + (disabled ? ' opacity-50' : '')"
5
5
  :style="
6
6
  (editing ? 'cursor: move' : 'cursor: pointer') +
7
- '!important; overflow: visible;'
7
+ '!important; overflow: visible; margin-top: 5px;'
8
8
  "
9
9
  >
10
10
 
@@ -35,8 +35,8 @@ export default {
35
35
  // EventBus.$on('togglePasswordModal', this.toggleModal)
36
36
  // EventBus.$on('toggleAddAccountModal', this.toggleModal)
37
37
  // EventBus.$on("toggleAccountSettingsModal", this.toggleModal);
38
- EventBus.$on("toggleSSOLanguageModal", this.toggleModal);
39
- EventBus.$on("toggleOTPModal", this.toggleModal);
38
+ // EventBus.$on("toggleSSOLanguageModal", this.toggleModal);
39
+ // EventBus.$on("toggleOTPField", this.toggleModal);
40
40
  EventBus.$on("toggleSSOModal", this.toggleModal);
41
41
  EventBus.$on("toggleSSOPickModal", this.toggleModal);
42
42
  },
@@ -69,13 +69,13 @@ export default {
69
69
  };
70
70
  },
71
71
  mounted() {
72
- EventBus.$on("toggleOTPModal", this.toggleModal);
72
+ EventBus.$on("toggleOTPField", this.toggleModal);
73
73
  EventBus.$on("closeModal", () => {
74
74
  this.toggle = false;
75
75
  });
76
76
  },
77
77
  beforeDestroy() {
78
- EventBus["_events"]["toggleOTPModal"].pop();
78
+ EventBus["_events"]["toggleOTPField"].pop();
79
79
  },
80
80
  methods: {
81
81
  forceClose() {
@@ -91,7 +91,7 @@ export default {
91
91
 
92
92
  this.loading = true;
93
93
  EventBus.$emit('otpSubmitted', this.otp);
94
- EventBus.$emit("toggleOTPModal")
94
+ EventBus.$emit("toggleOTPField")
95
95
  this.loading = false;
96
96
  },
97
97
  toggleModal() {
package/src/main.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import "@tapni/styles/dist/index.css";
2
+ import "../public/index.css";
2
3
  import { createApp } from 'vue'
3
4
  import RootApp from './App.vue'
4
5
  import router from './router'
@@ -0,0 +1,53 @@
1
+ import QRCodeStyling from "qr-code-styling";
2
+ import { authenticator } from "@otplib/preset-browser";
3
+ import {EventBus} from "@/store/event-bus.js";
4
+
5
+ export default {
6
+ data () {
7
+ return {
8
+ accountDelete: false,
9
+
10
+ changePassword: false,
11
+ password: '',
12
+ passwordRepeat: '',
13
+ currentPassword: '',
14
+
15
+ otpToken: null,
16
+ otpSecret: null,
17
+ mfaEnable: false,
18
+ otp: "",
19
+ qrCodeHash: null,
20
+ qrCodeRefreshInterval: null,
21
+ poolingInterval: null,
22
+ loading: false,
23
+ }
24
+ },
25
+ props: {
26
+ isModal: {
27
+ type: Boolean,
28
+ required: false,
29
+ default: false,
30
+ },
31
+ },
32
+ computed: {
33
+ promptMFA () {
34
+ return false;
35
+ }
36
+ },
37
+ async mounted () {
38
+ if (this.renderView === 'AuthSecurity') {
39
+ await this.getAccountSettings();
40
+ this.generateOTPQrCode();
41
+ }
42
+
43
+ EventBus.$on('otpSubmitted', this.otpSubmitted)
44
+ },
45
+ methods: {
46
+ otpSubmitted(code) {
47
+ this.otpToken = code;
48
+
49
+ // Assuming that the parent component had a method called submit
50
+ this.submit();
51
+ },
52
+ },
53
+ }
@@ -4,6 +4,13 @@ import GlobalMixin from './global.mixin'
4
4
 
5
5
  export default {
6
6
  mixins: [GlobalMixin],
7
+ props: {
8
+ isModal: {
9
+ type: Boolean,
10
+ required: false,
11
+ default: false,
12
+ },
13
+ },
7
14
  computed: {
8
15
  ...mapState([
9
16
  '$storex',
@@ -31,7 +38,6 @@ export default {
31
38
  ...mapActions([
32
39
  'setLoggedInAccounts',
33
40
  'setLoggedInUserId',
34
- 'getRefreshTokens',
35
41
  'setRefreshToken',
36
42
  'unsetRefreshToken',
37
43
  'setToken',
@@ -29,6 +29,13 @@ export default {
29
29
  },
30
30
  },
31
31
  methods: {
32
+ getIcon(icon) {
33
+ if (!this.isNative && false) {
34
+ return 'https://cdn.tapni.co/icons/' + icon;
35
+ } else {
36
+ return `http://localhost:7777/icons/${icon}`;
37
+ }
38
+ },
32
39
  errorHandler(error) {
33
40
  if (error && error.response && error.response.data && error.response.data.error) {
34
41
  if (
package/src/routes.js CHANGED
@@ -1,18 +1,15 @@
1
- const Welcome = () =>
2
- import("./views/Welcome.vue");
1
+ const Welcome = () => import("./views/Welcome.vue");
3
2
  const Login = () => import("./views/Login.vue");
4
- const Register = () =>
5
- import("./views/Register.vue");
3
+ const Register = () => import("./views/Register.vue");
6
4
  const Reset = () => import("./views/Reset.vue");
7
5
  const Account = () => import("./views/Account.vue");
8
- const Verify = () =>
9
- import("./views/Verify.vue");
10
- const Callback = () =>
11
- import("./views/Callback.vue");
12
- const QR = () =>
13
- import("./views/QR.vue");
14
- const MFA = () =>
15
- import("./views/MFA.vue");
6
+ const Verify = () => import("./views/Verify.vue");
7
+ const Callback = () => import("./views/Callback.vue");
8
+ const QR = () => import("./views/QR.vue");
9
+ const Security = () => import("./views/Security.vue");
10
+ const Apps = () => import("./views/Apps.vue");
11
+ const CustomApp = () => import("./views/CustomApp.vue");
12
+ const General = () => import("./views/General.vue");
16
13
 
17
14
  export default [
18
15
  {
@@ -37,9 +34,24 @@ export default [
37
34
  component: QR,
38
35
  },
39
36
  {
40
- path: "/mfa",
41
- name: "AuthMFA",
42
- component: MFA,
37
+ path: "/security",
38
+ name: "AuthSecurity",
39
+ component: Security,
40
+ },
41
+ {
42
+ path: "/apps",
43
+ name: "AuthApps",
44
+ component: Apps,
45
+ },
46
+ {
47
+ path: "/apps/:app",
48
+ name: "AuthApp",
49
+ component: CustomApp,
50
+ },
51
+ {
52
+ path: "/general",
53
+ name: "AuthGeneral",
54
+ component: General,
43
55
  },
44
56
  {
45
57
  path: "/account",
package/src/store/auth.js CHANGED
@@ -150,7 +150,7 @@ export default {
150
150
  }
151
151
 
152
152
  if (error.response.data.error === 'OTP_REQUIRED') {
153
- return EventBus.$emit('toggleOTPModal', true);
153
+ return EventBus.$emit('toggleOTPField', true);
154
154
  }
155
155
 
156
156
  // Link click network error bug fix
@@ -1,8 +1,4 @@
1
1
  export default {
2
- ANDROID_VERSION: '5.6',
3
- IOS_VERSION: '5.6',
4
- WEB_VERSION: '5.6.0',
5
- SUPPORTED_LANGUAGES: ['en', 'de', 'es', 'kr', 'it', 'fr'],
6
- METAPIXEL_ID: '1203678696914368',
7
- GOOGLE_ANALYTICS_ID: ''
2
+ WEB_VERSION: '1.0.1',
3
+ SUPPORTED_LANGUAGES: ['en', 'de', 'es', 'kr', 'it', 'fr', 'sr', 'tr', 'cn'],
8
4
  }
@@ -8,7 +8,7 @@ export default {
8
8
  french: "法文",
9
9
  serbian: "塞尔维亚文",
10
10
  turkish: "土耳其文",
11
- chinese: "中国人",
11
+ chinese: "簡体中文",
12
12
  app_language: "语言",
13
13
  profile_preview: "个人资料预览",
14
14
  edit_profile: "编辑个人资料",
@@ -514,8 +514,33 @@ export default {
514
514
  mfa: "Multi-Factor Authentication",
515
515
  otp_title: "Enter MFA Code to continue",
516
516
  otp_code: "MFA Code",
517
- otp_subtitle: "To continue, turn on or view your MFA device and type the authentication code below.",
518
- otp_p1: "If you have trouble signing in, <br> please contact us at",
519
- change_language: "Change language"
517
+ otp_subtitle: "Enter the code from your authenticator app",
518
+ otp_p1: "If you have trouble with MFA, <br> please contact us at",
519
+ change_language: "Change language",
520
+ welcome_account: "Welcome to Account Center",
521
+ security: "Security",
522
+ security_p: "Manage your authentication options & account status",
523
+ general: "General",
524
+ general_p: "Manage your personal details & other preferences",
525
+ billing: "Billing",
526
+ apps: "Apps",
527
+ apps_p: "View your active apps & explore other",
528
+ apps_my: "My apps",
529
+ mfa_auth: '2 Factor Authentication',
530
+ mfa_auth_enabled: 'Your account is protected via MFA.',
531
+ mfa_auth_p: 'Protect your account from unauthorized access by enabling multi-factor authentication (MFA)',
532
+ mfa_auth_qr: 'Scan the QR code above or enter the secret key into your authenticator app.',
533
+ change_password: 'Change Password',
534
+ active_account: 'Active Account',
535
+ active_account_p: 'When turned off, your account will be temporary deactivated until turned back on.',
536
+ delete_account: 'Delete Account',
537
+ delete_account_p: 'Delete Account',
538
+ permanent_delete: 'Permanent delete',
539
+ permanent_delete_p: 'If you delete your account, all your data will be permanently deleted. This action cannot be undone. If you are unsure, you can temporary deactivate your account.',
540
+
541
+ personal_details: 'Personal Details',
542
+ app_language_p: 'Translate the app on your preferred language',
543
+ app_region: 'Region',
544
+ app_region_p: 'Select your region for personalized billing and support experience',
520
545
  },
521
546
  };