@tapni/auth 0.0.169 → 0.0.171

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 (69) hide show
  1. package/README.md +2 -0
  2. package/dist/.vite/manifest.json +18 -10
  3. package/dist/.well-known/assetlinks.json +10 -12
  4. package/dist/.well-known/microsoft-identity-association.json +5 -5
  5. package/dist/{Account-ja1hZJy5.js → Account-BB71UmF3.js} +31 -32
  6. package/dist/{QR-ybXT1KGe.js → QR-BJnR_0ci.js} +3 -3
  7. package/dist/TapniAuth.es.js +1 -1
  8. package/dist/TapniAuth.umd.js +9 -9
  9. package/dist/blank.html +31 -0
  10. package/dist/{install-4aK3Wz63.js → install-Cx9Gi17U.js} +753 -997
  11. package/dist/site.webmanifest +11 -1
  12. package/dist/style.css +1 -1
  13. package/dist/{web-NrPZl3qD.js → web-XbruGdlD.js} +2 -5
  14. package/package.json +64 -55
  15. package/src/.prettierrc.json +16 -0
  16. package/src/App.vue +249 -265
  17. package/src/components/Language.vue +66 -143
  18. package/src/components/LinkIcon.vue +174 -225
  19. package/src/components/ModalOverlay.vue +47 -50
  20. package/src/components/OTP.vue +64 -94
  21. package/src/components/SSO.vue +80 -111
  22. package/src/components/SSOPick.vue +93 -148
  23. package/src/eslint.config.js +15 -0
  24. package/src/install.js +9 -10
  25. package/src/main.js +54 -57
  26. package/src/mixins/apple.mixin.js +56 -54
  27. package/src/mixins/auth.mixin.js +21 -74
  28. package/src/mixins/facebook.mixin.js +67 -66
  29. package/src/mixins/global.mixin.js +107 -109
  30. package/src/mixins/google.mixin.js +53 -54
  31. package/src/mixins/mfa-auth.mixin.js +68 -68
  32. package/src/mixins/microsoft.mixin.js +67 -75
  33. package/src/mixins/okta.mixin.js +50 -57
  34. package/src/mixins/qr-auth.mixin.js +111 -107
  35. package/src/mixins/saml.mixin.js +97 -48
  36. package/src/router/index.js +6 -6
  37. package/src/routes.js +60 -66
  38. package/src/services/Api.js +55 -57
  39. package/src/services/AuthService.js +75 -75
  40. package/src/services/CompanyService.js +10 -10
  41. package/src/services/DeviceService.js +3 -3
  42. package/src/services/UserService.js +45 -45
  43. package/src/services/UtilService.js +256 -218
  44. package/src/store/auth.js +471 -543
  45. package/src/store/constants.js +1 -1
  46. package/src/store/event-bus.js +22 -22
  47. package/src/store/locales/cn.js +442 -458
  48. package/src/store/locales/de.js +438 -517
  49. package/src/store/locales/en.js +449 -510
  50. package/src/store/locales/es.js +442 -524
  51. package/src/store/locales/fr.js +442 -516
  52. package/src/store/locales/it.js +442 -514
  53. package/src/store/locales/kr.js +442 -491
  54. package/src/store/locales/lang.js +43 -43
  55. package/src/store/locales/sr.js +439 -492
  56. package/src/store/locales/tr.js +436 -487
  57. package/src/store/store.js +6 -6
  58. package/src/views/Account.vue +169 -207
  59. package/src/views/Callback.vue +36 -33
  60. package/src/views/Login.vue +220 -392
  61. package/src/views/MFA.vue +89 -103
  62. package/src/views/QR.vue +25 -28
  63. package/src/views/Register.vue +201 -205
  64. package/src/views/Reset.vue +132 -135
  65. package/src/views/Verify.vue +153 -151
  66. package/src/views/Welcome.vue +61 -60
  67. /package/dist/{web-L3jORB19.js → web-AXRKjAOB.js} +0 -0
  68. /package/dist/{web-5VtGcKeU.js → web-IFGkBi0t.js} +0 -0
  69. /package/dist/{web-AImUTDQQ.js → web-LIfHmYL2.js} +0 -0
@@ -1,400 +1,228 @@
1
1
  <template>
