@tapni/auth 1.0.3 → 1.0.5

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 (55) hide show
  1. package/dist/.vite/manifest.json +106 -0
  2. package/dist/Account-Cuz87g_8.js +153 -0
  3. package/dist/Apps-DMds3Dv-.js +109 -0
  4. package/dist/Billing-BXlQEuNy.js +113 -0
  5. package/dist/CustomApp-CLCMXmMO.js +83 -0
  6. package/dist/General-dW73bMoR.js +479 -0
  7. package/dist/QR-D6ZGcPM0.js +41 -0
  8. package/dist/TapniAuth.es.js +4 -0
  9. package/dist/TapniAuth.umd.js +141 -0
  10. package/dist/install-L-cxSovH.js +18465 -0
  11. package/dist/style.css +1 -0
  12. package/dist/web-AXRKjAOB.js +92 -0
  13. package/dist/web-IFGkBi0t.js +86 -0
  14. package/dist/web-LIfHmYL2.js +54 -0
  15. package/dist/web-XbruGdlD.js +121 -0
  16. package/package.json +1 -1
  17. package/src/App.vue +15 -2
  18. package/src/components/{SSO.vue → DELETE_SSO.vue} +1 -7
  19. package/src/main.js +0 -1
  20. package/src/mixins/microsoft.mixin.js +0 -3
  21. package/src/mixins/okta.mixin.js +1 -1
  22. package/src/mixins/saml.mixin.js +1 -1
  23. package/src/routes.js +6 -0
  24. package/src/services/AuthService.js +6 -0
  25. package/src/services/MetadataService.js +10 -0
  26. package/src/store/locales/en.js +2 -1
  27. package/src/views/Apps.vue +17 -30
  28. package/src/views/Billing.vue +108 -0
  29. package/src/views/CustomApp.vue +14 -39
  30. package/src/views/General.vue +5 -4
  31. package/src/views/Login.vue +194 -159
  32. package/src/views/Security.vue +1 -1
  33. package/dist/assets/Account-CElX1bG1.js +0 -1
  34. package/dist/assets/Apps-B-GkviQb.css +0 -1
  35. package/dist/assets/Apps-DH6XpQ6k.js +0 -1
  36. package/dist/assets/CustomApp-D-PMGrCn.js +0 -1
  37. package/dist/assets/CustomApp-x1ZBgKin.css +0 -1
  38. package/dist/assets/General-BD2qnORR.js +0 -1
  39. package/dist/assets/General-OSR9oXHj.css +0 -1
  40. package/dist/assets/Inter-ZO3WBJgw.ttf +0 -0
  41. package/dist/assets/QR-CpmQl6vr.js +0 -1
  42. package/dist/assets/fontawesome-webfont-CQDK8MU3.ttf +0 -0
  43. package/dist/assets/fontawesome-webfont-DXgy9qkh.svg +0 -2671
  44. package/dist/assets/fontawesome-webfont-G5YE5S7X.eot +0 -0
  45. package/dist/assets/index-CNOQuLc_.css +0 -1
  46. package/dist/assets/index-DXEfDC45.js +0 -176
  47. package/dist/assets/web-1uupGAU9.js +0 -5
  48. package/dist/assets/web-BMHaq5cV.js +0 -1
  49. package/dist/assets/web-CvQGphDR.js +0 -1
  50. package/dist/assets/web-DMittTOZ.js +0 -1
  51. package/dist/assets/web-DhQdITWf.js +0 -1
  52. package/dist/assets/web-EiIhTtxC.js +0 -1
  53. package/dist/assets/web-OwpPF4YF.js +0 -1
  54. package/dist/index.html +0 -36
  55. /package/src/components/{SSOPick.vue → DELETE_SSOPick.vue} +0 -0
