@tapni/auth 1.0.50 → 1.0.53

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/src/App.vue CHANGED
@@ -1,333 +1,316 @@
1
1
  <script setup>
2
- import { RouterView } from 'vue-router'
2
+ import { RouterView } from 'vue-router';
3
3
  // add Buffer globally
4
4
  import { Buffer } from 'buffer/';
5
5
  window.Buffer = Buffer;
6
- document.addEventListener('DOMContentLoaded', function() {
7
- const recaptchaScript = document.createElement('script');
8
- recaptchaScript.src = `https://www.google.com/recaptcha/api.js?render=${import.meta.env.VITE_GOOGLE_RECAPTCHA_SITE_KEY}`;
9
- document.head.appendChild(recaptchaScript);
6
+ document.addEventListener('DOMContentLoaded', function () {
7
+ const recaptchaScript = document.createElement('script');
8
+ recaptchaScript.src = `https://www.google.com/recaptcha/api.js?render=${import.meta.env.VITE_GOOGLE_RECAPTCHA_SITE_KEY}`;
9
+ document.head.appendChild(recaptchaScript);
10
10
  });
11
11
  </script>
12
12
 
13
-
14
13
  <template>
15
- <div id="ssoapp">
16
- <a v-if="display === 'redirect' || renderView.includes('Auth')" href="/" class="header-logo"><img src="https://cdn.tapni.co/images/logo-dark.png"class="header-logo-img"></a>
14
+ <div id="ssoapp">
15
+ <a v-if="display === 'redirect' || renderView.includes('Auth')" href="/" class="header-logo"><img src="https://cdn.tapni.co/images/logo-dark.png" class="header-logo-img" /></a>
17
16
 
18
- <AuthWelcome v-if="initialized && renderView === 'AuthWelcome'" />
19
- <AuthLogin v-else-if="initialized && renderView === 'AuthLogin'" :isModal="isModal" />
20
- <AuthGeneral v-else-if="initialized && renderView === 'AuthGeneral'" :isModal="isModal" @update:viewProp="setView" />
21
- <AuthAccount v-else-if="initialized && renderView === 'AuthAccount'" :isModal="isModal" @update:viewProp="setView" />
22
- <AuthRegister v-else-if="initialized && renderView === 'AuthRegister'" :isModal="isModal" />
23
- <AuthVerify v-else-if="initialized && renderView === 'AuthVerify'" :isModal="isModal" />
24
- <AuthSecurity v-else-if="initialized && renderView === 'AuthSecurity'" :isModal="isModal" :payload="payload" @update:viewProp="setView" />
25
- <AuthReset v-else-if="initialized && renderView === 'AuthReset'" />
26
- <AuthCallback v-else-if="initialized && renderView === 'AuthCallback'" />
27
- <RouterView v-else-if="display !== 'npm'" />
17
+ <AuthWelcome v-if="initialized && renderView === 'AuthWelcome'" />
18
+ <AuthLogin v-else-if="initialized && renderView === 'AuthLogin'" :isModal="isModal" />
19
+ <AuthGeneral v-else-if="initialized && renderView === 'AuthGeneral'" :isModal="isModal" @update:viewProp="setView" />
20
+ <AuthAccount v-else-if="initialized && renderView === 'AuthAccount'" :isModal="isModal" @update:viewProp="setView" />
21
+ <AuthRegister v-else-if="initialized && renderView === 'AuthRegister'" :isModal="isModal" />
22
+ <AuthVerify v-else-if="initialized && renderView === 'AuthVerify'" :isModal="isModal" />
23
+ <AuthSecurity v-else-if="initialized && renderView === 'AuthSecurity'" :isModal="isModal" :payload="payload" @update:viewProp="setView" />
24
+ <AuthReset v-else-if="initialized && renderView === 'AuthReset'" />
25
+ <AuthCallback v-else-if="initialized && renderView === 'AuthCallback'" />
26
+ <RouterView v-else-if="display !== 'npm'" />
28
27
 
29
- <div class="snackbar snackbar-boxed" id="snackbar">
30
- <p class="snack-body" id="errorSnack">
31
- <span id="errorMessage"> {{ ssoLang[appLanguage].error }} </span>
32
- <a
33
- @click="closeSnacks"
34
- style="
35
- position: absolute;
36
- right: 10px;
37
- top: 10px;
38
- width: 50px;
39
- height: 50px;
40
- "
41
- >
42
- <img
43
- src="https://cdn.tapni.co/icons/notification-close.png"
44
- style="width: 100%;"
45
- />
46
- </a>
47
- </p>
48
- <p class="snack-body" id="successSnack">
49
- <span id="successMessage"> {{ ssoLang[appLanguage].success }} </span>
50
- <a
51
- @click="closeSnacks"
52
- style="
53
- position: absolute;
54
- right: 10px;
55
- top: 10px;
56
- width: 50px;
57
- height: 50px;
58
- "
59
- >
60
- <img
61
- src="https://cdn.tapni.co/icons/notification-close.png"
62
- style="width: 100%"
63
- />
64
- </a>
65
- </p>
66
- </div>
67
- </div>
28
+ <div class="snackbar snackbar-boxed" id="snackbar">
29
+ <p class="snack-body" id="errorSnack">
30
+ <span id="errorMessage"> {{ ssoLang[appLanguage].error }} </span>
31
+ <a @click="closeSnacks" style="position: absolute; right: 10px; top: 10px; width: 50px; height: 50px">
32
+ <img src="https://cdn.tapni.co/icons/notification-close.png" style="width: 100%" />
33
+ </a>
34
+ </p>
35
+ <p class="snack-body" id="successSnack">
36
+ <span id="successMessage"> {{ ssoLang[appLanguage].success }} </span>
37
+ <a @click="closeSnacks" style="position: absolute; right: 10px; top: 10px; width: 50px; height: 50px">
38
+ <img src="https://cdn.tapni.co/icons/notification-close.png" style="width: 100%" />
39
+ </a>
40
+ </p>
41
+ </div>
42
+ </div>
68
43
  </template>
69
44
 
70
45
  <script>
71
- import AuthWelcome from "@/views/Welcome.vue";
72
- import AuthLogin from "@/views/Login.vue";
73
- import AuthAccount from "@/views/Account.vue";
74
- import AuthRegister from "@/views/Register.vue";
75
- import AuthVerify from "@/views/Verify.vue";
76
- import AuthSecurity from "@/views/Security.vue";
77
- import AuthGeneral from "@/views/General.vue";
78
- import AuthReset from "@/views/Reset.vue";
79
- import AuthCallback from "@/views/Callback.vue";
80
- import {EventBus} from "./store/event-bus.js";
81
- import AuthMixin from "@/mixins/auth.mixin.js";
82
- import ReactiveStorage from '@tapni/capacitor-reactive-localstorage-vue3'
46
+ import AuthWelcome from '@/views/Welcome.vue';
47
+ import AuthLogin from '@/views/Login.vue';
48
+ import AuthAccount from '@/views/Account.vue';
49
+ import AuthRegister from '@/views/Register.vue';
50
+ import AuthVerify from '@/views/Verify.vue';
51
+ import AuthSecurity from '@/views/Security.vue';
52
+ import AuthGeneral from '@/views/General.vue';
53
+ import AuthReset from '@/views/Reset.vue';
54
+ import AuthCallback from '@/views/Callback.vue';
55
+ import { EventBus } from './store/event-bus.js';
56
+ import AuthMixin from '@/mixins/auth.mixin.js';
57
+ import ReactiveStorage from '@tapni/capacitor-reactive-localstorage-vue3';
83
58
  import store from './store/auth.js';
84
59
  import UtilService from './services/UtilService.js';
85
60
 
86
61
  export default {
87
- store,
88
- name: 'TapniAuth',
89
- mixins: [ReactiveStorage, AuthMixin],
90
- data () {
91
- return {
92
- storeInterval: null,
93
- isSetup: false
94
- }
95
- },
96
- components: {
97
- AuthCallback, AuthReset, AuthVerify, AuthSecurity, AuthRegister, AuthLogin, AuthAccount, AuthWelcome, AuthGeneral
98
- },
99
- props: {
100
- viewProp: {
101
- type: String,
102
- default: ''
103
- },
104
- isModal: {
105
- type: Boolean,
106
- default: false
107
- },
108
- payload: {
109
- type: Object,
110
- default: {}
111
- },
112
- options: {
113
- type: Object,
114
- default: {
115
- 'token': '',
116
- 'refreshTokens': '',
117
- 'username': '',
118
- 'UserId': '',
119
- 'verifyEmail': '',
120
- 'subdomain': '',
121
- 'localUser': ''
122
- }
123
- }
124
- },
125
- computed: {
126
- initialized () {
127
- return this.isSetup || this.isModal;
128
- }
129
- },
130
- async mounted() {
131
- this.applyBgStyle()
132
- this.setView(this.viewProp);
62
+ store,
63
+ name: 'TapniAuth',
64
+ mixins: [ReactiveStorage, AuthMixin],
65
+ data() {
66
+ return {
67
+ storeInterval: null,
68
+ isSetup: false
69
+ };
70
+ },
71
+ components: {
72
+ AuthCallback,
73
+ AuthReset,
74
+ AuthVerify,
75
+ AuthSecurity,
76
+ AuthRegister,
77
+ AuthLogin,
78
+ AuthAccount,
79
+ AuthWelcome,
80
+ AuthGeneral
81
+ },
82
+ props: {
83
+ viewProp: {
84
+ type: String,
85
+ default: ''
86
+ },
87
+ isModal: {
88
+ type: Boolean,
89
+ default: false
90
+ },
91
+ payload: {
92
+ type: Object,
93
+ default: {}
94
+ },
95
+ options: {
96
+ type: Object,
97
+ default: {
98
+ token: '',
99
+ refreshTokens: '',
100
+ username: '',
101
+ UserId: '',
102
+ verifyEmail: '',
103
+ subdomain: '',
104
+ localUser: ''
105
+ }
106
+ }
107
+ },
108
+ computed: {
109
+ initialized() {
110
+ return this.isSetup || this.isModal;
111
+ }
112
+ },
113
+ async mounted() {
114
+ this.applyBgStyle();
115
+ this.setView(this.viewProp);
133
116
 
134
- EventBus.$on('ssoEvent', this.ssoOutgoingEvent)
135
- EventBus.$on('ssoLogout',(data) => this.logout(data))
136
- EventBus.$on('getLoggedInAccounts',() => this.getLoggedInAccounts())
137
- EventBus.$on('refreshTokenAction',(data) => this.refreshTokenAction({...data, storage: this.$storex}))
138
- EventBus.$on('switchAccount',(data) => this.switchAccount(data))
139
- EventBus.$on('setToken',(data) => this.setToken(data))
140
- EventBus.$on('setStorageItem',(data) => this.setStorageItem(data))
117
+ EventBus.$on('ssoEvent', this.ssoOutgoingEvent);
118
+ EventBus.$on('ssoLogout', (data) => this.logout(data));
119
+ EventBus.$on('getLoggedInAccounts', () => this.getLoggedInAccounts());
120
+ EventBus.$on('refreshTokenAction', (data) => this.refreshTokenAction({ ...data, storage: this.$storex }));
121
+ EventBus.$on('switchAccount', (data) => this.switchAccount(data));
122
+ EventBus.$on('setToken', (data) => this.setToken(data));
123
+ EventBus.$on('setStorageItem', (data) => this.setStorageItem(data));
141
124
 
142
- if (import.meta.env.VITE_APP_COMPARE_LANGUAGE_KEYS === "true") {
143
- UtilService.compareLangKeys();
144
- }
145
- },
146
- methods: {
147
- async init () {
148
- this.$store.commit('auth/setApiRoot', this.$apiRoot || process.env.VUE_APP_API_ROOT);
125
+ if (import.meta.env.VITE_APP_COMPARE_LANGUAGE_KEYS === 'true') {
126
+ UtilService.compareLangKeys();
127
+ }
128
+ },
129
+ methods: {
130
+ async init() {
131
+ this.$store.commit('auth/setApiRoot', this.$apiRoot || process.env.VUE_APP_API_ROOT);
149
132
 
150
- // Set $storage into vuex $storex
151
- this.setStorage(this.strg);
133
+ // Set $storage into vuex $storex
134
+ this.setStorage(this.strg);
152
135
 
153
- // Make sure the function is called just once
154
- if (this.isSetup) return;
155
- this.isSetup = true;
136
+ // Make sure the function is called just once
137
+ if (this.isSetup) return;
138
+ this.isSetup = true;
156
139
 
157
- await this.getLoggedInAccounts();
140
+ await this.getLoggedInAccounts();
158
141
 
159
- // Let App know that the auth is ready
160
- this.$emit('ssoLibraryReady', this.$storex);
161
- },
162
- ssoOutgoingEvent (data) {
163
- this.$emit('ssoEvent', data)
164
- },
165
- ssoIncomingEvent (data) {
166
- EventBus.$emit(data.name, data.data)
167
- },
168
- applyBgStyle () {
169
- if (this.display === 'redirect') {
170
- document.getElementsByTagName("html")[0].style = "background: #dfeefe;"
171
- } else {
172
- document.getElementsByTagName("html")[0].style = ""
173
- }
174
- },
175
- },
176
- watch: {
177
- viewProp (nv) {
178
- this.setView(nv);
179
- },
180
- display () {
181
- this.applyBgStyle()
182
- },
183
- 'strgReady.value' (nv) {
184
- if (nv) {
185
- // Initialize Library after all event listeners & storage are set
186
- this.$nextTick(() => {
187
- this.init()
188
- })
189
- }
190
- },
191
- '$storex': {
192
- handler(nv) {
193
- clearInterval(this.storeInterval);
194
- this.storeInterval = setTimeout(() => {
195
- Object.keys(nv).forEach(key => {
196
- this.strg[key] = nv[key];
197
- });
198
- }, 250)
199
- },
200
- deep: true
201
- }
202
- }
203
- }
142
+ // Let App know that the auth is ready
143
+ this.$emit('ssoLibraryReady', this.$storex);
144
+ },
145
+ ssoOutgoingEvent(data) {
146
+ this.$emit('ssoEvent', data);
147
+ },
148
+ ssoIncomingEvent(data) {
149
+ EventBus.$emit(data.name, data.data);
150
+ },
151
+ applyBgStyle() {
152
+ if (this.display === 'redirect') {
153
+ document.getElementsByTagName('html')[0].style = 'background: #dfeefe;';
154
+ } else {
155
+ document.getElementsByTagName('html')[0].style = '';
156
+ }
157
+ }
158
+ },
159
+ watch: {
160
+ viewProp(nv) {
161
+ this.setView(nv);
162
+ },
163
+ display() {
164
+ this.applyBgStyle();
165
+ },
166
+ 'strgReady.value'(nv) {
167
+ if (nv) {
168
+ // Initialize Library after all event listeners & storage are set
169
+ this.$nextTick(() => {
170
+ this.init();
171
+ });
172
+ }
173
+ },
174
+ $storex: {
175
+ handler(nv) {
176
+ clearInterval(this.storeInterval);
177
+ this.storeInterval = setTimeout(() => {
178
+ Object.keys(nv).forEach((key) => {
179
+ this.strg[key] = nv[key];
180
+ });
181
+ }, 250);
182
+ },
183
+ deep: true
184
+ }
185
+ }
186
+ };
204
187
  </script>
205
188
 
206
189
  <style>
207
190
  html * {
208
- font-family: "Inter", sans-serif;
191
+ font-family: 'Inter', sans-serif;
209
192
  }
210
193
 
211
194
  #bodyId {
212
- padding-top: 3%;
213
- max-width: 667px !important;
214
- margin: auto;
215
- height: 95%!important;
216
- margin-top: 1.5%;
217
- border-radius: 20px;
195
+ padding-top: 3%;
196
+ max-width: 667px !important;
197
+ margin: auto;
198
+ height: 95% !important;
199
+ margin-top: 1.5%;
200
+ border-radius: 20px;
218
201
  }