2
- <form
3
- class="page-login content-boxed content-boxed-padding"
4
- @submit.prevent="submit"
5
- autocomplete="on"
6
- :style="isModal ? 'max-width: 500px;' : ''"
7
- >
8
- <a
9
- v-if="isModal"
10
- @click="close"
11
- class="color-black pull-right pointer"
12
- style="
13
- margin-top: 0px;
14
- position: absolute;
15
- right: -20px;
16
- text-align: right;
17
- "
18
- >
19
- <i class="font-17 color-black">
20
- <img
21
- src="https://cdn.tapni.co/icons/down-arrow.png"
22
- class="responsive-image"
23
- style="width: 35%"
24
- />
25
- </i>
26
- </a>
27
- <h1 class="bold no-bottom center-text" style="margin-top: 63px;">
28
- {{ this.ssoLang[this.appLanguage].login }}
29
- </h1>
30
- <p class="half-bottom small-top center-text color-black"></p>
31
-
32
- <span v-if="displayFormLogin">
33
- <div class="page-login-field half-top">
34
- <i style="padding-top: 15px">
35
- <img
36
- src="https://cdn.tapni.co/icons/user.png"
37
- class="responsive-image"
38
- style="width: 50%"
39
- />
40
- </i>
41
- <input
42
- v-model="emailOrUsername"
43
- @keydown.space.prevent
44
- autocorrect="off"
45
- autocapitalize="off"
46
- spellcheck="false"
47
- type="text"
48
- name="email"
49
- :placeholder="ssoLang[this.appLanguage].email_username"
50
- required
51
- />
52
- <em></em>
53
- </div>
54
- <div class="page-login-field half-bottom">
55
- <i style="padding-top: 15px">
56
- <img
57
- src="https://cdn.tapni.co/icons/padlock.png"
58
- class="responsive-image"
59
- style="width: 50%"
60
- />
61
- </i>
62
- <input
63
- v-model="password"
64
- :type="revealPassword ? 'text' : 'password'"
65
- :placeholder="ssoLang[this.appLanguage].password"
66
- name="password"
67
- required
68
- minlength="8"
69
- />
70
- <em @click="revealPassword = !revealPassword" class="pointer">
71
- <img
72
- v-show="!revealPassword"
73
- src="https://cdn.tapni.co/icons/reveal-password.png"
74
- class="responsive-image password-reveal-icon"
75
- />
76
- <img
77
- v-show="revealPassword"
78
- src="https://cdn.tapni.co/icons/hide-password.png"
79
- class="responsive-image password-reveal-icon"
80
- />
81
- </em>
82
- </div>
83
- <button
84
- type="submit"
85
- class="button black-button google-button bg-tapni-grey button-90 button-center uppercase bold full-top"
86
- >
87
- <span v-if="!submitted">{{ ssoLang[appLanguage].login }}</span>
88
- <span v-else class="button--loading button__loader"></span>
89
- </button>
90
- </span>
91
- <div class="decoration decoration-lines-thin half-top half-bottom"></div>
92
- <!-- Apple Login Button -->
93
- <a
94
- @click="appleLogin"
95
- v-if="displayAppleLogin"
96
- class="button-center button button-90 google-button pointer"
97
- >
98
- <img
99
- src="https://cdn.tapni.co/icons/apple-logo.png"
100
- style="
101
- position: absolute;
102
- margin-left: -11px;
103
- padding: 8px 0;
104
- height: 100%;
105
- "
106
- />
107
- <span v-if="!appleLoad">{{ ssoLang[appLanguage].sign_in_with }} Apple</span>
108
- <span v-else class="button--loading-black button__loader"></span>
109
- </a>
110
-
111
- <!-- Google Login Button -->
112
- <a
113
- @click="googleLogin"
114
- v-if="displayGoogleLogin"
115
- class="button-center button button-90 google-button pointer"
116
- >
117
- <img
118
- src="https://cdn.tapni.co/icons/g-logo.png"
119
- style="
120
- position: absolute;
121
- margin-left: -10px;
122
- padding: 8px 0;
123
- height: 100%;
124
- "
125
- />
126
- <span v-if="!googleLoad"
127
- >{{ ssoLang[appLanguage].sign_in_with }} Google</span
128
- >
129
- <span v-else class="button--loading-black button__loader"></span>
130
- </a>
131
-
132
- <!-- Facebook Login Button -->
133
- <a
134
- @click="facebookLogin"
135
- v-if="displayFacebookLogin"
136
- class="button-center button button-90 google-button pointer"
137
- >
138
- <img
139
- src="https://cdn.tapni.co/icons/facebook-blue.png"
140
- style="
141
- position: absolute;
142
- margin-left: -9px;
143
- padding: 10px 0;
144
- height: 100%;
145
- "
146
- />
147
- <span v-if="!facebookLoad"
148
- >{{ ssoLang[appLanguage].sign_in_with }} Facebook</span
149
- >
150
- <span v-else class="button--loading-black button__loader"></span>
151
- </a>
152
-
153
- <!-- Microsoft Login Button -->
154
- <a
155
- @click="microsoftLogin"
156
- v-if="!displayMicrosoftSSOLogin"
157
- class="button-center button button-90 google-button pointer"
158
- >
159
- <img
160
- src="https://cdn.tapni.co/icons/outlook.png"
161
- style="
162
- position: absolute;
163
- margin-left: -8px;
164
- padding: 10px 0;
165
- height: 100%;
166
- "
167
- />
168
- <span v-if="!microsoftLoad"
169
- >{{ ssoLang[appLanguage].sign_in_with }} Outlook</span
170
- >
171
- <span v-else class="button--loading-black button__loader"></span>
172
- </a>
173
-
174
- <!-- Microsoft SSO Button -->
175
- <a
176
- @click="ssoLogin"
177
- v-if="!displayMicrosoftSSOLogin"
178
- class="button-center button button-90 google-button pointer"
179
- >
180
- <img
181
- src="https://cdn.tapni.co/icons/sso-key.png"
182
- style="
183
- position: absolute;
184
- margin-left: -8px;
185
- padding: 10px 0;
186
- height: 100%;
187
- "
188
- />
189
- <span v-if="!microsoftSSOLoad">{{ ssoLang[appLanguage].sign_in_with }} SSO</span>
190
- <span v-else class="button--loading-black button__loader"></span>
191
- </a>
192
- <!-- Microsoft SSO Button -->
193
- <a
194
- @click="microsoftLogin('sso')"
195
- v-if="displayMicrosoftSSOLogin"
196
- class="button-center button button-90 google-button pointer"
197
- >
198
- <img
199
- src="https://cdn.tapni.co/icons/sso-key.png"
200
- style="
201
- position: absolute;
202
- margin-left: -8px;
203
- padding: 10px 0;
204
- height: 100%;
205
- "
206
- />
207
- <span v-if="microsoftSSOLoad">{{ ssoLang[appLanguage].sign_in_with }} SSO</span>
208
- <span v-else class="button--loading-black button__loader"></span>
209
- </a>
210
-
211
- <!-- Email Login Button -->
212
- <a
213
- @click="emailLogin = true"
214
- v-if="!displayFormLogin"
215
- class="button-center button button-90 google-button pointer"
216
- >
217
- <img
218
- src="https://cdn.tapni.co/icons/mail.png"
219
- style="
220
- position: absolute;
221
- margin-left: -8px;
222
- padding: 12px 0;
223
- height: 100%;
224
- "
225
- />
226
- <span>{{ ssoLang[appLanguage].sign_in_with }} Email</span>
227
- </a>
228
-
229
- <!-- Google Login Button -->
230
- <a
231
- @click="$router.push('/qr')"
232
- v-if="displayQRLogin"
233
- class="button-center button button-90 google-button pointer"
234
- >
235
- <img
236
- src="https://cdn.tapni.co/icons/qr.png"
237
- style="
238
- position: absolute;
239
- margin-left: -5px;
240
- padding: 15px 0;
241
- height: 100%;
242
- "
243
- />
244
- <span>{{ ssoLang[appLanguage].sign_in_with }} QR</span>
245
- </a>
246
-
247
- <div class="decoration decoration-lines-thin no-bottom"></div>
248
-
249
- <p class="close-text center-text half-top color-black">
250
- {{ ssoLang[appLanguage].terms_by_signing_in }} <br />
251
- <a class="" href="https://tapni.com/policies/terms-of-service">{{
252
- ssoLang[this.appLanguage].terms_of_service
253
- }}</a>
254
- {{ ssoLang[appLanguage].and }}
255
- <a href="https://tapni.com/policies/privacy-policy">{{
256
- ssoLang[this.appLanguage].privacy_policy
257
- }}</a>
258
- </p>
259
- <div class="decoration decoration-lines-thin no-bottom"></div>
260
- <div v-if="!isModal" class="page-login-links">
261
- <router-link
262
- v-if="displayRegisterLogin"
263
- class="forgot float-right"
264
- to="/register"
265
- >{{ ssoLang[appLanguage].create_account }}</router-link
266
- >
267
- <router-link
268
- v-if="displayResetPasswordLogin"
269
- class="create float-left"
270
- to="/reset"
271
- >{{ ssoLang[appLanguage].reset_password }}</router-link
272
- >
273
- <div class="clear"></div>
274
- </div>
275
- <div v-else class="page-login-links" @click="createAccountModal">
276
- <a class="forgot center-text pointer small-top"
277
- >{{ ssoLang[appLanguage].or }} <br />
278
- {{ ssoLang[appLanguage].create_new_account }}</a
279
- >
280
- <div class="clear"></div>
281
- </div>
282
- </form>
2
+ <form class="page-login content-boxed content-boxed-padding" @submit.prevent="submit" autocomplete="on" :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" style="margin-top: 63px">
9
+ {{ this.ssoLang[this.appLanguage].login }}
10
+ </h1>
11
+ <p class="half-bottom small-top center-text color-black"></p>
12
+
13
+ <span v-if="displayFormLogin">
14
+ <div class="page-login-field half-top">
15
+ <i style="padding-top: 15px">
16
+ <img src="https://cdn.tapni.co/icons/user.png" class="responsive-image" style="width: 50%" />
17
+ </i>
18
+ <input v-model="emailOrUsername" @keydown.space.prevent autocorrect="off" autocapitalize="off" spellcheck="false" type="text" name="email" :placeholder="ssoLang[this.appLanguage].email_username" required />
19
+ <em></em>
20
+ </div>
21
+ <div class="page-login-field half-bottom">
22
+ <i style="padding-top: 15px">
23
+ <img src="https://cdn.tapni.co/icons/padlock.png" class="responsive-image" style="width: 50%" />
24
+ </i>
25
+ <input v-model="password" :type="revealPassword ? 'text' : 'password'" :placeholder="ssoLang[this.appLanguage].password" name="password" required minlength="8" />
26
+ <em @click="revealPassword = !revealPassword" class="pointer">
27
+ <img v-show="!revealPassword" src="https://cdn.tapni.co/icons/reveal-password.png" class="responsive-image password-reveal-icon" />
28
+ <img v-show="revealPassword" src="https://cdn.tapni.co/icons/hide-password.png" class="responsive-image password-reveal-icon" />
29
+ </em>
30
+ </div>
31
+ <button type="submit" class="button black-button google-button bg-tapni-grey button-90 button-center uppercase bold full-top">
32
+ <span v-if="!submitted">{{ ssoLang[appLanguage].login }}</span>
33
+ <span v-else class="button--loading button__loader"></span>
34
+ </button>
35
+ </span>
36
+ <div class="decoration decoration-lines-thin half-top half-bottom"></div>
37
+ <!-- Apple Login Button -->
38
+ <a @click="appleLogin" v-if="displayAppleLogin" class="button-center button button-90 google-button pointer">
39
+ <img src="https://cdn.tapni.co/icons/apple-logo.png" style="position: absolute; margin-left: -11px; padding: 8px 0; height: 100%" />
40
+ <span v-if="!appleLoad">{{ ssoLang[appLanguage].sign_in_with }} Apple</span>
41
+ <span v-else class="button--loading-black button__loader"></span>
42
+ </a>
43
+
44
+ <!-- Google Login Button -->
45
+ <a @click="googleLogin" v-if="displayGoogleLogin" class="button-center button button-90 google-button pointer">
46
+ <img src="https://cdn.tapni.co/icons/g-logo.png" style="position: absolute; margin-left: -10px; padding: 8px 0; height: 100%" />
47
+ <span v-if="!googleLoad">{{ ssoLang[appLanguage].sign_in_with }} Google</span>
48
+ <span v-else class="button--loading-black button__loader"></span>
49
+ </a>
50
+
51
+ <!-- Facebook Login Button -->
52
+ <a @click="facebookLogin" v-if="displayFacebookLogin" class="button-center button button-90 google-button pointer">
53
+ <img src="https://cdn.tapni.co/icons/facebook-blue.png" style="position: absolute; margin-left: -9px; padding: 10px 0; height: 100%" />
54
+ <span v-if="!facebookLoad">{{ ssoLang[appLanguage].sign_in_with }} Facebook</span>
55
+ <span v-else class="button--loading-black button__loader"></span>
56
+ </a>
57
+
58
+ <!-- Microsoft Login Button -->
59
+ <a @click="microsoftLogin" v-if="!displayMicrosoftSSOLogin" class="button-center button button-90 google-button pointer">
60
+ <img src="https://cdn.tapni.co/icons/outlook.png" style="position: absolute; margin-left: -8px; padding: 10px 0; height: 100%" />
61
+ <span v-if="!microsoftLoad">{{ ssoLang[appLanguage].sign_in_with }} Outlook</span>
62
+ <span v-else class="button--loading-black button__loader"></span>
63
+ </a>
64
+
65
+ <!-- Microsoft SSO Button -->
66
+ <a @click="ssoLogin" v-if="!displayMicrosoftSSOLogin" class="button-center button button-90 google-button pointer">
67
+ <img src="https://cdn.tapni.co/icons/sso-key.png" style="position: absolute; margin-left: -8px; padding: 10px 0; height: 100%" />
68
+ <span v-if="!microsoftSSOLoad">{{ ssoLang[appLanguage].sign_in_with }} SSO</span>
69
+ <span v-else class="button--loading-black button__loader"></span>
70
+ </a>
71
+ <!-- Microsoft SSO Button -->
72
+ <a @click="microsoftLogin('sso')" v-if="displayMicrosoftSSOLogin" class="button-center button button-90 google-button pointer">
73
+ <img src="https://cdn.tapni.co/icons/sso-key.png" style="position: absolute; margin-left: -8px; padding: 10px 0; height: 100%" />
74
+ <span v-if="microsoftSSOLoad">{{ ssoLang[appLanguage].sign_in_with }} SSO</span>
75
+ <span v-else class="button--loading-black button__loader"></span>
76
+ </a>
77
+
78
+ <!-- Email Login Button -->
79
+ <a @click="emailLogin = true" v-if="!displayFormLogin" class="button-center button button-90 google-button pointer">
80
+ <img src="https://cdn.tapni.co/icons/mail.png" style="position: absolute; margin-left: -8px; padding: 12px 0; height: 100%" />
81
+ <span>{{ ssoLang[appLanguage].sign_in_with }} Email</span>
82
+ </a>
83
+
84
+ <!-- Google Login Button -->
85
+ <a @click="$router.push('/qr')" v-if="displayQRLogin" class="button-center button button-90 google-button pointer">
86
+ <img src="https://cdn.tapni.co/icons/qr.png" style="position: absolute; margin-left: -5px; padding: 15px 0; height: 100%" />
87
+ <span>{{ ssoLang[appLanguage].sign_in_with }} QR</span>
88
+ </a>
89
+
90
+ <div class="decoration decoration-lines-thin no-bottom"></div>
91
+
92
+ <p class="close-text center-text half-top color-black">
93
+ {{ ssoLang[appLanguage].terms_by_signing_in }} <br />
94
+ <a class="" href="https://tapni.com/policies/terms-of-service">{{ ssoLang[this.appLanguage].terms_of_service }}</a>
95
+ {{ ssoLang[appLanguage].and }}
96
+ <a href="https://tapni.com/policies/privacy-policy">{{ ssoLang[this.appLanguage].privacy_policy }}</a>
97
+ </p>
98
+ <div class="decoration decoration-lines-thin no-bottom"></div>
99
+ <div v-if="!isModal" class="page-login-links">
100
+ <router-link v-if="displayRegisterLogin" class="forgot float-right" to="/register">{{ ssoLang[appLanguage].create_account }}</router-link>
101
+ <router-link v-if="displayResetPasswordLogin" class="create float-left" to="/reset">{{ ssoLang[appLanguage].reset_password }}</router-link>
102
+ <div class="clear"></div>
103
+ </div>
104
+ <div v-else class="page-login-links" @click="createAccountModal">
105
+ <a class="forgot center-text pointer small-top"
106
+ >{{ ssoLang[appLanguage].or }} <br />
107
+ {{ ssoLang[appLanguage].create_new_account }}</a
108
+ >
109
+ <div class="clear"></div>
110
+ </div>
111
+ </form>
283
112
  </template>
