@tapni/auth 0.0.170 → 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-6F9eRo1R.js → Account-BB71UmF3.js} +31 -32
  6. package/dist/{QR-2Izy5Dj4.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-co2F1hxN.js → install-Cx9Gi17U.js} +752 -996
  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
package/src/store/auth.js CHANGED
@@ -1,568 +1,496 @@
1
- import to from "await-to-js";
2
- import UserService from "../services/UserService";
3
- import DeviceService from "../services/DeviceService";
4
- import AuthService from "../services/AuthService";
5
- import CompanyService from "../services/CompanyService";
6
- import { Device } from "@capacitor/device";
7
- import axios from "axios";
8
- import en from "../store/locales/en.js";
9
- import de from "../store/locales/de.js";
10
- import es from "../store/locales/es.js";
11
- import fr from "../store/locales/fr.js";
12
- import it from "../store/locales/it.js";
13
- import sr from "../store/locales/sr.js";
14
- import tr from "../store/locales/tr.js";
15
- import cn from "../store/locales/cn.js";
16
- import kr from "../store/locales/kr.js";
17
- import {EventBus} from "@/store/event-bus.js";
1
+ import to from 'await-to-js';
2
+ import UserService from '../services/UserService';
3
+ import DeviceService from '../services/DeviceService';
4
+ import AuthService from '../services/AuthService';
5
+ import CompanyService from '../services/CompanyService';
6
+ import { Device } from '@capacitor/device';
7
+ import axios from 'axios';
8
+ import en from '../store/locales/en.js';
9
+ import de from '../store/locales/de.js';
10
+ import es from '../store/locales/es.js';
11
+ import fr from '../store/locales/fr.js';
12
+ import it from '../store/locales/it.js';
13
+ import sr from '../store/locales/sr.js';
14
+ import tr from '../store/locales/tr.js';
15
+ import cn from '../store/locales/cn.js';
16
+ import kr from '../store/locales/kr.js';
17
+ import { EventBus } from '@/store/event-bus.js';
18
18
  import router from '../router/index.js';