@@ -0,0 +1,108 @@
1
+ <template>
2
+ <div class="page-login content-boxed content-boxed-padding">
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
+ <div class="subheaderContainer full-top">
9
+ <!-- Back Button -->
10
+ <router-link v-if="!isModal" to="/account" class="button gray-button pointer left-button">
11
+ <img
12
+ :src="getIcon('arrow-gray-right.svg')"
13
+ height="20"
14
+ width="20"
15
+ class="btn-icon"
16
+ style="rotate: 180deg;"
17
+ />
18
+ </router-link>
19
+
20
+ <!-- Centered Text -->
21
+ <h2 class="center-text" style="flex-grow: 1; text-align: center; margin: 0; font-weight: 600;">
22
+ {{ssoLang[appLanguage].billing }}
23
+ </h2>
24
+ </div>
25
+
26
+ <div class="container left-text">
27
+ <p class="center-text">{{ssoLang[appLanguage].billing_p }}</p>
28
+
29
+ <div class="full-top">
30
+ <h3 v-if="false" class="full-top bold small-bottom">{{ssoLang[appLanguage].apps_my}}</h3>
31
+
32
+ {{account.billing}}
33
+
34
+ <div v-for="sub in subscriptions" :key="sub.id" class="settingRow half-bottom">
35
+ <div class="firstRow">
36
+ <img
37
+ :src="getIcon(app.t_apps_icon)"
38
+ class="withBackground"
39
+ />
40
+ <h4>{{ sub.t_subscriptions_name }}</h4>
41
+
42
+ <img :src="getIcon('arrow-gray-right.svg')" />
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </template>
49
+
50
+
51
+ <script>
52
+ import AuthMixin from "../mixins/auth.mixin";
53
+ import {EventBus} from "@/store/event-bus.js";
54
+ import AuthService from "@/services/AuthService.js";
55
+
56
+ export default {
57
+ name: "AuthBilling",
58
+ mixins: [AuthMixin],
59
+ props: {
60
+ payload: {
61
+ type: Object,
62
+ default: {}
63
+ },
64
+ },
65
+ data () {
66
+ return {
67
+ loading: false,
68
+ subscriptions: []
69
+ }
70
+ },
71
+ async mounted() {
72
+ if (!this.isLoggedIn) this.$router.push('/login');
73
+
74
+
75
+ const response = await AuthService.getRecords({
76
+ objectId: '6dc545ea-2e2f-4720-b4fe-c5ebdd8af066',
77
+ query: {
78
+ where: {
79
+ account: this.account.id,
80
+ },
81
+ fields: ['t_subscriptions_name', 't_subscriptions_desc', 't_subscriptions_type', 't_subscriptions_active', 't_subscriptions_app'],
82
+ relations: {
83
+ t_subscriptions_app: {
84
+ fields: [
85
+ "t_apps_name",
86
+ "t_apps_icon",
87
+ "t_apps_url"
88
+ ],
89
+ relations: {},
90
+ }
91
+ }
92
+ }
93
+ })
94
+ this.subscriptions = response.data.records;
95
+ },
96
+ methods: {
97
+ close () {
98
+ EventBus.$emit('ssoEvent', {name: 'toggleAuthModal', data: true})
99
+ },
100
+ }
101
+ };
102
+ </script>
103
+
104
+ <style scoped>
105
+ .withBackground {
106
+ height: 50px;
107
+ }
108
+ </style>
@@ -7,7 +7,7 @@
7
7
  </a>
8
8
  <div class="subheaderContainer full-top">
9
9
  <!-- Back Button -->
10
- <router-link to="/account" class="button gray-button pointer left-button">
10
+ <router-link v-if="!isModal" to="/apps" class="button gray-button pointer left-button">
11
11
  <img
12
12
  :src="getIcon('arrow-gray-right.svg')"
13
13
  height="20"
@@ -19,7 +19,7 @@
19
19
 
20
20
  <!-- Centered Text -->
21
21
  <h2 class="center-text" style="flex-grow: 1; text-align: center; margin: 0; font-weight: 600;">
22
- {{$route.params.app }}
22
+ {{ app.t_apps_name }}
23
23
  </h2>
24
24
  </div>
25
25
 
@@ -27,43 +27,7 @@
27
27
  <p class="center-text">{{ssoLang[appLanguage].apps_p }}</p>
28
28
 
29
29
  <div class="full-top">