284
113
 
285
114
  <script>
286
- import GoogleMixin from "../mixins/google.mixin";
287
- import FacebookMixin from "../mixins/facebook.mixin";
288
- import AppleMixin from "../mixins/apple.mixin";
289
- import MicrosoftMixin from "../mixins/microsoft.mixin";
290
- import OktaMixin from "../mixins/okta.mixin";
291
- import SamlMixin from "../mixins/saml.mixin";
292
- import AuthMixin from "../mixins/auth.mixin";
293
- import MFAMixin from "../mixins/mfa-auth.mixin";
294
- import QRAuthMixin from "../mixins/qr-auth.mixin";
295
- import { EventBus } from "../store/event-bus";
296
- import to from "await-to-js";
115
+ import GoogleMixin from '../mixins/google.mixin';
116
+ import FacebookMixin from '../mixins/facebook.mixin';
117
+ import AppleMixin from '../mixins/apple.mixin';
118
+ import MicrosoftMixin from '../mixins/microsoft.mixin';
119
+ import OktaMixin from '../mixins/okta.mixin';
120
+ import SamlMixin from '../mixins/saml.mixin';
121
+ import AuthMixin from '../mixins/auth.mixin';
122
+ import MFAMixin from '../mixins/mfa-auth.mixin';
123
+ import QRAuthMixin from '../mixins/qr-auth.mixin';
124
+ import { EventBus } from '../store/event-bus';
125
+ import to from 'await-to-js';
297
126
  export default {
298
- name: "AuthLogin",
299
- mixins: [GoogleMixin, FacebookMixin, AppleMixin, MicrosoftMixin, OktaMixin, SamlMixin, AuthMixin, QRAuthMixin, MFAMixin],
300
- props: {
301
- isModal: {
302
- type: Boolean,
303
- required: false,
304
- default: false,
305
- },
306
- },
307
- data() {
308
- return {
309
- loading: true,
310
- submitted: false,
311
- emailOrUsername: "",
312
- password: "",
313
- captcha: "",
314
- revealPassword: false,
315
- emailLogin: true,
316
- };
317
- },
318
- computed: {
319
- displayFormLogin() {
320
- return this.emailLogin;
321
- },
322
- displayResetPasswordLogin() {
323
- return true;
324
- },
325
- displayRegisterLogin() {
326
- return true;
327
- },
328
- },
329
- async mounted() {
330
- if (!this.isModal) {
331
- if(this.$route.path === '/login/callback/okta') return await this.handleOktaRedirect();
332
- if(this.$route.path === '/login/callback/saml') return await this.handleSamlRedirect();
333
- if (this.$route.query.qrLogin) this.changeLoginToQr();
334
-
335
-
336
- setTimeout(() => {
337
- if (this.$storex && this.$storex.token) {
338
- if (import.meta.env.VITE_APP_MODE === 'npm') this.$router.push(this.home);
339
- else if (import.meta.env.VITE_APP_MODE === 'redirect') location.href = this.home
340
- } else {
341
- EventBus.$emit('ssoEvent', {name: 'setLoading', data: false})
342
- }
343
- }, 2500)
344
- }
345
- },
346
- methods: {
347
- async submit() {
348
- // if (this.captcha === '') return this._vm.errorHandler({ message: 'Please select recaptcha' });
349
- if (this.submitted) return;
350
- this.submitted = true;
351
-
352
- this.emailOrUsername = this.emailOrUsername.trim();
353
-
354
- let response_type = this.$route.query.response_type;
355
-
356
- let loginData = {
357
- response_type: response_type || 'token',
358
- isModal: this.isModal,
359
- captcha: this.captcha,
360
- password: this.password,
361
- otpToken: this.otpToken,
362
- // captchaToken: await this.getCaptchaToken('account_verify')
363
- };
364
- if (this.emailOrUsername.indexOf("@") !== -1) {
365
- loginData.email = this.emailOrUsername;
366
- } else {
367
- loginData.username = this.emailOrUsername;
368
- }
369
-
370
- const [err, result] = await to(this.login(loginData));
371
- if (err) console.error(err);
372
-
373
- this.submitted = false;
374
-
375
- if (result === true) {
376
- this.emailOrUsername = "";
377
- this.password = "";
378
- }
379
- },
380
- close() {
381
- EventBus.$emit('ssoEvent', {name: 'toggleAuthModal', data: true})
382
- },
383
- createAccountModal() {
384
- EventBus.$emit('ssoEvent', {name: 'toggleAddAccountModalRegister', data: {}})
385
- },
386
- },
387
- watch: {
388
- emailOrUsername(nv) {
389
- if (nv.includes("@")) {
390
- this.$storex.verifyEmail = nv;
391
- }
392
- },
393
- '$route.path': async function(routePath) {
394
- if(routePath === '/login/callback/okta') return await this.handleOktaRedirect();
395
- if(routePath === '/login/callback/saml') return await this.handleSamlRedirect();
396
- }
397
- },
127
+ name: 'AuthLogin',
128
+ mixins: [GoogleMixin, FacebookMixin, AppleMixin, MicrosoftMixin, OktaMixin, SamlMixin, AuthMixin, QRAuthMixin, MFAMixin],
129
+ props: {
130
+ isModal: {
131
+ type: Boolean,
132
+ required: false,
133
+ default: false
134
+ }
135
+ },
136
+ data() {
137
+ return {
138
+ loading: true,
139
+ submitted: false,
140
+ emailOrUsername: '',
141
+ password: '',
142
+ captcha: '',
143
+ revealPassword: false,
144
+ emailLogin: true
145
+ };
146
+ },
147
+ computed: {
148
+ displayFormLogin() {
149
+ return this.emailLogin;
150
+ },
151
+ displayResetPasswordLogin() {
152
+ return true;
153
+ },
154
+ displayRegisterLogin() {
155
+ return true;
156
+ }
157
+ },
158
+ async mounted() {
159
+ if (!this.isModal) {
160
+ if (this.$route.path === '/login/callback/okta') return await this.handleOktaRedirect();
161
+ if (this.$route.path === '/login/callback/saml') return await this.handleSamlRedirect();
162
+ if (this.$route.query.qrLogin) this.changeLoginToQr();
163
+
164
+ setTimeout(() => {
165
+ if (this.$storex && this.$storex.token) {
166
+ if (import.meta.env.VITE_APP_MODE === 'npm') this.$router.push(this.home);
167
+ else if (import.meta.env.VITE_APP_MODE === 'redirect') location.href = this.home;
168
+ } else {
169
+ EventBus.$emit('ssoEvent', { name: 'setLoading', data: false });
170
+ }
171
+ }, 2500);
172
+ }
173
+ },
174
+ methods: {
175
+ async submit() {
176
+ // if (this.captcha === '') return this._vm.errorHandler({ message: 'Please select recaptcha' });
177
+ if (this.submitted) return;
178
+ this.submitted = true;
179
+
180
+ this.emailOrUsername = this.emailOrUsername.trim();
181
+
182
+ let response_type = this.$route.query.response_type;
183
+
184
+ let loginData = {
185
+ response_type: response_type || 'token',
186
+ isModal: this.isModal,
187
+ captcha: this.captcha,
188
+ password: this.password,
189
+ otpToken: this.otpToken
190
+ // captchaToken: await this.getCaptchaToken('account_verify')
191
+ };
192
+ if (this.emailOrUsername.indexOf('@') !== -1) {
193
+ loginData.email = this.emailOrUsername;
194
+ } else {
195
+ loginData.username = this.emailOrUsername;
196
+ }
197
+
198
+ const [err, result] = await to(this.login(loginData));
199
+ if (err) console.error(err);
200
+
201
+ this.submitted = false;
202
+
203
+ if (result === true) {
204
+ this.emailOrUsername = '';
205
+ this.password = '';
206
+ }
207
+ },
208
+ close() {
209
+ EventBus.$emit('ssoEvent', { name: 'toggleAuthModal', data: true });
210
+ },
211
+ createAccountModal() {
212
+ EventBus.$emit('ssoEvent', { name: 'toggleAddAccountModalRegister', data: {} });
213
+ }
214
+ },
215
+ watch: {
216
+ emailOrUsername(nv) {
217
+ if (nv.includes('@')) {
218
+ this.$storex.verifyEmail = nv;
219
+ }
220
+ },
221
+ '$route.path': async function (routePath) {
222
+ if (routePath === '/login/callback/okta') return await this.handleOktaRedirect();
223
+ if (routePath === '/login/callback/saml') return await this.handleSamlRedirect();
224
+ }
225
+ }
398
226
  };
399
227
  </script>
400
228