219
202
 
220
203
  .action-block-top .default-text,
221
204
  .action-block-top .default-text:after {
222
- border-radius: 50%;
223
- width: 10em !important;
224
- height: 10em !important;
205
+ border-radius: 50%;
206
+ width: 10em !important;
207
+ height: 10em !important;
225
208
  }
226
209
  .action-block-top .default-text {
227
- margin: 10px auto;
228
- font-size: 3px;
229
- position: relative;
230
- text-indent: -9999em;
231
- /*
210
+ margin: 10px auto;
211
+ font-size: 3px;
212
+ position: relative;
213
+ text-indent: -9999em;
214
+ /*
232
215
  border-left: 0.5em solid #ffffff;
233
216
  border-top: 0.5em solid rgba(255, 255, 255, 0.2);
234
217
  border-right: 0.5em solid rgba(255, 255, 255, 0.2);
235
218
  border-bottom: 0.5em solid rgba(255, 255, 255, 0.2);
236
219
  */
237
- border-left: 0.5em solid #000000;
238
- border-top: 0.5em solid rgba(0, 0, 0, 0.2);
239
- border-right: 0.5em solid rgba(0, 0, 0, 0.2);
240
- border-bottom: 0.5em solid rgba(0, 0, 0, 0.2);
241
- -webkit-transform: translateZ(0);
242
- -ms-transform: translateZ(0);
243
- transform: translateZ(0);
244
- -webkit-animation: load8 1.1s infinite linear;
245
- animation: load8 1.1s infinite linear;
220
+ border-left: 0.5em solid #000000;
221
+ border-top: 0.5em solid rgba(0, 0, 0, 0.2);
222
+ border-right: 0.5em solid rgba(0, 0, 0, 0.2);
223
+ border-bottom: 0.5em solid rgba(0, 0, 0, 0.2);
224
+ -webkit-transform: translateZ(0);
225
+ -ms-transform: translateZ(0);
226
+ transform: translateZ(0);
227
+ -webkit-animation: load8 1.1s infinite linear;
228
+ animation: load8 1.1s infinite linear;
246
229
  }