30
- <h3 v-if="false" class="full-top bold small-bottom">{{ssoLang[appLanguage].apps_my}}</h3>
31
30
 
32
- <router-link to="/apps/tapni" class="settingRow">
33
- <div class="firstRow">
34
- <img
35
- :src="getIcon('tapni-logo-small-black.png')"
36
- class="withBackground"
37
- />
38
- <h4>Tapni</h4>
39
-
40
- <img :src="getIcon('arrow-gray-right.svg')" />
41
- </div>
42
- </router-link>
43
-
44
- <router-link to="/apps/mailsign" class="settingRow half-top">
45
- <div class="firstRow">
46
- <img
47
- :src="getIcon('app-logo-mailsign.svg')"
48
- class="withBackground"
49
- />
50
- <h4>MailSign</h4>
51
-
52
- <img :src="getIcon('arrow-gray-right.svg')" />
53
- </div>
54
- </router-link>
55
-
56
- <router-link v-if="false" to="/apps/qrcodetoolkit" class="settingRow half-top">
57
- <div class="firstRow">
58
- <img
59
- :src="getIcon('app-logo-qrcodetoolkit.svg')"
60
- class="withBackground"
61
- />
62
- <h4>QRCode Toolkit</h4>
63
-
64
- <img :src="getIcon('arrow-gray-right.svg')" />
65
- </div>
66
- </router-link>
67
31
  </div>
68
32
  </div>
69
33
  </div>
@@ -73,9 +37,10 @@
73
37
  <script>
74
38
  import AuthMixin from "../mixins/auth.mixin";
75
39
  import {EventBus} from "@/store/event-bus.js";
40
+ import AuthService from "@/services/AuthService.js";
76
41
 
