@tapni/auth 1.0.5 → 1.0.6-3.dev
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.
- package/README.md +2 -0
- package/dist/.vite/manifest.json +16 -43
- package/dist/.well-known/assetlinks.json +10 -12
- package/dist/.well-known/microsoft-identity-association.json +5 -5
- package/dist/{Apps-DMds3Dv-.js → Apps-XNA4_3B4.js} +34 -34
- package/dist/Billing-Br0-fHed.js +256 -0
- package/dist/CustomApp-CrlbYDOm.js +83 -0
- package/dist/QR-Bvqb60-E.js +41 -0
- package/dist/TapniAuth.es.js +1 -1
- package/dist/TapniAuth.umd.js +49 -23
- package/dist/{install-L-cxSovH.js → install-7FOVy8Ol.js} +6267 -4743
- package/dist/site.webmanifest +11 -1
- package/dist/style.css +1 -1
- package/dist/{web-IFGkBi0t.js → web-UrTMimK1.js} +2 -2
- package/package.json +65 -55
- package/src/.prettierrc.json +16 -0
- package/src/App.vue +326 -269
- package/src/eslint.config.js +15 -0
- package/src/index.js +4 -0
- package/src/install.js +9 -10
- package/src/main.js +54 -57
- package/src/mixins/apple.mixin.js +56 -54
- package/src/mixins/auth.mixin.js +3 -2
- package/src/mixins/global.mixin.js +3 -3
- package/src/mixins/google.mixin.js +53 -54
- package/src/mixins/microsoft.mixin.js +2 -5
- package/src/mixins/okta.mixin.js +1 -1
- package/src/mixins/qr-auth.mixin.js +111 -107
- package/src/mixins/saml.mixin.js +82 -45
- package/src/router/index.js +6 -6
- package/src/routes.js +1 -1
- package/src/services/Api.js +56 -58
- package/src/services/AuthService.js +7 -9
- package/src/services/CompanyService.js +10 -10
- package/src/services/DeviceService.js +3 -3
- package/src/services/UserService.js +48 -45
- package/src/services/UtilService.js +317 -225
- package/src/store/auth.js +485 -549
- package/src/store/constants.js +2 -2
- package/src/store/event-bus.js +22 -22
- package/src/store/locales/cn.js +476 -458
- package/src/store/locales/de.js +478 -517
- package/src/store/locales/en.js +454 -513
- package/src/store/locales/es.js +477 -524
- package/src/store/locales/fr.js +477 -516
- package/src/store/locales/it.js +477 -514
- package/src/store/locales/ja.js +488 -0
- package/src/store/locales/kr.js +477 -491
- package/src/store/locales/lang.js +51 -43
- package/src/store/locales/pt.js +488 -0
- package/src/store/locales/sr.js +477 -492
- package/src/store/locales/tr.js +477 -487
- package/src/store/store.js +6 -6
- package/src/views/Account.vue +36 -8
- package/src/views/Billing.vue +464 -34
- package/src/views/Callback.vue +36 -33
- package/src/views/General.vue +151 -185
- package/src/views/Login.vue +2 -25
- package/src/views/Register.vue +2 -12
- package/src/views/Reset.vue +132 -135
- package/src/views/Security.vue +13 -7
- package/src/views/Verify.vue +153 -151
- package/src/views/Welcome.vue +85 -71
- package/dist/Account-Cuz87g_8.js +0 -153
- package/dist/Billing-BXlQEuNy.js +0 -113
- package/dist/CustomApp-CLCMXmMO.js +0 -83
- package/dist/General-dW73bMoR.js +0 -479
- package/dist/QR-D6ZGcPM0.js +0 -41
- package/dist/index.css +0 -193
- package/dist/web-AXRKjAOB.js +0 -92
- package/src/components/DELETE_Language.vue +0 -168
- package/src/components/DELETE_LinkIcon.vue +0 -288
- package/src/components/DELETE_ModalOverlay.vue +0 -68
- package/src/components/DELETE_OTP.vue +0 -105
- package/src/components/DELETE_SSO.vue +0 -120
- package/src/components/DELETE_SSOPick.vue +0 -166
- package/src/mixins/DELETE_mfa-auth.mixin.js +0 -53
- package/src/mixins/facebook.mixin.js +0 -78
package/src/views/Verify.vue
CHANGED
|
@@ -1,170 +1,172 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
2
|
+
<form class="page-login content-boxed content-boxed-padding" @submit.prevent="submit" :style="isModal ? 'max-width: 500px;' : ''">
|
|
3
|
+
<a v-if="isModal" @click="close" class="color-black pull-right pointer" style="margin-top: 0px; position: absolute; right: -20px; text-align: right">
|
|
4
|
+
<i class="font-17 color-black">
|
|
5
|
+
<img src="https://cdn.tapni.co/icons/down-arrow.png" class="responsive-image" style="width: 35%" />
|
|
6
|
+
</i>
|
|
7
|
+
</a>
|
|
8
|
+
<h1 class="bold no-bottom center-text text-[24px]" style="margin-top: 63px">{{ ssoLang[this.appLanguage].verify_account }}</h1>
|
|
9
|
+
<p class="half-bottom half-top center-text color-black"></p>
|
|
10
|
+
<div class="page-login-field half-top">
|
|
11
|
+
<i style="padding-top: 15px; margin-left: 10px">
|
|
12
|
+
<img src="https://cdn.tapni.co/icons/mail.png" class="responsive-image" style="width: 80%" />
|
|
13
|
+
</i>
|
|
14
|
+
<input id="emailInput" v-model="email" @keydown.space.prevent type="email" :placeholder="ssoLang[this.appLanguage].email" required />
|
|
15
|
+
<em></em>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="page-login-field half-top">
|
|
18
|
+
<i style="padding-top: 15px; margin-left: 10px">
|
|
19
|
+
<img src="https://cdn.tapni.co/icons/password2.png" class="responsive-image" style="width: 100%" />
|
|
20
|
+
</i>
|
|
21
|
+
<input id="codeInput" v-model="code" @keydown.space.prevent type="tel" :placeholder="ssoLang[this.appLanguage].code" required />
|
|
22
|
+
<em></em>
|
|
23
|
+
</div>
|
|
24
|
+
<button type="submit" class="button black-button google-button bg-tapni-grey button-90 button-center uppercase bold full-top">
|
|
25
|
+
<span v-if="!submitted" class="uppercase">{{ ssoLang[this.appLanguage].verify_account }}</span>
|
|
26
|
+
<span v-else class="button--loading button__loader"></span>
|
|
27
|
+
</button>
|
|
28
|
+
<div class="decoration decoration-lines-thin no-bottom"></div>
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
<p class="close-text center-text half-top color-black">
|
|
31
|
+
<span v-html="ssoLang[this.appLanguage].verify_account_p1"></span>
|
|
32
|
+
<a href="mailto:support@tapni.com?subject=Email Verification"> support@tapni.com</a>
|
|
33
|
+
</p>
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
<div class="decoration decoration-lines-thin no-bottom"></div>
|
|
36
|
+
<div v-if="!isModal" class="page-login-links">
|
|
37
|
+
<router-link class="create float-right" to="/register">{{ ssoLang[this.appLanguage].register }}</router-link>
|
|
38
|
+
<router-link class="forgot float-left" to="/login">{{ ssoLang[this.appLanguage].sign_in }}</router-link>
|
|
39
|
+
<div class="clear"></div>
|
|
40
|
+
</div>
|
|
41
|
+
<div v-else class="page-login-links" @click="registerAccountModal">
|
|
42
|
+
<a class="forgot center-text pointer small-top"
|
|
43
|
+
>{{ ssoLang[this.appLanguage].or }} <br />
|
|
44
|
+
{{ ssoLang[this.appLanguage].create_new_account }}</a
|
|
45
|
+
>
|
|
46
|
+
<div class="clear"></div>
|
|
47
|
+
</div>
|
|
48
|
+
</form>
|
|
46
49
|
</template>
|
|
47
50
|
|
|
48
51
|
<script>
|
|
49
|
-
import {EventBus} from
|
|
50
|
-
import AuthMixin from
|
|
52
|
+
import { EventBus } from '../store/event-bus';
|
|
53
|
+
import AuthMixin from '../mixins/auth.mixin';
|
|
51
54
|
export default {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.email = this.email.trim()
|
|
102
|
-
this.code = this.code.trim()
|
|
55
|
+
name: 'AuthVerify',
|
|
56
|
+
mixins: [AuthMixin],
|
|
57
|
+
props: {
|
|
58
|
+
isModal: {
|
|
59
|
+
type: Boolean,
|
|
60
|
+
required: false,
|
|
61
|
+
default: false
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
data() {
|
|
65
|
+
return {
|
|
66
|
+
loading: true,
|
|
67
|
+
submitted: false,
|
|
68
|
+
action: 'verify',
|
|
69
|
+
email: '',
|
|
70
|
+
code: '',
|
|
71
|
+
captcha: ''
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
mounted() {
|
|
75
|
+
if (this.$storex.verifyEmail) this.email = this.$storex.verifyEmail;
|
|
76
|
+
if (this.$route) this.init();
|
|
77
|
+
},
|
|
78
|
+
methods: {
|
|
79
|
+
init() {
|
|
80
|
+
// if (this.isLoggedIn) {
|
|
81
|
+
// this.$router.push(this.home);
|
|
82
|
+
// } else {
|
|
83
|
+
if (this.$storex.verifyEmail) {
|
|
84
|
+
this.email = this.$storex.verifyEmail;
|
|
85
|
+
}
|
|
86
|
+
if (this.$route.hash === '#reset') {
|
|
87
|
+
this.action = 'reset';
|
|
88
|
+
}
|
|
89
|
+
if (this.$route.query.e) {
|
|
90
|
+
this.email = this.$route.query.e;
|
|
91
|
+
}
|
|
92
|
+
if (this.$route.query.c) {
|
|
93
|
+
this.code = this.$route.query.c;
|
|
94
|
+
}
|
|
95
|
+
EventBus.$emit('ssoEvent', { name: 'setLoading', data: false });
|
|
96
|
+
// }
|
|
97
|
+
},
|
|
98
|
+
async submit() {
|
|
99
|
+
// if (this.captcha === '') return this._vm.errorHandler({ message: 'Please select recaptcha' });
|
|
100
|
+
if (this.code.length !== 6) {
|
|
101
|
+
return this.errorSnack(this.ssoLang[this.appLanguage].invalid_code);
|
|
102
|
+
}
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
email: this.email,
|
|
107
|
-
captchaToken: await this.getCaptchaToken('account_verify')
|
|
108
|
-
}
|
|
104
|
+
this.email = this.email.trim();
|
|
105
|
+
this.code = this.code.trim();
|
|
109
106
|
|
|
110
|
-
|
|
111
|
-
|
|
107
|
+
let data = {
|
|
108
|
+
code: this.code,
|
|
109
|
+
email: this.email,
|
|
110
|
+
captchaToken: await this.getCaptchaToken('account_verify')
|
|
111
|
+
};
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (response && response.data && response.data.success === true) {
|
|
116
|
-
if (this.action === 'reset') {
|
|
117
|
-
this.$router.push('/reset?c=' + this.code + '&e=' + this.email)
|
|
118
|
-
this.successSnack(this.ssoLang[this.appLanguage].verify_account_success)
|
|
119
|
-
}
|
|
120
|
-
if (this.action === 'verify') {
|
|
121
|
-
if (this.isModal) {
|
|
122
|
-
this.email = ''
|
|
123
|
-
this.code = ''
|
|
124
|
-
EventBus.$emit('closeModal')
|
|
125
|
-
}
|
|
126
|
-
await this.loginSetup(response)
|
|
127
|
-
await this.getLoggedInAccounts()
|
|
128
|
-
this.$storex.verifyEmail = '';
|
|
129
|
-
this.$router.push('/' + response.data.data.username + '#edit')
|
|
130
|
-
this.successSnack(this.ssoLang[this.appLanguage].verify_account_success2)
|
|
131
|
-
}
|
|
132
|
-
} else this.submitted = false
|
|
113
|
+
if (this.submitted) return false;
|
|
114
|
+
this.submitted = true;
|
|
133
115
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
116
|
+
let response = await this.verify(data);
|
|
117
|
+
this.submitted = false;
|
|
118
|
+
if (response && response.data && response.data.success === true) {
|
|
119
|
+
if (this.action === 'reset') {
|
|
120
|
+
this.$router.push('/reset?c=' + this.code + '&e=' + this.email);
|
|
121
|
+
this.successSnack(this.ssoLang[this.appLanguage].verify_account_success);
|
|
122
|
+
}
|
|
123
|
+
if (this.action === 'verify') {
|
|
124
|
+
if (this.isModal) {
|
|
125
|
+
this.email = '';
|
|
126
|
+
this.code = '';
|
|
127
|
+
EventBus.$emit('closeModal');
|
|
128
|
+
}
|
|
129
|
+
await this.loginSetup(response);
|
|
130
|
+
await this.getLoggedInAccounts();
|
|
131
|
+
this.$storex.verifyEmail = '';
|
|
132
|
+
this.$router.push('/' + response.data.data.username + '#edit');
|
|
133
|
+
this.successSnack(this.ssoLang[this.appLanguage].verify_account_success2);
|
|
134
|
+
}
|
|
135
|
+
} else this.submitted = false;
|
|
136
|
+
},
|
|
137
|
+
registerAccountModal() {
|
|
138
|
+
EventBus.$emit('ssoEvent', { name: 'toggleAddAccountModalRegister', data: false });
|
|
139
|
+
},
|
|
140
|
+
close() {
|
|
141
|
+
EventBus.$emit('ssoEvent', { name: 'toggleAddAccountModal', data: true });
|
|
142
|
+
}
|
|
145
143
|
},
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
144
|
+
watch: {
|
|
145
|
+
'$storage.verifyEmail'(nv) {
|
|
146
|
+
if (nv) this.email = nv;
|
|
147
|
+
},
|
|
148
|
+
'route.name'(nv, ov) {
|
|
149
|
+
if (!ov && nv) this.init();
|
|
150
|
+
},
|
|
151
|
+
'route.query': {
|
|
152
|
+
handler(nv) {
|
|
153
|
+
if (!this.isEmpty(nv)) this.init();
|
|
154
|
+
},
|
|
155
|
+
deep: true
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
};
|
|
157
159
|
</script>
|
|
158
160
|
|
|
159
161
|
<style scoped>
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
162
|
+
#codeInput {
|
|
163
|
+
text-align: center;
|
|
164
|
+
padding-right: 15%;
|
|
165
|
+
font-size: 17px;
|
|
166
|
+
}
|
|
167
|
+
#emailInput {
|
|
166
168
|
text-align: center;
|
|
167
169
|
padding-right: 15%;
|
|
168
170
|
font-size: 17px;
|
|
169
|
-
|
|
171
|
+
}
|
|
170
172
|
</style>
|
package/src/views/Welcome.vue
CHANGED
|
@@ -1,84 +1,98 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<div v-if=(!this.isNative) style="display: flex; flex-direction: row; justify-content: space-around; width: 90%; margin: 0 auto; margin-top: 40px;" >
|
|
31
|
-
<a href="https://play.google.com/store/apps/details?id=co.tapni.app" target="_blank"><img src="https://cdn.tapni.co/images/playstore.png" class="app-store-icon pointer" style="width:55px"/></a>
|
|
32
|
-
<a href="https://apps.apple.com/ag/app/tapni/id1552930233" target="_blank"><img src="https://cdn.tapni.co/images/appstore.png" class="app-store-icon pointer" style="width:55px"/></a>
|
|
33
|
-
<a href="https://appgallery.huawei.com/#/app/C103931997" target="_blank"><img src="https://cdn.tapni.co/images/appgallery.png" class="app-store-icon pointer" style="width:55px"/></a>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
2
|
+
<div class="page-login content-boxed content-boxed-padding center-text" style="margin-top: -1px; overflow: hidden; border: solid 0px #ffffff">
|
|
3
|
+
<video id="tapniVideo" muted loop playsinline width="350" style="margin: 0 auto; max-width: 100%; margin-top: 63px; overflow: hidden" :autoplay="isNative">
|
|
4
|
+
<source :src="videoSource" type="video/mp4" />
|
|
5
|
+
</video>
|
|
6
|
+
<h1 class="bold full-top no-bottom center-text text-[24px]">{{ welcomeTitle }}</h1>
|
|
7
|
+
<p class="full-bottom half-top center-text color-black font-16">{{ welcomeSubtitle }}</p>
|
|
8
|
+
<router-link v-if="false" to="/help" class="button-center button button-90 google-button pointer edit-shadow full-top full-bottom">
|
|
9
|
+
<span> {{ ssoLang[this.appLanguage].how_it_works }}? </span>
|
|
10
|
+
</router-link>
|
|
11
|
+
<div v-if="false" class="decoration decoration-lines-thin full-top"></div>
|
|
12
|
+
<router-link to="register" exact class="button-center button button-90 google-button bg-tapni-grey pointer">
|
|
13
|
+
<span> {{ ssoLang[this.appLanguage].create_account }} </span>
|
|
14
|
+
</router-link>
|
|
15
|
+
<div class="page-login-links center-text">
|
|
16
|
+
<router-link to="/login"
|
|
17
|
+
>{{ ssoLang[this.appLanguage].already_registered }}? <b>{{ ssoLang[this.appLanguage].sign_in }}</b></router-link
|
|
18
|
+
>
|
|
19
|
+
<div class="clear"></div>
|
|
20
|
+
</div>
|
|
21
|
+
<a v-if="false && display === 'redirect'" @click="toggleSSOLanguageModal" class="font-18 no-border pointer color-black" style="position: absolute; right: 20px; top: -10px; z-index: 1">
|
|
22
|
+
<span class="lang-icon">{{ appLanguage.toUpperCase() }}</span>
|
|
23
|
+
</a>
|
|
24
|
+
<div v-if="!this.isNative" style="display: flex; flex-direction: row; justify-content: space-around; width: 90%; margin: 0 auto; margin-top: 40px">
|
|
25
|
+
<a href="https://play.google.com/store/apps/details?id=co.tapni.app" target="_blank"><img src="https://cdn.tapni.co/images/playstore.png" class="app-store-icon pointer" style="width: 55px" /></a>
|
|
26
|
+
<a href="https://apps.apple.com/ag/app/tapni/id1552930233" target="_blank"><img src="https://cdn.tapni.co/images/appstore.png" class="app-store-icon pointer" style="width: 55px" /></a>
|
|
27
|
+
<a href="https://appgallery.huawei.com/#/app/C103931997" target="_blank"><img src="https://cdn.tapni.co/images/appgallery.png" class="app-store-icon pointer" style="width: 55px" /></a>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
36
30
|
</template>
|
|
37
31
|
|
|
38
32
|
<script>
|
|
39
|
-
import AuthMixin from
|
|
40
|
-
import {EventBus} from
|
|
33
|
+
import AuthMixin from '../mixins/auth.mixin';
|
|
34
|
+
import { EventBus } from '../store/event-bus';
|
|
41
35
|
|
|
42
36
|
export default {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
37
|
+
name: 'AuthWelcome',
|
|
38
|
+
mixins: [AuthMixin],
|
|
39
|
+
data() {
|
|
40
|
+
return {
|
|
41
|
+
loading: true
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
computed: {
|
|
45
|
+
isTapstackOrigin() {
|
|
46
|
+
if (typeof window === 'undefined') return false;
|
|
47
|
+
try {
|
|
48
|
+
const hostname = new URL(window.location.origin).hostname;
|
|
49
|
+
return /(^|\.)tapstack\.com$/i.test(hostname);
|
|
50
|
+
} catch (e) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
videoSource() {
|
|
55
|
+
return this.isTapstackOrigin ? 'https://cdn.tapni.co/images/tapstack-video.mp4' : 'https://cdn.tapni.co/images/tapni-card-tap-video-white.mp4';
|
|
56
|
+
},
|
|
57
|
+
welcomeTitle() {
|
|
58
|
+
return this.isTapstackOrigin ? 'Welcome' : this.ssoLang[this.appLanguage].welcome;
|
|
59
|
+
},
|
|
60
|
+
welcomeSubtitle() {
|
|
61
|
+
// Custom tagline for tapstack.com (alternative to tanstack)
|
|
62
|
+
return this.isTapstackOrigin ? 'The modern stack for interactive docs and tools' : this.ssoLang[this.appLanguage].welcome_p1;
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
async mounted() {
|
|
66
|
+
// Autoplay video - iOS 12 controls fix
|
|
67
|
+
let videoElement = document.getElementById('tapniVideo');
|
|
68
|
+
// Ensure the video is ready to play
|
|
69
|
+
videoElement.addEventListener('canplay', function () {
|
|
70
|
+
// Check if the video element is still in the DOM
|
|
71
|
+
if (document.body.contains(videoElement)) {
|
|
72
|
+
try {
|
|
73
|
+
videoElement.play();
|
|
74
|
+
} catch (error) {
|
|
75
|
+
console.error('Play was interrupted:', error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
64
79
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
80
|
+
setTimeout(() => {
|
|
81
|
+
if (this.$storex && this.$storex.token) {
|
|
82
|
+
if (import.meta.env.VITE_APP_MODE === 'npm') this.$router.push(this.home);
|
|
83
|
+
else if (import.meta.env.VITE_APP_MODE === 'redirect') location.href = this.home;
|
|
84
|
+
} else {
|
|
85
|
+
EventBus.$emit('ssoEvent', { name: 'setLoading', data: false });
|
|
86
|
+
}
|
|
87
|
+
}, 500);
|
|
88
|
+
},
|
|
89
|
+
methods: {}
|
|
90
|
+
};
|
|
77
91
|
</script>
|
|
78
92
|
|
|
79
93
|
<style scoped>
|
|
80
94
|
.app-store-icon {
|
|
81
|
-
|
|
82
|
-
|
|
95
|
+
box-shadow: 0px 4px 10px 0px rgb(0 0 0 / 9%);
|
|
96
|
+
border-radius: 12px;
|
|
83
97
|
}
|
|
84
98
|
</style>
|
package/dist/Account-Cuz87g_8.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { _ as g, A as d, C as u, E as h } from "./install-L-cxSovH.js";
|
|
2
|
-
import { resolveComponent as p, openBlock as _, createElementBlock as m, createCommentVNode as n, createElementVNode as o, toDisplayString as t, createVNode as a, withCtx as c } from "vue";
|
|
3
|
-
const f = {
|
|
4
|
-
mixins: [d],
|
|
5
|
-
data() {
|
|
6
|
-
return {
|
|
7
|
-
expanded: !1,
|
|
8
|
-
addAccountReady: !1
|
|
9
|
-
};
|
|
10
|
-
},
|
|
11
|
-
computed: {
|
|
12
|
-
appVersion() {
|
|
13
|
-
return u.WEB_VERSION;
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
async mounted() {
|
|
17
|
-
if (!this.isLoggedIn)
|
|
18
|
-
return this.$router.push("/");
|
|
19
|
-
this.getAccountSettings();
|
|
20
|
-
},
|
|
21
|
-
methods: {
|
|
22
|
-
continueTo(e) {
|
|
23
|
-
console.log("continue to " + e);
|
|
24
|
-
},
|
|
25
|
-
addAccount() {
|
|
26
|
-
this.$router.push("/login");
|
|
27
|
-
},
|
|
28
|
-
switchAccount(e) {
|
|
29
|
-
console.log("switch", e);
|
|
30
|
-
},
|
|
31
|
-
toggleLanguageModal() {
|
|
32
|
-
h.$emit("toggleSSOLanguageModal");
|
|
33
|
-
},
|
|
34
|
-
logoutAccount() {
|
|
35
|
-
this.logout({ refreshToken: this.refreshTokens[0], sendRequest: !0 });
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}, v = {
|
|
39
|
-
class: "page-login content-boxed content-boxed-padding center-text",
|
|
40
|
-
style: { "margin-top": "-1px", overflow: "hidden", border: "solid 0px #ffffff" }
|
|
41
|
-
}, w = /* @__PURE__ */ o("br", null, null, -1), k = { class: "bold full-top no-bottom center-text" }, b = { class: "full-bottom half-top center-text font-16" };
|
|
42
|
-
const L = { class: "container left-text" }, y = { class: "firstRow" }, N = ["src"], R = ["src"], V = { class: "firstRow" }, A = ["src"], E = ["src"], I = { class: "firstRow" }, B = ["src"], S = ["src"], T = { class: "firstRow" }, C = ["src"], $ = ["src"], D = { class: "firstRow" }, M = ["src"], O = { class: "red-text" }, q = ["src"], F = { class: "moreFooter" }, W = {
|
|
43
|
-
class: "app-version",
|
|
44
|
-
style: { "margin-top": "10px" }
|
|
45
|
-
};
|
|
46
|
-
function j(e, r, z, G, H, l) {
|
|
47
|
-
const s = p("router-link");
|
|
48
|
-
return _(), m("div", v, [
|
|
49
|
-
w,
|
|
50
|
-
n("", !0),
|
|
51
|
-
o("h1", k, t(e.ssoLang[e.appLanguage].welcome_account), 1),
|
|
52
|
-
o("p", b, t(e.account.email), 1),
|
|
53
|
-
(e.display, n("", !0)),
|
|
54
|
-
o("div", L, [
|
|
55
|
-
n("", !0),
|
|
56
|
-
a(s, {
|
|
57
|
-
to: "/general",
|
|
58
|
-
class: "settingRow"
|
|
59
|
-
}, {
|
|
60
|
-
default: c(() => [
|
|
61
|
-
o("div", y, [
|
|
62
|
-
o("img", {
|
|
63
|
-
src: e.getIcon("user-black.svg"),
|
|
64
|
-
class: "withBackground"
|
|
65
|
-
}, null, 8, N),
|
|
66
|
-
o("h4", null, t(e.ssoLang[e.appLanguage].general), 1),
|
|
67
|
-
o("img", {
|
|
68
|
-
src: e.getIcon("arrow-gray-right.svg")
|
|
69
|
-
}, null, 8, R)
|
|
70
|
-
])
|
|
71
|
-
]),
|
|
72
|
-
_: 1
|
|
73
|
-
}),
|
|
74
|
-
a(s, {
|
|
75
|
-
to: "/security",
|
|
76
|
-
class: "settingRow"
|
|
77
|
-
}, {
|
|
78
|
-
default: c(() => [
|
|
79
|
-
o("div", V, [
|
|
80
|
-
o("img", {
|
|
81
|
-
src: e.getIcon("shield-black.svg"),
|
|
82
|
-
class: "withBackground"
|
|
83
|
-
}, null, 8, A),
|
|
84
|
-
o("h4", null, t(e.ssoLang[e.appLanguage].security), 1),
|
|
85
|
-
o("img", {
|
|
86
|
-
src: e.getIcon("arrow-gray-right.svg")
|
|
87
|
-
}, null, 8, E)
|
|
88
|
-
])
|
|
89
|
-
]),
|
|
90
|
-
_: 1
|
|
91
|
-
}),
|
|
92
|
-
a(s, {
|
|
93
|
-
to: "/apps",
|
|
94
|
-
class: "settingRow"
|
|
95
|
-
}, {
|
|
96
|
-
default: c(() => [
|
|
97
|
-
o("div", I, [
|
|
98
|
-
o("img", {
|
|
99
|
-
src: e.getIcon("apps-black.svg"),
|
|
100
|
-
class: "withBackground"
|
|
101
|
-
}, null, 8, B),
|
|
102
|
-
o("h4", null, t(e.ssoLang[e.appLanguage].apps), 1),
|
|
103
|
-
o("img", {
|
|
104
|
-
src: e.getIcon("arrow-gray-right.svg")
|
|
105
|
-
}, null, 8, S)
|
|
106
|
-
])
|
|
107
|
-
]),
|
|
108
|
-
_: 1
|
|
109
|
-
}),
|
|
110
|
-
a(s, {
|
|
111
|
-
to: "/billing",
|
|
112
|
-
class: "settingRow"
|
|
113
|
-
}, {
|
|
114
|
-
default: c(() => [
|
|
115
|
-
o("div", T, [
|
|
116
|
-
o("img", {
|
|
117
|
-
src: e.getIcon("billing-card-black.svg"),
|
|
118
|
-
class: "withBackground"
|
|
119
|
-
}, null, 8, C),
|
|
120
|
-
o("h4", null, t(e.ssoLang[e.appLanguage].billing), 1),
|
|
121
|
-
o("img", {
|
|
122
|
-
src: e.getIcon("arrow-gray-right.svg")
|
|
123
|
-
}, null, 8, $)
|
|
124
|
-
])
|
|
125
|
-
]),
|
|
126
|
-
_: 1
|
|
127
|
-
}),
|
|
128
|
-
o("div", {
|
|
129
|
-
class: "settingRow",
|
|
130
|
-
onClick: r[4] || (r[4] = (...i) => l.logoutAccount && l.logoutAccount(...i))
|
|
131
|
-
}, [
|
|
132
|
-
o("div", D, [
|
|
133
|
-
o("img", {
|
|
134
|
-
src: e.getIcon("logout-red.svg"),
|
|
135
|
-
class: "withBackground"
|
|
136
|
-
}, null, 8, M),
|
|
137
|
-
o("h4", O, t(e.ssoLang[e.appLanguage].logout), 1),
|
|
138
|
-
o("img", {
|
|
139
|
-
src: e.getIcon("arrow-gray-right.svg")
|
|
140
|
-
}, null, 8, q)
|
|
141
|
-
])
|
|
142
|
-
]),
|
|
143
|
-
o("div", F, [
|
|
144
|
-
o("p", W, t(e.ssoLang[e.appLanguage].version) + ": " + t(l.appVersion), 1),
|
|
145
|
-
n("", !0)
|
|
146
|
-
])
|
|
147
|
-
])
|
|
148
|
-
]);
|
|
149
|
-
}
|
|
150
|
-
const Q = /* @__PURE__ */ g(f, [["render", j]]);
|
|
151
|
-
export {
|
|
152
|
-
Q as default
|
|
153
|
-
};
|