247
230
  @-webkit-keyframes load8 {
248
- 0% {
249
- -webkit-transform: rotate(0deg);
250
- transform: rotate(0deg);
251
- }
252
- 100% {
253
- -webkit-transform: rotate(360deg);
254
- transform: rotate(360deg);
255
- }
231
+ 0% {
232
+ -webkit-transform: rotate(0deg);
233
+ transform: rotate(0deg);
234
+ }
235
+ 100% {
236
+ -webkit-transform: rotate(360deg);
237
+ transform: rotate(360deg);
238
+ }
256
239
  }
257
240
  @keyframes load8 {
258
- 0% {
259
- -webkit-transform: rotate(0deg);
260
- transform: rotate(0deg);
261
- }
262
- 100% {
263
- -webkit-transform: rotate(360deg);
264
- transform: rotate(360deg);
265
- }
241
+ 0% {
242
+ -webkit-transform: rotate(0deg);
243
+ transform: rotate(0deg);
244
+ }
245
+ 100% {
246
+ -webkit-transform: rotate(360deg);
247
+ transform: rotate(360deg);
248
+ }
266
249
  }
267
250
  .smartbanner-ios {
268
- background: linear-gradient(to bottom, #f4f4f4, #f4f4f4);
269
- box-shadow: 0 0px 0px #ffffff;
270
- border-bottom: 1px solid #dddddd;
251
+ background: linear-gradient(to bottom, #f4f4f4, #f4f4f4);
252
+ box-shadow: 0 0px 0px #ffffff;
253
+ border-bottom: 1px solid #dddddd;
271
254
  }
272
255
  .smartbanner-icon {
273
- border-radius: 16px;
256
+ border-radius: 16px;
274
257
  }
275
258
  .smartbanner-ios .smartbanner-button {
276
- font-size: 13px;
277
- padding: 9px 0px;
278
- height: 40px;
279
- border-radius: 13px;
280
- background: #f4f4f4;
281
- color: #0a99d2;
282
- border: none;
283
- box-shadow: none;
284
- text-transform: uppercase;
259
+ font-size: 13px;
260
+ padding: 9px 0px;
261
+ height: 40px;
262
+ border-radius: 13px;
263
+ background: #f4f4f4;
264
+ color: #0a99d2;
265
+ border: none;
266
+ box-shadow: none;
267
+ text-transform: uppercase;
285
268
  }
286
269
 
287
270
  .snack-body {
288
- display: none;
289
- border-radius: 40px;
290
- font-size: 15px !important;
271
+ display: none;
272
+ border-radius: 40px;
273
+ font-size: 15px !important;
291
274
  }
292
275
 
293
276
  #errorSnack {
294
- background-color: #fee3e3 !important;
295
- border: 2px solid #edd9d9 !important;
296
- color: #000000;
277
+ background-color: #fee3e3 !important;
278
+ border: 2px solid #edd9d9 !important;
279
+ color: #000000;
297
280
  }
298
281
 
299
282
  #successSnack {
300
- background-color: #eff5eb !important;
301
- border: 2px solid #e3ecd7 !important;
302
- color: #000000;
283
+ background-color: #eff5eb !important;
284
+ border: 2px solid #e3ecd7 !important;
285
+ color: #000000;
303
286
  }