77
42
  export default {
78
- name: "AuthSecurity",
43
+ name: "AuthCustomApp",
79
44
  mixins: [AuthMixin],
80
45
  props: {
81
46
  payload: {
@@ -86,10 +51,20 @@ export default {
86
51
  data () {
87
52
  return {
88
53
  loading: false,
54
+ app: {}
89
55
  }
90
56
  },
91
57
  async mounted() {
92
58
  if (!this.isLoggedIn) this.$router.push('/login');
59
+
60
+ const response = await AuthService.getRecordById({
61
+ id: this.$route.params.app,
62
+ query: {
63
+ fields: ['t_apps_name', 't_apps_icon', 't_apps_url'],
64
+ relations: []
65
+ }
66
+ })
67
+ this.app = response.data.record;
93
68
  },
94
69
  methods: {
95
70
  close () {
@@ -7,7 +7,7 @@
7
7
  </a>
8
8
  <div class="subheaderContainer full-top">
9
9
  <!-- Back Button -->
10
- <router-link to="/account" class="button gray-button pointer left-button">
10
+ <router-link v-if="!isModal" to="/account" class="button gray-button pointer left-button">
11
11
  <img
12
12
  :src="getIcon('arrow-gray-right.svg')"
13
13
  height="20"
@@ -38,8 +38,8 @@
38
38
 
39
39
 
40
40
  <h3 class="full-top bold">{{ssoLang[appLanguage].app_region}}</h3>
41
- <VueSelect
42
- v-model="region"
41
+ <VueSelect v-if="account.billing"
42
+ v-model="account.billing.region"
43
43
  :options="[
44
44
  { label: 'United States', value: 'us' },
45
45
  { label: 'United Kingdom', value: 'uk' },
@@ -96,7 +96,7 @@ import {EventBus} from "@/store/event-bus.js";
96
96
  import VueSelect from "vue3-select-component";
97
97
 
98
98
  export default {
99
- name: "AuthSecurity",
99
+ name: "AuthGeneral",
100
100
  mixins: [AuthMixin],
101
101
  components: {
102
102
  VueSelect
@@ -114,6 +114,7 @@ export default {
114
114
  },
115
115
  async mounted() {
116
116
  if (!this.isLoggedIn) this.$router.push('/login');
117
+ if (this.isEmpty(this.account)) this.$router.push('/account');
117
118
  },
118
119
  methods: {
119
120
  close () {
@@ -24,9 +24,10 @@
24
24
  />
25
25
  </i>
26
26
  </a>
27
- <h1 class="bold no-bottom center-text" style="margin-top: 63px;">
28
- {{ this.ssoLang[this.appLanguage].login }}
29
- </h1>
27
+ <h2 class="bold no-bottom center-text" style="margin-top: 63px;">
28
+ <span v-if="isSSOLogin">{{ this.ssoLang[this.appLanguage].enter_company_email }}</span>
29
+ <span v-else>{{ this.ssoLang[this.appLanguage].login }}</span>
30
+ </h2>
30
31
  <p class="half-bottom small-top center-text color-black"></p>
31
32
 
32
33
  <span v-if="displayFormLogin">
@@ -46,12 +47,12 @@
46
47
  spellcheck="false"
47
48
  type="text"
48
49
  name="email"
49
- :placeholder="ssoLang[this.appLanguage].email_username"
50
+ :placeholder="isSSOLogin ? ssoLang[this.appLanguage].email : ssoLang[this.appLanguage].email_username"
50
51
  required
51
52
  />
52
53
  <em></em>
53
54
  </div>
54
- <div class="page-login-field half-bottom">
55
+ <div v-if="!isSSOLogin" class="page-login-field half-bottom">
55
56
  <i style="padding-top: 15px">
56
57
  <img
57
58
  src="https://cdn.tapni.co/icons/padlock.png"
@@ -106,163 +107,170 @@
106
107
  <span v-else class="button--loading button__loader"></span>
107
108
  </button>
108
109
  </span>
110
+
109
111
  <div class="decoration decoration-lines-thin half-top half-bottom"></div>
110
- <!-- Apple Login Button -->
111
- <a
112
- @click="appleLogin"
113
- v-if="displayAppleLogin"
114
- class="button-center button button-90 google-button pointer"
115
- >
116
- <img
117
- src="https://cdn.tapni.co/icons/apple-logo.png"
118
- style="
119
- position: absolute;
120
- margin-left: -11px;
121
- padding: 8px 0;
122
- height: 100%;
123
- "
124
- />
125
- <span v-if="!appleLoad">{{ ssoLang[appLanguage].sign_in_with }} Apple</span>
126
- <span v-else class="button--loading-black button__loader"></span>
127
- </a>
128
112
 
129
- <!-- Google Login Button -->
130
- <a
131
- @click="googleLogin"
132
- v-if="displayGoogleLogin"
133
- class="button-center button button-90 google-button pointer"
134
- >
135
- <img
136
- src="https://cdn.tapni.co/icons/g-logo.png"
137
- style="
138
- position: absolute;
139
- margin-left: -10px;
140
- padding: 8px 0;
141
- height: 100%;
142
- "
143
- />
144
- <span v-if="!googleLoad"
145
- >{{ ssoLang[appLanguage].sign_in_with }} Google</span
113
+ <!-- Login Buttons -->
114
+ <span v-show="!isSSOLogin">
115
+ <!-- Apple Login Button -->
116
+ <a
117
+ @click="appleLogin"
118
+ v-if="displayAppleLogin"
119
+ class="button-center button button-90 google-button pointer"
146
120
  >
147
- <span v-else class="button--loading-black button__loader"></span>
148
- </a>
121
+ <img
122
+ src="https://cdn.tapni.co/icons/apple-logo.png"
123
+ style="
124
+ position: absolute;
125
+ margin-left: -11px;
126
+ padding: 8px 0;
127
+ height: 100%;
128
+ "
129
+ />
130
+ <span v-if="!appleLoad">{{ ssoLang[appLanguage].sign_in_with }} Apple</span>
131
+ <span v-else class="button--loading-black button__loader"></span>
132
+ </a>
149
133
 
150
- <!-- Facebook Login Button -->
151
- <a
152
- @click="facebookLogin"
153
- v-if="displayFacebookLogin"
154
- class="button-center button button-90 google-button pointer"
155
- >
156
- <img
157
- src="https://cdn.tapni.co/icons/facebook-blue.png"
158
- style="
159
- position: absolute;
160
- margin-left: -9px;
161
- padding: 10px 0;
162
- height: 100%;
163
- "
164
- />
165
- <span v-if="!facebookLoad"
166
- >{{ ssoLang[appLanguage].sign_in_with }} Facebook</span
134
+ <!-- Google Login Button -->
135
+ <a
136
+ @click="googleLogin"
137
+ v-if="displayGoogleLogin"
138
+ class="button-center button button-90 google-button pointer"
167
139
  >
168
- <span v-else class="button--loading-black button__loader"></span>
169
- </a>
140
+ <img
141
+ src="https://cdn.tapni.co/icons/g-logo.png"
142
+ style="
143
+ position: absolute;
144
+ margin-left: -10px;
145
+ padding: 8px 0;
146
+ height: 100%;
147
+ "
148
+ />
149
+ <span v-if="!googleLoad"
150
+ >{{ ssoLang[appLanguage].sign_in_with }} Google</span
151
+ >
152
+ <span v-else class="button--loading-black button__loader"></span>
153
+ </a>
170
154
 
171
- <!-- Microsoft Login Button -->
172
- <a
173
- @click="microsoftLogin"
174
- v-if="!displayMicrosoftSSOLogin"
175
- class="button-center button button-90 google-button pointer"
176
- >
177
- <img
178
- src="https://cdn.tapni.co/icons/outlook.png"
179
- style="
180
- position: absolute;
181
- margin-left: -8px;
182
- padding: 10px 0;
183
- height: 100%;
184
- "
185
- />
186
- <span v-if="!microsoftLoad"
155
+ <!-- Facebook Login Button -->
156
+ <a
157
+ @click="facebookLogin"
158
+ v-if="displayFacebookLogin"
159
+ class="button-center button button-90 google-button pointer"
160
+ >
161
+ <img
162
+ src="https://cdn.tapni.co/icons/facebook-blue.png"
163
+ style="
164
+ position: absolute;
165
+ margin-left: -9px;
166
+ padding: 10px 0;
167
+ height: 100%;
168
+ "
169
+ />
170
+ <span v-if="!facebookLoad"
171
+ >{{ ssoLang[appLanguage].sign_in_with }} Facebook</span
172
+ >
173
+ <span v-else class="button--loading-black button__loader"></span>
174
+ </a>
175
+
176
+ <!-- Microsoft Login Button -->
177
+ <a
178
+ @click="microsoftLogin"
179
+ v-if="!displayMicrosoftSSOLogin"
180
+ class="button-center button button-90 google-button pointer"
181
+ >
182
+ <img
183
+ src="https://cdn.tapni.co/icons/outlook.png"
184
+ style="
185
+ position: absolute;
186
+ margin-left: -8px;
187
+ padding: 10px 0;
188
+ height: 100%;
189
+ "
190
+ />
191
+ <span v-if="!microsoftLoad"
187
192
  >{{ ssoLang[appLanguage].sign_in_with }} Outlook</span
193
+ >
194
+ <span v-else class="button--loading-black button__loader"></span>
195
+ </a>
196
+
197
+ <!-- Microsoft SSO Button -->
198
+ <a
199
+ @click="isSSOLogin = true"
200
+ v-if="!displayMicrosoftSSOLogin"
201
+ class="button-center button button-90 google-button pointer"
188
202
  >
189
- <span v-else class="button--loading-black button__loader"></span>
190
- </a>
203
+ <img
204
+ src="https://cdn.tapni.co/icons/sso-key.png"
205
+ style="
206
+ position: absolute;
207
+ margin-left: -8px;
208
+ padding: 10px 0;
209
+ height: 100%;
210
+ "
211
+ />
212
+ <span v-if="!microsoftSSOLoad">{{ ssoLang[appLanguage].sign_in_with }} SSO</span>
213
+ <span v-else class="button--loading-black button__loader"></span>
214
+ </a>
191
215
 
192
- <!-- Microsoft SSO Button -->
193
- <a
194
- @click="ssoLogin"
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
- <!-- Microsoft SSO Button -->
211
- <a
212
- @click="microsoftLogin('sso')"
213
- v-if="displayMicrosoftSSOLogin"
214
- class="button-center button button-90 google-button pointer"
215
- >
216
- <img
217
- src="https://cdn.tapni.co/icons/sso-key.png"
218
- style="
219
- position: absolute;
220
- margin-left: -8px;
221
- padding: 10px 0;
222
- height: 100%;
223
- "
224
- />
225
- <span v-if="microsoftSSOLoad">{{ ssoLang[appLanguage].sign_in_with }} SSO</span>
226
- <span v-else class="button--loading-black button__loader"></span>
227
- </a>
216
+ <!-- Microsoft SSO Button -->
217
+ <a
218
+ @click="microsoftLogin('sso')"
219
+ v-if="displayMicrosoftSSOLogin"
220
+ class="button-center button button-90 google-button pointer"
221
+ >
222
+ <img
223
+ src="https://cdn.tapni.co/icons/sso-key.png"
224
+ style="
225
+ position: absolute;
226
+ margin-left: -8px;
227
+ padding: 10px 0;
228
+ height: 100%;
229
+ "
230
+ />
231
+ <span v-if="microsoftSSOLoad">{{ ssoLang[appLanguage].sign_in_with }} SSO</span>
232
+ <span v-else class="button--loading-black button__loader"></span>
233
+ </a>
228
234
 
229
- <!-- Email Login Button -->
230
- <a
231
- @click="emailLogin = true"
232
- v-if="!displayFormLogin"
233
- class="button-center button button-90 google-button pointer"
234
- >
235
- <img
236
- src="https://cdn.tapni.co/icons/mail.png"
237
- style="
238
- position: absolute;
239
- margin-left: -8px;
240
- padding: 12px 0;
241
- height: 100%;
242
- "
243
- />
244
- <span>{{ ssoLang[appLanguage].sign_in_with }} Email</span>
245
- </a>
235
+ <!-- Email Login Button -->
236
+ <a
237
+ @click="emailLogin = true"
238
+ v-if="!displayFormLogin"
239
+ class="button-center button button-90 google-button pointer"
240
+ >
241
+ <img
242
+ src="https://cdn.tapni.co/icons/mail.png"
243
+ style="
244
+ position: absolute;
245
+ margin-left: -8px;
246
+ padding: 12px 0;
247
+ height: 100%;
248
+ "
249
+ />
250
+ <span>{{ ssoLang[appLanguage].sign_in_with }} Email</span>
251
+ </a>
246
252
 
247
- <!-- Google Login Button -->
248
- <a
249
- @click="$router.push('/qr')"
250
- v-if="displayQRLogin"
251
- class="button-center button button-90 google-button pointer"
252
- >
253
- <img
254
- src="https://cdn.tapni.co/icons/qr.png"
255
- style="
256
- position: absolute;
257
- margin-left: -5px;
258
- padding: 15px 0;
259
- height: 100%;
260
- "
261
- />
262
- <span>{{ ssoLang[appLanguage].sign_in_with }} QR</span>
263
- </a>
253
+ <!-- Google Login Button -->
254
+ <a
255
+ @click="$router.push('/qr')"
256
+ v-if="displayQRLogin"
257
+ class="button-center button button-90 google-button pointer"
258
+ >
259
+ <img
260
+ src="https://cdn.tapni.co/icons/qr.png"
261
+ style="
262
+ position: absolute;
263
+ margin-left: -5px;
264
+ padding: 15px 0;
265
+ height: 100%;
266
+ "
267
+ />
268
+ <span>{{ ssoLang[appLanguage].sign_in_with }} QR</span>
269
+ </a>
270
+
271
+ <div class="decoration decoration-lines-thin no-bottom"></div>
272
+ </span>
264
273
 
265
- <div class="decoration decoration-lines-thin no-bottom"></div>
266
274
 
267
275
  <p class="close-text center-text half-top color-black">
268
276
  {{ ssoLang[appLanguage].terms_by_signing_in }} <br />
@@ -280,21 +288,25 @@
280
288
  v-if="displayRegisterLogin"
281
289
  class="forgot float-right"
282
290
  to="/register"
283
- >{{ ssoLang[appLanguage].create_account }}</router-link
284
- >
291
+ >{{ ssoLang[appLanguage].create_account }}
292
+ </router-link>
285
293
  <router-link
286
294
  v-if="displayResetPasswordLogin"
287
295
  class="create float-left"
288
296
  to="/reset"
289
- >{{ ssoLang[appLanguage].reset_password }}</router-link
290
- >
297
+ >{{ ssoLang[appLanguage].reset_password }}
298
+ </router-link>
299
+ <a v-if="isSSOLogin" @click="isSSOLogin = false"
300
+ class="create float-left pointer"
301
+ >{{ ssoLang[appLanguage].go_back }}
302
+ </a>
291
303
  <div class="clear"></div>
292
304
  </div>
293
305
  <div v-else class="page-login-links" @click="createAccountModal">
294
- <a class="forgot center-text pointer small-top"
295
- >{{ ssoLang[appLanguage].or }} <br />
296
- {{ ssoLang[appLanguage].create_new_account }}</a
297
- >
306
+ <a class="forgot center-text pointer small-top">
307
+ {{ ssoLang[appLanguage].or }} <br />
308
+ {{ ssoLang[appLanguage].create_new_account }}
309
+ </a>
298
310
  <div class="clear"></div>
299
311
  </div>
300
312
  </form>
@@ -323,6 +335,7 @@ export default {
323
335
  captcha: "",
324
336
  revealPassword: false,
325
337
  emailLogin: true,
338
+ isSSOLogin: false,
326
339
 
327
340
  otpToken: '',
328
341
  showOTP: false
@@ -333,7 +346,7 @@ export default {
333
346
  return this.emailLogin;
334
347
  },
335
348
  displayResetPasswordLogin() {
336
- return true;
349
+ return !this.isSSOLogin;
337
350
  },
338
351
  displayRegisterLogin() {
339
352
  return true;
@@ -361,11 +374,33 @@ export default {
361
374
  });
362
375
  },
363
376
  methods: {
377
+ async ssoLoginSubmit () {
378
+ this.loading = true;
379
+ const response = await this.getCompanyBySSOEmail({ email: this.emailOrUsername });
380
+ this.loading = false;
381
+ let ssoTypes;
382
+ if (!response || response.error) return;
383
+ else {
384
+ ssoTypes = Object.keys(response.sso);
385
+ if (!ssoTypes.length) {
386
+ this.forceClose();
387
+ return this.errorSnack(this.ssoLang[this.appLanguage].no_sso_logins);
388
+ } else {
389
+ if (ssoTypes[0] === "azure")
390
+ this.microsoftLogin("sso", response.sso.azure.sso);
391
+ if (ssoTypes[0] === "okta") this.oktaLogin(response.sso.okta.sso);
392
+ if (ssoTypes[0] === "saml")
393
+ this.samlLogin(response.sso.saml.sso.loginUrl);
394
+ }
395
+ }
396
+ },
364
397
  async submit() {
365
398
  // if (this.captcha === '') return this._vm.errorHandler({ message: 'Please select recaptcha' });
366
399
  if (this.submitted) return;
367
400
  this.submitted = true;
368
401
 
402
+ if (this.isSSOLogin) return this.ssoLoginSubmit();
403
+
369
404
  this.emailOrUsername = this.emailOrUsername.trim();
370
405
 
371
406
  let response_type = this.$route.query.response_type;
@@ -7,7 +7,7 @@
7
7
  </a>
8
8
  <div class="subheaderContainer full-top">
9
9
  <!-- Back Button -->
10
- <router-link to="/account" class="button gray-button pointer left-button">
10
+ <router-link v-if="!isModal" to="/account" class="button gray-button pointer left-button">
11
11
  <img
12
12
  :src="getIcon('arrow-gray-right.svg')"
13
13
  height="20"