19
19
  export default {
20
- namespaced: true,
21
- state: {
22
- $storex: {},
23
- view: "",
24
- lang: "en",
25
- realm: "app",
26
- refreshing: false,
27
- loggedInUserId: "",
28
- apiRoot: "",
29
- account: {},
30
- device: {},
31
- loggedInAccounts: {},
32
- ssoLang: {
33
- en: en.state,
34
- de: de.state,
35
- es: es.state,
36
- fr: fr.state,
37
- it: it.state,
38
- sr: sr.state,
39
- tr: tr.state,
40
- cn: cn.state,
41
- kr: kr.state,
42
- },
43
- display: import.meta.env.VITE_APP_MODE,
44
- redirect_uri: import.meta.env.VITE_APP_APP_ROOT + "/callback/auth",
45
- response_type: "token",
46
- state: "",
47
- allowedOriginsAuth: [
48
- "https://business.tapni.com",
49
- "https://business-dev.tapni.com",
50
- "https://tapni.com",
51
- "https://tapni.co",
52
- "https://t.link",
53
- "https://my.tapni.com",
54
- "https://my.tapni.co",
55
- "https://dev.tapni.co",
56
- "https://dev.tapni.com",
57
- "https://auth.tapni.com",
58
- "https://auth.tapni.co",
59
- "https://mailsign.link",
60
- "https://sign.tapni.com",
61
- "https://qrcodetoolkit.com",
62
- "https://qr.tapni.com",
63
- "https://designer.tapni.com",
64
- "https://designer-dev.tapni.com",
65
- "http://localhost:8082",
66
- "http://localhost:7777",
67
- "http://localhost:8086",
68
- "https://localhost:8085",
69
- "http://localhost:8085"
70
- ],
71
- },
72
- mutations: {
73
- setAccountSettings(state, account) {
74
- state.account = account;
75
- },
76
- setStorage(state, storage) {
77
- state.$storex = {
78
- ...state.$storex,
79
- ...storage
80
- };
81
- },
82
- setLoggedInAccounts(state, accounts) {
83
- state.loggedInAccounts = {};
84
- accounts.forEach((account) => {
85
- state.loggedInAccounts[account.username] = account;
86
- });
87
- },
88
- setLoggedInUserId(state, id) {
89
- state.loggedInUserId = id;
90
- },
91
- setRefreshTokens(state, refreshTokens) {
92
- state.$storex.refreshTokens = refreshTokens;
93
- },
94
- setRefreshToken(state, token) {
95
- if(!token) return;
96
- let refreshTokens = state.$storex.refreshTokens ? state.$storex.refreshTokens.split(",") : [];
97
- refreshTokens = [token, ...refreshTokens.filter(t => t !== token)];
98
- state.$storex.refreshTokens = refreshTokens.join(",");
99
- },
100
- setToken(state, token) {
101
- state.$storex.token = token;
102
- },
103
- updateLang(state, lang) {
104
- state.lang = lang;
105
- },
106
- setView(state, view) {
107
- state.view = view;
108
- },
109
- setRedirectUri(state, uri) {
110
- state.redirect_uri = uri;
111
- },
112
- setDisplay(state, display) {
113
- state.display = display;
114
- },
115
- setState(state, stateValue) {
116
- state.state = stateValue;
117
- },
118
- setResponseType(state, responseType) {
119
- state.response_type = responseType;
120
- },
121
- setRealm(state, realm) {
122
- state.realm = realm;
123
- },
124
- setApiRoot(state, apiRoot) {
125
- state.apiRoot = apiRoot;
126
- },
127
- },
128
- actions: {
129
- async getAccountSettings({ state, commit, dispatch }) {
130
- const [err, response] = await to(
131
- AuthService.getAccountSettings()
132
- );
133
- if (err) return dispatch('errorHandler', err);
134
- if (response.data.success) {
135
- commit('setAccountSettings', response.data.data);
136
- }
137
- },
138
- setStorage({ commit }, storage) {
139
- commit('setStorage', storage);
140
- },
141
- errorHandler({ dispatch }, error) {
142
- if (
143
- error &&
144
- error.response &&
145
- error.response.data &&
146
- error.response.data.error
147
- ) {
148
- if (error.response.data.error === "ACCESS_DENIED") {
149
- return dispatch('logout');
150
- }
20
+ namespaced: true,
21
+ state: {
22
+ $storex: {},
23
+ view: '',
24
+ lang: 'en',
25
+ realm: 'app',
26
+ refreshing: false,
27
+ loggedInUserId: '',
28
+ apiRoot: '',
29
+ account: {},
30
+ device: {},
31
+ loggedInAccounts: {},
32
+ ssoLang: {
33
+ en: en.state,
34
+ de: de.state,
35
+ es: es.state,
36
+ fr: fr.state,
37
+ it: it.state,
38
+ sr: sr.state,
39
+ tr: tr.state,
40
+ cn: cn.state,
41
+ kr: kr.state
42
+ },
43
+ display: import.meta.env.VITE_APP_MODE,
44
+ redirect_uri: import.meta.env.VITE_APP_APP_ROOT + '/callback/auth',
45
+ response_type: 'token',
46
+ state: '',
47
+ allowedOriginsAuth: ['https://business.tapni.com', 'https://business-dev.tapni.com', 'https://tapni.com', 'https://tapni.co', 'https://t.link', 'https://my.tapni.com', 'https://my.tapni.co', 'https://dev.tapni.co', 'https://dev.tapni.com', 'https://auth.tapni.com', 'https://auth.tapni.co', 'https://mailsign.link', 'https://sign.tapni.com', 'https://qrcodetoolkit.com', 'https://qr.tapni.com', 'https://designer.tapni.com', 'https://designer-dev.tapni.com', 'http://localhost:8082', 'http://localhost:7777', 'http://localhost:8086', 'https://localhost:8085', 'http://localhost:8085', 'https://bigeye.tapni.com']
48
+ },
49
+ mutations: {
50
+ setAccountSettings(state, account) {
51
+ state.account = account;
52
+ },
53
+ setStorage(state, storage) {
54
+ state.$storex = {
55
+ ...state.$storex,
56
+ ...storage
57
+ };
58
+ },
59
+ setLoggedInAccounts(state, accounts) {
60
+ state.loggedInAccounts = {};
61
+ accounts.forEach((account) => {
62
+ state.loggedInAccounts[account.username] = account;
63
+ });
64
+ },
65
+ setLoggedInUserId(state, id) {
66
+ state.loggedInUserId = id;
67
+ },
68
+ setRefreshTokens(state, refreshTokens) {
69
+ state.$storex.refreshTokens = refreshTokens;
70
+ },
71
+ setRefreshToken(state, token) {
72
+ if (!token) return;
73
+ let refreshTokens = state.$storex.refreshTokens ? state.$storex.refreshTokens.split(',') : [];
74
+ refreshTokens = [token, ...refreshTokens.filter((t) => t !== token)];
75
+ state.$storex.refreshTokens = refreshTokens.join(',');
76
+ },
77
+ setToken(state, token) {
78
+ state.$storex.token = token;
79
+ },
80
+ updateLang(state, lang) {
81
+ state.lang = lang;
82
+ },
83
+ setView(state, view) {
84
+ state.view = view;
85
+ },
86
+ setRedirectUri(state, uri) {
87
+ state.redirect_uri = uri;
88
+ },
89
+ setDisplay(state, display) {
90
+ state.display = display;
91
+ },
92
+ setState(state, stateValue) {
93
+ state.state = stateValue;
94
+ },
95
+ setResponseType(state, responseType) {
96
+ state.response_type = responseType;
97
+ },
98
+ setRealm(state, realm) {
99
+ state.realm = realm;
100
+ },
101
+ setApiRoot(state, apiRoot) {
102
+ state.apiRoot = apiRoot;
103
+ }
104
+ },
105
+ actions: {
106
+ async getAccountSettings({ state, commit, dispatch }) {
107
+ const [err, response] = await to(AuthService.getAccountSettings());
108
+ if (err) return dispatch('errorHandler', err);
109
+ if (response.data.success) {
110
+ commit('setAccountSettings', response.data.data);
111
+ }
112
+ },
113
+ setStorage({ commit }, storage) {
114
+ commit('setStorage', storage);
115
+ },
116
+ errorHandler({ dispatch }, error) {
117
+ if (error && error.response && error.response.data && error.response.data.error) {
118
+ if (error.response.data.error === 'ACCESS_DENIED') {
119
+ return dispatch('logout');
120
+ }
151
121
 
152
- if (error.response.data.error === 'OTP_REQUIRED') {
153
- return EventBus.$emit('toggleOTPModal', true);
154
- }
122
+ if (error.response.data.error === 'OTP_REQUIRED') {
123
+ return EventBus.$emit('toggleOTPModal', true);
124
+ }
155
125
 
156
- // Link click network error bug fix
157
- if (
158
- !error.response.data.error.includes("Network Error") &&
159
- !error.response.data.error.includes("TOKEN_EXPIRED") &&
160
- !error.response.data.error.includes("Cannot read properties")
161
- ) {
162
- dispatch('errorSnack', error.response.data.error);
163
- }
164
- }
165
- return error;
166
- },
167
- errorSnack({ commit }, message) {
168
- let snackbar = document.getElementById("snackbar");
169
- let errMessage = document.getElementById("errorMessage");
170
- let errorSnack = document.getElementById("errorSnack");
171
- errMessage.innerHTML = message;
172
- snackbar.classList.add("show-snack");
173
- errorSnack.classList.add("active-snack");
174
- setTimeout(function () {
175
- errorSnack.classList.remove("active-snack");
176
- snackbar.classList.remove("show-snack");
177
- }, 3000);
178
- },
179
- successSnack({ commit }, message) {
180
- let snackbar = document.getElementById("snackbar");
181
- let successMessage = document.getElementById("successMessage");
182
- let successSnack = document.getElementById("successSnack");
183
- successMessage.innerHTML = message;
184
- snackbar.classList.add("show-snack");
185
- successSnack.classList.add("active-snack");
186
- setTimeout(function () {
187
- successSnack.classList.remove("active-snack");
188
- snackbar.classList.remove("show-snack");
189
- }, 3000);
190
- },
191
- closeSnacks({ commit }) {
192
- document.getElementById("snackbar").classList.remove("show-snack");
193
- document.getElementById("successSnack").classList.remove("active-snack");
194
- document.getElementById("errorSnack").classList.remove("active-snack");
195
- },
196
- async eventLog({ commit, dispatch }, data) {
197
- const [err, response] = await to(
198
- UserService.eventLog(data)
199
- );
200
- if (err) return dispatch('errorHandler', err);
201
- return response;
202
- },
203
- async maintenance({ commit }) {
204
- const [err, response] = await to(
205
- axios.get("https://status.tapni.co/data/maintenance.json")
206
- );
207
- if (err) return console.error(err);
208
- if (response) {
209
- let maintenanceState = response.data;
210
- if (typeof response.data === "string") {
211
- maintenanceState = JSON.parse(response.data);
212
- }
126
+ // Link click network error bug fix
127
+ if (!error.response.data.error.includes('Network Error') && !error.response.data.error.includes('TOKEN_EXPIRED') && !error.response.data.error.includes('Cannot read properties')) {
128
+ dispatch('errorSnack', error.response.data.error);
129
+ }
130
+ }
131
+ return error;
132
+ },
133
+ errorSnack({ commit }, message) {
134
+ let snackbar = document.getElementById('snackbar');
135
+ let errMessage = document.getElementById('errorMessage');
136
+ let errorSnack = document.getElementById('errorSnack');
137
+ errMessage.innerHTML = message;
138
+ snackbar.classList.add('show-snack');
139
+ errorSnack.classList.add('active-snack');
140
+ setTimeout(function () {
141
+ errorSnack.classList.remove('active-snack');
142
+ snackbar.classList.remove('show-snack');
143
+ }, 3000);
144
+ },
145
+ successSnack({ commit }, message) {
146
+ let snackbar = document.getElementById('snackbar');
147
+ let successMessage = document.getElementById('successMessage');
148
+ let successSnack = document.getElementById('successSnack');
149
+ successMessage.innerHTML = message;
150
+ snackbar.classList.add('show-snack');
151
+ successSnack.classList.add('active-snack');
152
+ setTimeout(function () {
153
+ successSnack.classList.remove('active-snack');
154
+ snackbar.classList.remove('show-snack');
155
+ }, 3000);
156
+ },
157
+ closeSnacks({ commit }) {
158
+ document.getElementById('snackbar').classList.remove('show-snack');
159
+ document.getElementById('successSnack').classList.remove('active-snack');
160
+ document.getElementById('errorSnack').classList.remove('active-snack');
161
+ },
162
+ async eventLog({ commit, dispatch }, data) {
163
+ const [err, response] = await to(UserService.eventLog(data));
164
+ if (err) return dispatch('errorHandler', err);
165
+ return response;
166
+ },
167
+ async maintenance({ commit }) {
168
+ const [err, response] = await to(axios.get('https://status.tapni.co/data/maintenance.json'));
169
+ if (err) return console.error(err);
170
+ if (response) {
171
+ let maintenanceState = response.data;
172
+ if (typeof response.data === 'string') {
173
+ maintenanceState = JSON.parse(response.data);
174
+ }
213
175
 
214
- if (maintenanceState.api && maintenanceState.api.maintenanceActive) {
215
- location.href =
216
- "https://t.link/maintenance?msg=" + maintenanceState.api.msg;
217
- }
218
- }
219
- },
220
- async loginSetup({ commit, dispatch }, response) {
221
- // Save Refresh Token
222
- if (response.data.refreshToken) commit('setRefreshToken', response.data.refreshToken);
176
+ if (maintenanceState.api && maintenanceState.api.maintenanceActive) {
177
+ location.href = 'https://t.link/maintenance?msg=' + maintenanceState.api.msg;
178
+ }
179
+ }
180
+ },
181
+ async loginSetup({ commit, dispatch }, response) {
182
+ // Save Refresh Token
183
+ if (response.data.refreshToken) commit('setRefreshToken', response.data.refreshToken);
223
184
 
224
- // Save Access Token
225
- if (response.data.token) commit('setToken', response.data.token);
185
+ // Save Access Token
186
+ if (response.data.token) commit('setToken', response.data.token);
226
187
 
227
- commit('setLoggedInUserId', response.data.data.id);
188
+ commit('setLoggedInUserId', response.data.data.id);
228
189
 
229
- commit('setStorage', {
230
- UserId: response.data.data.id,
231
- username: response.data.data.username,
232
- localUser: response.data.data
233
- })
190
+ commit('setStorage', {
191
+ UserId: response.data.data.id,
192
+ username: response.data.data.username,
193
+ localUser: response.data.data
194
+ });
234
195
 
235
- if (response.isModal === true) {
236
- dispatch('setLoggedInAccounts', [
237
- {
238
- id: response.data.data.id,
239
- username: response.data.data.username,
240
- name: response.data.data.name,
241
- refreshToken: response.data.refreshToken,
242
- photo: response.data.data.photo,
243
- },
244
- ]);
245
- }
246
- },
247
- async switchAccount({ commit, dispatch, state }, username) {
248
- if (state.loggedInAccounts[username]) {
249
- commit('setStorage', {
250
- username: username,
251
- UserId: state.loggedInAccounts[username].id,
252
- localUser: state.loggedInAccounts[username]
253
- })
254
- commit('setLoggedInUserId', state.loggedInAccounts[username].id);
255
- commit('setRefreshToken', state.loggedInAccounts[username].refreshToken);
256
- await dispatch('refreshTokenAction', state.loggedInAccounts[username]);
257
- }
258
- EventBus.$emit("ssoEvent", { name: "switchAccount", data: { username }, });
259
- },
260
- async refreshTokenAction({ dispatch, commit, state, getters }, data) {
261
- if (state.refreshing) {
262
- return null;
263
- }
196
+ if (response.isModal === true) {
197
+ dispatch('setLoggedInAccounts', [
198
+ {
199
+ id: response.data.data.id,
200
+ username: response.data.data.username,
201
+ name: response.data.data.name,
202
+ refreshToken: response.data.refreshToken,
203
+ photo: response.data.data.photo
204
+ }
205
+ ]);
206
+ }
207
+ },
208
+ async switchAccount({ commit, dispatch, state }, username) {
209
+ if (state.loggedInAccounts[username]) {
210
+ commit('setStorage', {
211
+ username: username,
212
+ UserId: state.loggedInAccounts[username].id,
213
+ localUser: state.loggedInAccounts[username]
214
+ });
215
+ commit('setLoggedInUserId', state.loggedInAccounts[username].id);
216
+ commit('setRefreshToken', state.loggedInAccounts[username].refreshToken);
217
+ await dispatch('refreshTokenAction', state.loggedInAccounts[username]);
218
+ }
219
+ EventBus.$emit('ssoEvent', { name: 'switchAccount', data: { username } });
220
+ },
221
+ async refreshTokenAction({ dispatch, commit, state, getters }, data) {
222
+ if (state.refreshing) {
223
+ return null;
224
+ }
264
225
 
265
- state.refreshing = true;
266
- const [err, response] = await to(
267
- AuthService.refreshToken({
268
- id: data.id,
269
- refreshToken: getters.refreshTokens[0],
270
- refreshTokenAction: true
271
- })
272
- );
273
- if (err && err.response && err.response.data.error === "ACCESS_DENIED") {
274
- dispatch('logout', { refreshToken: data.refreshToken, sendRequest: false });
275
- return location.reload();
276
- }
226
+ state.refreshing = true;
227
+ const [err, response] = await to(
228
+ AuthService.refreshToken({
229
+ id: data.id,
230
+ refreshToken: getters.refreshTokens[0],
231
+ refreshTokenAction: true
232
+ })
233
+ );
234
+ if (err && err.response && err.response.data.error === 'ACCESS_DENIED') {
235
+ dispatch('logout', { refreshToken: data.refreshToken, sendRequest: false });
236
+ return location.reload();
237
+ }
277
238
 
278
- // Set new access token
279
- if (response && response.data) {
280
- commit('setToken', response.data.token);
281
- EventBus.$emit("ssoEvent", { name: "setStorage", data: state.$storex });
282
- }
283
- state.refreshing = false;
284
- },
285
- async login({ commit, state, dispatch }, data) {
286
- const [err, response] = await to(AuthService.login(data));
287
- if (err) return dispatch('errorHandler', err);
288
- if (response.data.success) {
289
- if (state.display !== 'popup') {
290
- dispatch('loginSetup', { ...response, isModal: data.isModal });
291
- await dispatch('getLoggedInAccounts');
292
- }
239
+ // Set new access token
240
+ if (response && response.data) {
241
+ commit('setToken', response.data.token);
242
+ EventBus.$emit('ssoEvent', { name: 'setStorage', data: state.$storex });
243
+ }
244
+ state.refreshing = false;
245
+ },
246
+ async login({ commit, state, dispatch }, data) {
247
+ const [err, response] = await to(AuthService.login(data));
248
+ if (err) return dispatch('errorHandler', err);
249
+ if (response.data.success) {
250
+ if (state.display !== 'popup') {
251
+ dispatch('loginSetup', { ...response, isModal: data.isModal });
252
+ await dispatch('getLoggedInAccounts');
253
+ }
293
254
 
294
- dispatch('loginSuccess', { ...response, isModal: data.isModal });
255
+ dispatch('loginSuccess', { ...response, isModal: data.isModal });
295
256
 
296
- return true;
297
- }
298
- },
299
- loginSuccess({ commit, state, dispatch, getters }, response) {
300
- if (state.display === "redirect") {
301
- if (state.redirect_uri &&
302
- !state.allowedOriginsAuth.some((domain) =>
303
- state.redirect_uri.startsWith(domain)
304
- )
305
- ) {
306
- return console.error("Redirect URI not allowed");
307
- }
257
+ return true;
258
+ }
259
+ },
260
+ loginSuccess({ commit, state, dispatch, getters }, response) {
261
+ if (state.display === 'redirect') {
262
+ if (state.redirect_uri && !state.allowedOriginsAuth.some((domain) => state.redirect_uri.startsWith(domain))) {
263
+ return console.error('Redirect URI not allowed');
264
+ }
308
265
 
309
- return router.push('/account');
266
+ return router.push('/account');
310
267
 
311
- location.href = state.redirect_uri +
312
- "?code=" +
313
- response.data.auth_code +
314
- "&state=" +
315
- state.state;
316
- } else if (state.display === "popup") {
317
- state.allowedOriginsAuth.forEach((domain) => {
318
- window.parent?.postMessage(
319
- { code: response.data.auth_code, state: state.state },
320
- domain
321
- );
322
- });
323
- } else if (state.display === 'npm') {
324
- EventBus.$emit('ssoEvent', {name: 'setLoading', data: true})
325
- EventBus.$emit("ssoEvent", { name: "setStorage", data: state.$storex });
326
- EventBus.$emit("ssoEvent", { name: "getUser", data: {username: response.data.data.username} });
268
+ location.href = state.redirect_uri + '?code=' + response.data.auth_code + '&state=' + state.state;
269
+ } else if (state.display === 'popup') {
270
+ state.allowedOriginsAuth.forEach((domain) => {
271
+ window.parent?.postMessage({ code: response.data.auth_code, state: state.state }, domain);
272
+ });
273
+ } else if (state.display === 'npm') {
274
+ EventBus.$emit('ssoEvent', { name: 'setLoading', data: true });
275
+ EventBus.$emit('ssoEvent', { name: 'setStorage', data: state.$storex });
276
+ EventBus.$emit('ssoEvent', { name: 'getUser', data: { username: response.data.data.username } });
327
277
 
328
- dispatch('setLoggedInAccounts', [
329
- {
330
- id: response.data.data.id,
331
- username: response.data.data.username,
332
- name: response.data.data.name,
333
- refreshToken: response.data.refreshToken,
334
- photo: response.data.data.photo,
335
- },
336
- ]);
278
+ dispatch('setLoggedInAccounts', [
279
+ {
280
+ id: response.data.data.id,
281
+ username: response.data.data.username,
282
+ name: response.data.data.name,
283
+ refreshToken: response.data.refreshToken,
284
+ photo: response.data.data.photo
285
+ }
286
+ ]);
337
287
 
338
- if (response.isModal) {
339
- dispatch('successSnack', state.ssoLang[getters.appLanguage].success_login);
340
- setTimeout(() => {
341
- location.reload();
342
- }, 1500);
343
- }
288
+ if (response.isModal) {
289
+ dispatch('successSnack', state.ssoLang[getters.appLanguage].success_login);
290
+ setTimeout(() => {
291
+ location.reload();
292
+ }, 1500);
293
+ }
344
294
 
345
- EventBus.$emit("ssoEvent", { name: "redirect", data: "/" + response.data.data.username + "#edit" });
346
- }
347
- },
348
- async register({ commit, dispatch }, data) {
349
- const [err, response] = await to(
350
- AuthService.register(data)
351
- );
352
- if (err) return dispatch('errorHandler', err);
353
- return response;
354
- },
355
- async verify({ commit, dispatch }, data) {
356
- const [err, response] = await to(AuthService.verify(data));
357
- if (err) return dispatch('errorHandler', err);
358
- return response;
359
- },
360
- async reset({ commit, state, getters, dispatch }, data) {
361
- const [err, response] = await to(
362
- AuthService.sendResetEmail(data)
363
- );
364
- if (err) return dispatch('errorHandler', err);
365
- if (response.data.success) {
366
- dispatch('successSnack', state.ssoLang[getters.appLanguage].password_reset_success);
367
- }
368
- },
369
- async exchangeAuthCode({ commit, dispatch }, data) {
370
- const [err, response] = await to(AuthService.exchangeAuthCode(data));
371
- if (err) return dispatch('errorHandler', err);
372
- await dispatch('loginSetup', response);
373
- await dispatch('getLoggedInAccounts');
374
- dispatch('loginSuccess', response);
375
- },
376
- async changePassword({ commit, dispatch }, data) {
377
- const [err, response] = await to(
378
- AuthService.changePassword(data)
379
- );
380
- if (err) return dispatch('errorHandler', err);
381
- return response.data.success;
382
- },
383
- async newPassword({ commit, dispatch }, data) {
384
- const [err, response] = await to(
385
- UserService.newPassword(data)
386
- );
387
- if (err) return dispatch('errorHandler', err);
388
- return response.data.success;
389
- },
390
- async deleteAccount({ commit, dispatch }, data) {
391
- const [err, response] = await to(
392
- UserService.deleteAccount(data)
393
- );
394
- if (err) return dispatch('errorHandler', err);
395
- return response.data.success;
396
- },
397
- async registerDevice({ commit, dispatch }) {
398
- const deviceID = await Device.getId();
399
- const deviceInfo = await Device.getInfo();
400
- let deviceData = {
401
- device_id: deviceID.uuid,
402
- platform: deviceInfo.platform,
403
- device_info: {
404
- model: deviceInfo.model,
405
- manufacturer: deviceInfo.manufacturer,
406
- operatingSystem: deviceInfo.operatingSystem,
407
- osVersion: deviceInfo.osVersion,
408
- isVirtual: deviceInfo.isVirtual,
409
- webViewVersion: deviceInfo.webViewVersion,
410
- },
411
- };
412
- const [err, response] = await to(
413
- DeviceService.registerDevice(deviceData)
414
- );
415
- if (err) return dispatch('errorHandler', err);
416
- return response;
417
- },
418
- async addFcmToken({ commit, dispatch }, data) {
419
- const [err, response] = await to(
420
- DeviceService.addFcmToken(data)
421
- );
422
- if (err) return dispatch('errorHandler', err);
423
- return response;
424
- },
425
- async acceptCompanyInvitation({ commit, dispatch }, code) {
426
- const [err, response] = await to(
427
- CompanyService.acceptCompanyInvitation(code)
428
- );
429
- if (err) return dispatch('errorHandler', err);
430
- return response;
431
- },
432
- async logout({ commit, dispatch, state }, { refreshToken, sendRequest = true }) {
433
- if (sendRequest && refreshToken) {
434
- AuthService.logout({ token: refreshToken });
435
- }
295
+ EventBus.$emit('ssoEvent', { name: 'redirect', data: '/' + response.data.data.username + '#edit' });
296
+ }
297
+ },
298
+ async register({ commit, dispatch }, data) {
299
+ const [err, response] = await to(AuthService.register(data));
300
+ if (err) return dispatch('errorHandler', err);
301
+ return response;
302
+ },
303
+ async verify({ commit, dispatch }, data) {
304
+ const [err, response] = await to(AuthService.verify(data));
305
+ if (err) return dispatch('errorHandler', err);
306
+ return response;
307
+ },
308
+ async reset({ commit, state, getters, dispatch }, data) {
309
+ const [err, response] = await to(AuthService.sendResetEmail(data));
310
+ if (err) return dispatch('errorHandler', err);
311
+ if (response.data.success) {
312
+ dispatch('successSnack', state.ssoLang[getters.appLanguage].password_reset_success);
313
+ }
314
+ },
315
+ async exchangeAuthCode({ commit, dispatch }, data) {
316
+ const [err, response] = await to(AuthService.exchangeAuthCode(data));
317
+ if (err) return dispatch('errorHandler', err);
318
+ await dispatch('loginSetup', response);
319
+ await dispatch('getLoggedInAccounts');
320
+ dispatch('loginSuccess', response);
321
+ },
322
+ async changePassword({ commit, dispatch }, data) {
323
+ const [err, response] = await to(AuthService.changePassword(data));
324
+ if (err) return dispatch('errorHandler', err);
325
+ return response.data.success;
326
+ },
327
+ async newPassword({ commit, dispatch }, data) {
328
+ const [err, response] = await to(UserService.newPassword(data));
329
+ if (err) return dispatch('errorHandler', err);
330
+ return response.data.success;
331
+ },
332
+ async deleteAccount({ commit, dispatch }, data) {
333
+ const [err, response] = await to(UserService.deleteAccount(data));
334
+ if (err) return dispatch('errorHandler', err);
335
+ return response.data.success;
336
+ },
337
+ async registerDevice({ commit, dispatch }) {
338
+ const deviceID = await Device.getId();
339
+ const deviceInfo = await Device.getInfo();
340
+ let deviceData = {
341
+ device_id: deviceID.uuid,
342
+ platform: deviceInfo.platform,
343
+ device_info: {
344
+ model: deviceInfo.model,
345
+ manufacturer: deviceInfo.manufacturer,
346
+ operatingSystem: deviceInfo.operatingSystem,
347
+ osVersion: deviceInfo.osVersion,
348
+ isVirtual: deviceInfo.isVirtual,
349
+ webViewVersion: deviceInfo.webViewVersion
350
+ }
351
+ };
352
+ const [err, response] = await to(DeviceService.registerDevice(deviceData));
353
+ if (err) return dispatch('errorHandler', err);
354
+ return response;
355
+ },
356
+ async addFcmToken({ commit, dispatch }, data) {
357
+ const [err, response] = await to(DeviceService.addFcmToken(data));
358
+ if (err) return dispatch('errorHandler', err);
359
+ return response;
360
+ },
361
+ async acceptCompanyInvitation({ commit, dispatch }, code) {
362
+ const [err, response] = await to(CompanyService.acceptCompanyInvitation(code));
363
+ if (err) return dispatch('errorHandler', err);
364
+ return response;
365
+ },
366
+ async logout({ commit, dispatch, state }, { refreshToken, sendRequest = true }) {
367
+ if (sendRequest && refreshToken) {
368
+ AuthService.logout({ token: refreshToken });
369
+ }
436
370
 
437
- if (state.$storex) {
438
- state.$storex.username = '';
439
- state.$storex.UserId = '';
440
- state.$storex.localUser = '';
441
- commit('setToken', '');
442
- }
443
- commit('setLoggedInUserId', '');
371
+ if (state.$storex) {
372
+ state.$storex.username = '';
373
+ state.$storex.UserId = '';
374
+ state.$storex.localUser = '';
375
+ commit('setToken', '');
376
+ }
377
+ commit('setLoggedInUserId', '');
444
378
 
445
- const remainingRefreshTokens = await dispatch('unsetRefreshToken', refreshToken);
379
+ const remainingRefreshTokens = await dispatch('unsetRefreshToken', refreshToken);
446
380
 
447
- if (remainingRefreshTokens.length >= 1) {
448
- Object.keys(state.loggedInAccounts).forEach((username) => {
449
- if (state.loggedInAccounts[username].refreshToken === remainingRefreshTokens[0]) {
450
- commit('setStorage', {
451
- username: username,
452
- UserId: state.loggedInAccounts[username].id,
453
- localUser: state.loggedInAccounts[username]
454
- })
455
- commit('setRefreshToken', remainingRefreshTokens[0]);
456
- commit('setLoggedInUserId', state.loggedInAccounts[username].id);
457
- dispatch('refreshTokenAction', state.loggedInAccounts[username]).then(() => {
458
- EventBus.$emit("ssoEvent", { name: "switchAccount", data: { username }, });
459
- });
460
- }
461
- });
462
- } else {
463
- if (state.display === "redirect") {
464
- return router.push('/welcome');
465
- } else if (state.display === "npm") {
466
- EventBus.$emit("ssoEvent", { name: "redirect", data: "/welcome" });
467
- }
468
- }
469
- },
470
- async getCompanyBySSOEmail({ commit, dispatch }, data) {
471
- const [err, response] = await to(
472
- CompanyService.getBySSOEmail(data.email)
473
- );
474
- if (err) return dispatch('errorHandler', err);
475
- if (response.data.success) {
476
- return response.data;
477
- }
478
- },
479
- async getLoggedInAccounts({ getters, dispatch }) {
480
- if (getters.refreshTokens && getters.refreshTokens.length >= 1) {
481
- const [err, response] = await to(
482
- AuthService.getLoggedInAccounts({ refreshTokens: getters.refreshTokens })
483
- );
484
- if (err) return dispatch('errorHandler', err);
485
- if (response && response.data && response.data.success) {
486
- dispatch('setLoggedInAccounts', response.data.accounts);
487
- }
488
- }
489
- },
490
- async loginUsingQR({ commit, dispatch }, data) {
491
- const [err, response] = await to(
492
- UserService.loginUsingQR(data)
493
- );
494
- if (err) return dispatch('errorHandler', err);
495
- return response.data.success;
496
- },
497
- setLoggedInAccounts({ commit }, accounts) {
498
- commit('setLoggedInAccounts', accounts);
499
- EventBus.$emit("ssoEvent", { name: "setLoggedInAccounts", data: accounts });
500
- },
501
- setLoggedInUserId({ commit }, id) {
502
- commit('setLoggedInUserId', id);
503
- },
504
- setRefreshToken({ commit }, token) {
505
- commit('setRefreshToken', token);
506
- },
507
- async unsetRefreshToken({ commit, state, dispatch, getters }, refreshToken) {
508
- let refreshTokens = getters.refreshTokens;
381
+ if (remainingRefreshTokens.length >= 1) {
382
+ Object.keys(state.loggedInAccounts).forEach((username) => {
383
+ if (state.loggedInAccounts[username].refreshToken === remainingRefreshTokens[0]) {
384
+ commit('setStorage', {
385
+ username: username,
386
+ UserId: state.loggedInAccounts[username].id,
387
+ localUser: state.loggedInAccounts[username]
388
+ });
389
+ commit('setRefreshToken', remainingRefreshTokens[0]);
390
+ commit('setLoggedInUserId', state.loggedInAccounts[username].id);
391
+ dispatch('refreshTokenAction', state.loggedInAccounts[username]).then(() => {
392
+ EventBus.$emit('ssoEvent', { name: 'switchAccount', data: { username } });
393
+ });
394
+ }
395
+ });
396
+ } else {
397
+ if (state.display === 'redirect') {
398
+ return router.push('/welcome');
399
+ } else if (state.display === 'npm') {
400
+ EventBus.$emit('ssoEvent', { name: 'redirect', data: '/welcome' });
401
+ }
402
+ }
403
+ },
404
+ async getCompanyBySSOEmail({ commit, dispatch }, data) {
405
+ const [err, response] = await to(CompanyService.getBySSOEmail(data.email));
406
+ if (err) return dispatch('errorHandler', err);
407
+ if (response.data.success) {
408
+ return response.data;
409
+ }
410
+ },
411
+ async getLoggedInAccounts({ getters, dispatch }) {
412
+ if (getters.refreshTokens && getters.refreshTokens.length >= 1) {
413
+ const [err, response] = await to(AuthService.getLoggedInAccounts({ refreshTokens: getters.refreshTokens }));
414
+ if (err) return dispatch('errorHandler', err);
415
+ if (response && response.data && response.data.success) {
416
+ dispatch('setLoggedInAccounts', response.data.accounts);
417
+ }
418
+ }
419
+ },
420
+ async loginUsingQR({ commit, dispatch }, data) {
421
+ const [err, response] = await to(UserService.loginUsingQR(data));
422
+ if (err) return dispatch('errorHandler', err);
423
+ return response.data.success;
424
+ },
425
+ setLoggedInAccounts({ commit }, accounts) {
426
+ commit('setLoggedInAccounts', accounts);
427
+ EventBus.$emit('ssoEvent', { name: 'setLoggedInAccounts', data: accounts });
428
+ },
429
+ setLoggedInUserId({ commit }, id) {
430
+ commit('setLoggedInUserId', id);
431
+ },
432
+ setRefreshToken({ commit }, token) {
433
+ commit('setRefreshToken', token);
434
+ },
435
+ async unsetRefreshToken({ commit, state, dispatch, getters }, refreshToken) {
436
+ let refreshTokens = getters.refreshTokens;
509
437
 
510
- // Remove the specified refresh token from the list
511
- refreshTokens = refreshTokens?.filter((t) => t !== refreshToken);
438
+ // Remove the specified refresh token from the list
439
+ refreshTokens = refreshTokens?.filter((t) => t !== refreshToken);
512
440
 
513
- // Update the refresh tokens in the state
514
- commit('setRefreshTokens', refreshTokens.join(","));
441
+ // Update the refresh tokens in the state
442
+ commit('setRefreshTokens', refreshTokens.join(','));
515
443
 
516
- return refreshTokens;
517
- },
518
- setToken({ commit }, token) {
519
- commit('setToken', token);
520
- },
521
- updateLang({ commit }, lang) {
522
- commit('updateLang', lang);
523
- },
524
- setView({ commit }, view) {
525
- commit('setView', view);
526
- },
527
- setRedirectUri({ commit }, uri) {
528
- commit('setRedirectUri', uri);
529
- },
530
- setDisplay({ commit }, display) {
531
- commit('setDisplay', display);
532
- },
533
- setState({ commit }, stateValue) {
534
- commit('setState', stateValue);
535
- },
536
- setResponseType({ commit }, responseType) {
537
- commit('setResponseType', responseType);
538
- },
539
- setRealm({ commit }, realm) {
540
- commit('setRealm', realm);
541
- },
542
- },
543
- getters: {
544
- isLoggedIn: state => {
545
- return !!state.$storex.token && state.$storex.token !== "" && state.$storex.token !== "null";
546
- },
547
- renderView: (state, getters, rootState) => {
548
- if (state.display !== "npm") {
549
- return rootState.route?.name;
550
- } else return state.view;
551
- },
552
- appRealm: state => {
553
- return state.realm;
554
- },
555
- appLanguage: state => {
556
- return state.lang;
557
- },
558
- accessToken: state => {
559
- return state.$storex.token;
560
- },
561
- refreshTokens: state => {
562
- return state.$storex.refreshTokens.split(',')
563
- },
564
- apiRoot: state => {
565
- return state.apiRoot;
566
- }
567
- }
444
+ return refreshTokens;
445
+ },
446
+ setToken({ commit }, token) {
447
+ commit('setToken', token);
448
+ },
449
+ updateLang({ commit }, lang) {
450
+ commit('updateLang', lang);
451
+ },
452
+ setView({ commit }, view) {
453
+ commit('setView', view);
454
+ },
455
+ setRedirectUri({ commit }, uri) {
456
+ commit('setRedirectUri', uri);
457
+ },
458
+ setDisplay({ commit }, display) {
459
+ commit('setDisplay', display);
460
+ },
461
+ setState({ commit }, stateValue) {
462
+ commit('setState', stateValue);
463
+ },
464
+ setResponseType({ commit }, responseType) {
465
+ commit('setResponseType', responseType);
466
+ },
467
+ setRealm({ commit }, realm) {
468
+ commit('setRealm', realm);
469
+ }
470
+ },
471
+ getters: {
472
+ isLoggedIn: (state) => {
473
+ return !!state.$storex.token && state.$storex.token !== '' && state.$storex.token !== 'null';
474
+ },
475
+ renderView: (state, getters, rootState) => {
476
+ if (state.display !== 'npm') {
477
+ return rootState.route?.name;
478
+ } else return state.view;
479
+ },
480
+ appRealm: (state) => {
481
+ return state.realm;
482
+ },
483
+ appLanguage: (state) => {
484
+ return state.lang;
485
+ },
486
+ accessToken: (state) => {
487
+ return state.$storex.token;
488
+ },
489
+ refreshTokens: (state) => {
490
+ return state.$storex.refreshTokens.split(',');
491
+ },
492
+ apiRoot: (state) => {
493
+ return state.apiRoot;
494
+ }
495
+ }
568
496
  };