304
287
 
305
288
  .grecaptcha-badge {
306
- visibility: hidden;
289
+ visibility: hidden;
307
290
  }
308
291
 
309
292
  .header-logo {
310
- position: absolute;
311
- left: 50%;
312
- transform: translate(-50%, -50%);
313
- margin-top: 0px;
314
- z-index: 2;
293
+ position: absolute;
294
+ left: 50%;
295
+ transform: translate(-50%, -50%);
296
+ margin-top: 0px;
297
+ z-index: 2;
315
298
  }
316
299
 
317
300
  .header-logo-img {
318
- height: 40px;
319
- margin-top: 10px;
301
+ height: 40px;
302
+ margin-top: 10px;
320
303
  }
321
304
 
322
305
  @media (max-width: 768px) {
323
- #bodyId {
324
- margin-top: 0;
325
- border-radius: 0;
326
- height: 100%!important;
327
- }
306
+ #bodyId {
307
+ margin-top: 0;
308
+ border-radius: 0;
309
+ height: 100% !important;
310
+ }
328
311
 
329
- .header-logo {
330
- margin-top: 15px;
331
- }
312
+ .header-logo {
313
+ margin-top: 15px;
314
+ }
332
315
  }
333
316
  </style>
package/src/main.js CHANGED
@@ -45,7 +45,7 @@ router.beforeEach((to, from, next) => {
45
45
  * @param data
46
46
  */
47
47
  function redirectToProfile(data) {
48
- if (data && data.url) {
48
+ if (data && data.url && data.url !== '/undefined') {
49
49
  let url = new URL(data.url);
50
50
  let pathname = url.pathname || '';
51
51
  let queryParams = url.search || '';
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="page-login content-boxed content-boxed-padding tapni-auth-general">
2
+ <div class="page-login content-boxed content-boxed-padding tapni-auth-general" :style="containerStyle">
3
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
4
  <i class="font-17 color-black">
5
5
  <img src="https://cdn.tapni.co/icons/down-arrow.png" class="responsive-image" style="width: 35%;"/>
@@ -7,7 +7,7 @@
7
7
  </a>
8
8
  <div class="subheaderContainer full-top">
9
9
  <!-- Back Button -->
10
- <div v-if="isModal" class="button gray-button pointer left-button" @click="$emit('update:viewProp', 'AuthAccount')">
10
+ <div v-if="isModal" class="pointer left-button" @click="$emit('update:viewProp', 'AuthAccount')">
11
11
  <img
12
12
  :src="getIcon('arrow-gray-right.svg')"
13
13
  height="20"
@@ -16,7 +16,7 @@
16
16
  style="rotate: 180deg;"
17
17
  />
18
18
  </div>
19
- <router-link v-else to="/account" class="button gray-button pointer left-button">
19
+ <router-link v-else to="/account" class="button gray-button pointer left-button" >
20
20
  <img
21
21
  :src="getIcon('arrow-gray-right.svg')"
22
22
  height="20"
@@ -63,7 +63,7 @@
63
63
  :isClearable="false"
64
64
  placeholder="Select region"
65
65
  />
66
- <p>Default currency for this region is {{account.billing?.currency?.toUpperCase()}}</p>
66
+ <p v-if="false">Default currency for this region is {{account.billing?.currency?.toUpperCase()}}</p>
67
67
 
68
68
 
69
69
  <h3 class="full-top bold">{{ssoLang[appLanguage].app_language}}</h3>
@@ -131,6 +131,9 @@ export default {
131
131
  handler(newLang) {
132
132
  if (newLang) {
133
133
  this.updateLang(newLang);
134
+ if (this.display === 'npm') {
135
+ this.$store.commit('setLanguage', newLang);
136
+ }
134
137
  }
135
138
  },
136
139
  immediate: true
@@ -167,9 +170,13 @@ export default {
167
170
 
168
171
  this.loading = false;
169
172
  },
173
+ },
174
+ computed: {
175
+ containerStyle() {
176
+ return {
177
+ height: this.isModal ? '90vh' : 'auto'
178
+ }
179
+ }
170
180
  }
171
181
  };
172
182
  </script>
173
-
174
- <style>
175
- </style>
@@ -361,7 +361,6 @@ export default {
361
361
  else {
362
362
  ssoTypes = Object.keys(response.sso);
363
363
  if (!ssoTypes.length) {
364
- this.forceClose();
365
364
  return this.errorSnack(this.ssoLang[this.appLanguage].no_sso_logins);
366
365
  } else {
367
366
  if (ssoTypes[0] === "azure")