bt-core-app 2.2.45 → 2.2.46
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/dist/components/BT-Auth-Loader.vue.d.ts +2 -0
- package/dist/components/BT-Auth-Loader.vue.mjs +28 -0
- package/dist/components/BT-Auth-Loader.vue2.mjs +4 -0
- package/dist/components/BT-Nav-Sidebar.vue.mjs +22 -21
- package/dist/components.mjs +36 -34
- package/dist/composables/auth-actions.d.ts +9 -0
- package/dist/composables/auth-actions.mjs +30 -0
- package/dist/composables/auth.d.ts +0 -1
- package/dist/composables/auth.mjs +151 -154
- package/dist/composables.mjs +240 -238
- package/dist/index-components.d.ts +2 -1
- package/dist/index-composables.d.ts +2 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -1,151 +1,148 @@
|
|
|
1
|
-
import { isLengthyArray as
|
|
1
|
+
import { isLengthyArray as q, appendUrl as S, isNullOrEmpty as v, jwtDecrypt as B } from "./helpers.mjs";
|
|
2
2
|
import m from "../bt-core/core/node_modules/luxon/src/datetime.mjs";
|
|
3
3
|
import "../bt-core/core/node_modules/luxon/src/duration.mjs";
|
|
4
|
-
import { useStorage as
|
|
5
|
-
import { ref as
|
|
6
|
-
import { useAuthUrl as
|
|
7
|
-
import { useApi as
|
|
8
|
-
let
|
|
9
|
-
const
|
|
10
|
-
function
|
|
11
|
-
return
|
|
4
|
+
import { useStorage as J } from "@vueuse/core";
|
|
5
|
+
import { ref as K, computed as L, toValue as o } from "vue";
|
|
6
|
+
import { useAuthUrl as k } from "./urls.mjs";
|
|
7
|
+
import { useApi as R } from "./api.mjs";
|
|
8
|
+
let b = "Australia/Melbourne", I;
|
|
9
|
+
const C = "auth-credentials-state";
|
|
10
|
+
function ne() {
|
|
11
|
+
return I;
|
|
12
12
|
}
|
|
13
|
-
function
|
|
14
|
-
const c =
|
|
15
|
-
let h =
|
|
16
|
-
h.value.length == 0 &&
|
|
17
|
-
function
|
|
18
|
-
h.value = Math.random().toString(36).substring(4, 19) + Math.random().toString(12).substring(1, 11), localStorage.setItem(
|
|
13
|
+
function ue(u) {
|
|
14
|
+
const c = u.expiryTokenFormat ?? "d/MM/yyyy h:mm:ss a", D = u.tokenRefreshMinuteWindow ?? 10800;
|
|
15
|
+
let h = K(localStorage.getItem(C) ?? "");
|
|
16
|
+
h.value.length == 0 && O();
|
|
17
|
+
function O() {
|
|
18
|
+
h.value = Math.random().toString(36).substring(4, 19) + Math.random().toString(12).substring(1, 11), localStorage.setItem(C, h.value);
|
|
19
19
|
}
|
|
20
|
-
const i =
|
|
21
|
-
|
|
22
|
-
function F(
|
|
23
|
-
if (e == null)
|
|
24
|
-
return !0;
|
|
25
|
-
var r = n.getAuthItem != null ? n.getAuthItem(e) : null;
|
|
20
|
+
const i = J("auth-credentials", {});
|
|
21
|
+
u.menu != null && (u.menu.currentView.value = i.value.subscriptionCode);
|
|
22
|
+
function F(r) {
|
|
26
23
|
if (r == null)
|
|
24
|
+
return !0;
|
|
25
|
+
var e = u.getAuthItem != null ? u.getAuthItem(r) : null;
|
|
26
|
+
if (e == null)
|
|
27
27
|
return !1;
|
|
28
|
-
if (
|
|
28
|
+
if (e.requiresAuth === !1)
|
|
29
29
|
return !0;
|
|
30
30
|
const t = o(i);
|
|
31
|
-
if (t.isSuspended &&
|
|
31
|
+
if (t.isSuspended && e.ignoreSuspension !== !0)
|
|
32
32
|
return !1;
|
|
33
33
|
if (t.isGlobalAdmin)
|
|
34
34
|
return !0;
|
|
35
|
-
if (
|
|
36
|
-
if (Array.isArray(
|
|
37
|
-
if (
|
|
35
|
+
if (e.permissions != null && e.permissions.length > 0) {
|
|
36
|
+
if (Array.isArray(e.permissions[0])) {
|
|
37
|
+
if (e.permissions.every((l) => l.some((a) => !d(a))))
|
|
38
38
|
return !1;
|
|
39
39
|
} else
|
|
40
|
-
for (var
|
|
41
|
-
if (!d(
|
|
40
|
+
for (var n = 0; n < e.permissions.length; n++)
|
|
41
|
+
if (!d(e.permissions[n]))
|
|
42
42
|
return !1;
|
|
43
43
|
}
|
|
44
44
|
return !0;
|
|
45
45
|
}
|
|
46
|
-
function d(
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
for (var t = 0; t <
|
|
50
|
-
var
|
|
51
|
-
if (
|
|
46
|
+
function d(r) {
|
|
47
|
+
const e = o(i);
|
|
48
|
+
if (e.userPermissions != null)
|
|
49
|
+
for (var t = 0; t < e.userPermissions.length; t++) {
|
|
50
|
+
var n = e.userPermissions[t].split(".");
|
|
51
|
+
if (e.userPermissions[t] == "everything.edit" || r == n[0] && n.length > 1 && n[1] == "edit")
|
|
52
52
|
return !0;
|
|
53
53
|
}
|
|
54
54
|
return !1;
|
|
55
55
|
}
|
|
56
|
-
function _(
|
|
57
|
-
if (e == null)
|
|
58
|
-
return !0;
|
|
59
|
-
var r = n.getAuthItem != null ? n.getAuthItem(e) : null;
|
|
56
|
+
function _(r) {
|
|
60
57
|
if (r == null)
|
|
58
|
+
return !0;
|
|
59
|
+
var e = u.getAuthItem != null ? u.getAuthItem(r) : null;
|
|
60
|
+
if (e == null)
|
|
61
61
|
return !1;
|
|
62
|
-
if (
|
|
62
|
+
if (e.requiresAuth === !1)
|
|
63
63
|
return !0;
|
|
64
64
|
const t = o(i);
|
|
65
|
-
if (t.isSuspended &&
|
|
65
|
+
if (t.isSuspended && e.ignoreSuspension !== !0)
|
|
66
66
|
return !1;
|
|
67
67
|
if (t.isGlobalAdmin)
|
|
68
68
|
return !0;
|
|
69
|
-
if (
|
|
70
|
-
if (Array.isArray(
|
|
71
|
-
if (
|
|
69
|
+
if (e.permissions != null && e.permissions.length > 0) {
|
|
70
|
+
if (Array.isArray(e.permissions[0])) {
|
|
71
|
+
if (e.permissions.every((l) => l.some((a) => !g(a))))
|
|
72
72
|
return !1;
|
|
73
73
|
} else
|
|
74
|
-
for (var
|
|
75
|
-
if (!g(
|
|
74
|
+
for (var n = 0; n < e.permissions.length; n++)
|
|
75
|
+
if (!g(e.permissions[n]))
|
|
76
76
|
return !1;
|
|
77
77
|
}
|
|
78
78
|
return !0;
|
|
79
79
|
}
|
|
80
|
-
function g(
|
|
81
|
-
const
|
|
82
|
-
if (
|
|
83
|
-
for (var t = 0; t <
|
|
84
|
-
var
|
|
85
|
-
if (
|
|
80
|
+
function g(r) {
|
|
81
|
+
const e = o(i);
|
|
82
|
+
if (e.userPermissions != null)
|
|
83
|
+
for (var t = 0; t < e.userPermissions.length; t++) {
|
|
84
|
+
var n = e.userPermissions[t].split(".");
|
|
85
|
+
if (r == n[0] || r == "everything" || e.userPermissions[t] == "everything.view" || e.userPermissions[t] == "everything.edit")
|
|
86
86
|
return !0;
|
|
87
87
|
}
|
|
88
88
|
return !1;
|
|
89
89
|
}
|
|
90
|
-
function
|
|
91
|
-
let
|
|
92
|
-
return
|
|
93
|
-
t == "edit" ? d(
|
|
94
|
-
})),
|
|
90
|
+
function x(r, e, t) {
|
|
91
|
+
let n = !0, l = !0;
|
|
92
|
+
return r != null && r.length > 0 && (r.some((s) => V(s)) || (l = !1)), l ? o(i).isGlobalAdmin ? !0 : (e != null && e.length > 0 && (Array.isArray(e[0]) ? t == "edit" ? e.some((s) => s.every((f) => d(f))) || (n = !1) : e.some((s) => s.every((f) => g(f))) || (n = !1) : e.forEach((s) => {
|
|
93
|
+
t == "edit" ? d(s) || (n = !1) : g(s) || (n = !1);
|
|
94
|
+
})), n) : !1;
|
|
95
95
|
}
|
|
96
|
-
function p(
|
|
97
|
-
var t =
|
|
98
|
-
let
|
|
96
|
+
function p(r, e = !1) {
|
|
97
|
+
var t = u.getAuthItem != null ? u.getAuthItem(r) : null;
|
|
98
|
+
let n = !1;
|
|
99
99
|
if (t == null)
|
|
100
100
|
return !1;
|
|
101
|
-
let
|
|
102
|
-
return
|
|
103
|
-
p(f, !0) && (
|
|
104
|
-
}),
|
|
101
|
+
let l = t.subscriptions ?? [], a = t.permissions ?? [], s = x(l, a, "view");
|
|
102
|
+
return s || !e || !q(t.children) ? s : ((t == null ? void 0 : t.children) != null && t.children.forEach((f) => {
|
|
103
|
+
p(f, !0) && (n = !0);
|
|
104
|
+
}), n);
|
|
105
105
|
}
|
|
106
|
-
function
|
|
107
|
-
return
|
|
108
|
-
const
|
|
109
|
-
return
|
|
110
|
-
}),
|
|
106
|
+
function w(r) {
|
|
107
|
+
return u.getAuthorizeUrl ?? (u.getAuthorizeUrl = (e, t) => {
|
|
108
|
+
const n = S(k(), `authorize?response_type=code&client_id=${u.oauthClientID}&redirect_uri=${window.location.origin}/authentication&state=${t}`);
|
|
109
|
+
return e != null ? `${n}&redirect_path=${e}` : n;
|
|
110
|
+
}), u.getAuthorizeUrl != null ? u.getAuthorizeUrl(r, h.value) ?? "" : "";
|
|
111
111
|
}
|
|
112
|
-
function
|
|
112
|
+
function E(r) {
|
|
113
113
|
var t;
|
|
114
|
-
return
|
|
114
|
+
return r == null ? 0 : ((t = (u.subscriptionOptions ?? []).find((n) => n.code == r)) == null ? void 0 : t.value) ?? 0;
|
|
115
115
|
}
|
|
116
|
-
function V(
|
|
117
|
-
const
|
|
118
|
-
if (
|
|
116
|
+
function V(r) {
|
|
117
|
+
const e = o(i);
|
|
118
|
+
if (e.subscriptionCode == null)
|
|
119
119
|
return !1;
|
|
120
|
-
if (
|
|
120
|
+
if (e.subscriptionCode == r)
|
|
121
121
|
return !0;
|
|
122
|
-
const t =
|
|
123
|
-
return t <=
|
|
124
|
-
}
|
|
125
|
-
async function Z(e) {
|
|
126
|
-
i.value = void 0, A(), n.firebase != null && await n.firebase.unregister(), e != null && n.router != null && n.router.currentRoute.value.path != e && n.router.push({ path: e });
|
|
122
|
+
const t = E(r), n = E(e.subscriptionCode);
|
|
123
|
+
return t <= n;
|
|
127
124
|
}
|
|
128
|
-
function y(
|
|
129
|
-
i.value = void 0,
|
|
125
|
+
function y(r) {
|
|
126
|
+
i.value = void 0, P(), r != null && u.router != null && u.router.currentRoute.value.path != r && u.router.push({ path: r });
|
|
130
127
|
}
|
|
131
|
-
function
|
|
128
|
+
function Z(r, e) {
|
|
132
129
|
const t = o(i);
|
|
133
|
-
if (
|
|
130
|
+
if (A() || !t.isLoggedIn) {
|
|
134
131
|
y();
|
|
135
|
-
let
|
|
136
|
-
|
|
132
|
+
let n = w(r);
|
|
133
|
+
e != null && (n.includes("?") || (n = n + "?"), n.includes("&") && (n = n + "&"), n = n + new URLSearchParams(e).toString()), window.location.href = n;
|
|
137
134
|
} else
|
|
138
|
-
!v(
|
|
135
|
+
!v(r) && u.router != null && u.router.push({ path: r });
|
|
139
136
|
}
|
|
140
|
-
async function
|
|
141
|
-
return
|
|
142
|
-
if (
|
|
137
|
+
async function G() {
|
|
138
|
+
return u.tryRefreshToken ?? (u.tryRefreshToken = async () => {
|
|
139
|
+
if (u.useTokenRefresh !== !0 || v(i.value.refreshToken) || v(i.value.refreshExpiresOn))
|
|
143
140
|
return;
|
|
144
|
-
const
|
|
145
|
-
if (!(t >
|
|
146
|
-
var
|
|
141
|
+
const r = m.fromFormat(i.value.refreshExpiresOn, c), e = m.fromFormat(i.value.expiresOn, c), t = m.utc().toFormat(c), n = e.plus({ minutes: 0 - D });
|
|
142
|
+
if (!(t > r.toFormat(c)) && !(t < n.toFormat(c))) {
|
|
143
|
+
var l = S(k(), u.tokenRefreshPath ?? "refreshtoken");
|
|
147
144
|
try {
|
|
148
|
-
var a = await fetch(
|
|
145
|
+
var a = await fetch(l, {
|
|
149
146
|
method: "POST",
|
|
150
147
|
mode: "cors",
|
|
151
148
|
cache: "no-cache",
|
|
@@ -155,107 +152,107 @@ function ie(n) {
|
|
|
155
152
|
body: JSON.stringify({ refreshToken: i.value.refreshToken })
|
|
156
153
|
});
|
|
157
154
|
if (a.ok) {
|
|
158
|
-
var
|
|
159
|
-
a != null &&
|
|
155
|
+
var s = await a.json();
|
|
156
|
+
a != null && s.data != null && T(s.data);
|
|
160
157
|
}
|
|
161
158
|
} catch {
|
|
162
159
|
}
|
|
163
160
|
}
|
|
164
|
-
}), await
|
|
161
|
+
}), await u.tryRefreshToken(i.value);
|
|
165
162
|
}
|
|
166
|
-
async function
|
|
167
|
-
return
|
|
168
|
-
let
|
|
169
|
-
const t =
|
|
170
|
-
return
|
|
171
|
-
additionalUrl: t(
|
|
163
|
+
async function M() {
|
|
164
|
+
return u.testToken ?? (u.testToken = async () => {
|
|
165
|
+
let r = i.value.token, e = !1;
|
|
166
|
+
const t = u.getTokenTestUrl ?? (() => S(k(), "test"));
|
|
167
|
+
return r != null && (await R().post({
|
|
168
|
+
additionalUrl: t(r),
|
|
172
169
|
data: {
|
|
173
|
-
token:
|
|
170
|
+
token: r
|
|
174
171
|
}
|
|
175
|
-
})).data === !0 && (
|
|
176
|
-
}), await
|
|
172
|
+
})).data === !0 && (e = !0), e ? !0 : (y(u.tokenInvalidPath), !1);
|
|
173
|
+
}), await u.testToken();
|
|
177
174
|
}
|
|
178
|
-
async function
|
|
179
|
-
return
|
|
180
|
-
let t =
|
|
181
|
-
if (t == null ||
|
|
175
|
+
async function $(r, e) {
|
|
176
|
+
return u.getToken ?? (u.getToken = async () => {
|
|
177
|
+
let t = r, n = e, l = u.oauthGrantType ?? "authorization_token", a = u.oauthClientID ?? "";
|
|
178
|
+
if (t == null || n == null)
|
|
182
179
|
throw new Error("Code and State required in OAuth token process");
|
|
183
|
-
if (
|
|
180
|
+
if (n != h.value)
|
|
184
181
|
throw new Error("state does not match");
|
|
185
|
-
let
|
|
186
|
-
|
|
182
|
+
let s = "";
|
|
183
|
+
u.getTokenUrl ?? (u.getTokenUrl = () => S(k(), "token")), s = u.getTokenUrl(t, `${window.location.origin}/authentication`, l, a);
|
|
187
184
|
const f = {};
|
|
188
|
-
f.grant_type =
|
|
189
|
-
const
|
|
190
|
-
additionalUrl:
|
|
185
|
+
f.grant_type = l, f.code = t, f.redirect_uri = `${window.location.origin}/authentication`, f.client_id = a;
|
|
186
|
+
const N = await R().post({
|
|
187
|
+
additionalUrl: s,
|
|
191
188
|
data: f
|
|
192
189
|
});
|
|
193
|
-
T(
|
|
194
|
-
}), await
|
|
190
|
+
T(N.access_token);
|
|
191
|
+
}), await u.getToken(r, e);
|
|
195
192
|
}
|
|
196
|
-
function T(
|
|
197
|
-
if (
|
|
193
|
+
function T(r) {
|
|
194
|
+
if (r == null)
|
|
198
195
|
return;
|
|
199
|
-
const
|
|
200
|
-
|
|
196
|
+
const e = B(r);
|
|
197
|
+
z(e, r), u.processTokenPayload != null && u.processTokenPayload(i, e);
|
|
201
198
|
}
|
|
202
|
-
function
|
|
203
|
-
var
|
|
199
|
+
function z(r, e) {
|
|
200
|
+
var n;
|
|
204
201
|
const t = i.value;
|
|
205
|
-
t.expiresOn =
|
|
202
|
+
t.expiresOn = r.ExpiresOn, t.isGlobalAdmin = r.IsGlobalAdmin == "True", t.isLoggedIn = !0, t.permissions = r.Permissions, t.subscriptionCode = r.Subscription, t.refreshExpiresOn = r.RefreshTokenExpiresOn, t.refreshToken = r.RefreshToken, (u == null ? void 0 : u.menu) != null && (u.menu.currentView.value = t.subscriptionCode), t.timeZone ?? (t.timeZone = u.defaultTimeZone ?? b), t.token = e, t.userID = r.UserLoginID, t.userPermissions = r.Permissions != null && r.Permissions.length > 0 ? ((n = r.Permissions) == null ? void 0 : n.split(",")) ?? [] : [];
|
|
206
203
|
}
|
|
207
|
-
function
|
|
208
|
-
var
|
|
209
|
-
i.value ?? (i.value = {}), (
|
|
204
|
+
function P() {
|
|
205
|
+
var r;
|
|
206
|
+
i.value ?? (i.value = {}), (r = i.value).timeZone ?? (r.timeZone = u.defaultTimeZone ?? b);
|
|
210
207
|
}
|
|
211
|
-
function
|
|
208
|
+
function W(r, e) {
|
|
212
209
|
const t = o(i);
|
|
213
|
-
if (t.isLoggedIn &&
|
|
210
|
+
if (t.isLoggedIn && A() && U()) {
|
|
214
211
|
y();
|
|
215
|
-
let
|
|
216
|
-
|
|
212
|
+
let n = w(r);
|
|
213
|
+
e != null && (n.includes("?") || (n = n + "?"), n.includes("&") && (n = n + "&"), n = n + new URLSearchParams(e).toString()), window.location.href = n;
|
|
217
214
|
}
|
|
218
215
|
return t.isLoggedIn;
|
|
219
216
|
}
|
|
220
217
|
function U() {
|
|
221
|
-
if (!
|
|
218
|
+
if (!u.useTokenRefresh || v(i.value.refreshExpiresOn) || v(i.value.refreshToken))
|
|
222
219
|
return !0;
|
|
223
|
-
const
|
|
224
|
-
return m.utc() >
|
|
220
|
+
const r = m.fromFormat(i.value.refreshExpiresOn, c);
|
|
221
|
+
return m.utc() > r;
|
|
225
222
|
}
|
|
226
|
-
function
|
|
227
|
-
const
|
|
228
|
-
if (
|
|
223
|
+
function A() {
|
|
224
|
+
const r = o(i);
|
|
225
|
+
if (r == null || r.expiresOn == null)
|
|
229
226
|
return !0;
|
|
230
|
-
const
|
|
231
|
-
return
|
|
227
|
+
const e = m.fromFormat(r.expiresOn, c), t = m.utc();
|
|
228
|
+
return e <= t;
|
|
232
229
|
}
|
|
233
|
-
return
|
|
230
|
+
return P(), I = {
|
|
234
231
|
authState: h,
|
|
235
232
|
canEdit: F,
|
|
236
233
|
canEditPermit: d,
|
|
237
234
|
canView: _,
|
|
238
235
|
canViewPermit: g,
|
|
239
236
|
credentials: i,
|
|
240
|
-
doShow:
|
|
237
|
+
doShow: x,
|
|
241
238
|
doShowByNav: p,
|
|
242
|
-
getAuthorizeUrl:
|
|
243
|
-
getToken:
|
|
239
|
+
getAuthorizeUrl: w,
|
|
240
|
+
getToken: $,
|
|
244
241
|
isLoggedIn: L(() => i.value.isLoggedIn === !0),
|
|
245
|
-
login:
|
|
242
|
+
login: Z,
|
|
246
243
|
logout: y,
|
|
247
|
-
logoutAsync
|
|
244
|
+
// logoutAsync,
|
|
248
245
|
refreshTokenExpired: U,
|
|
249
|
-
resetAuthState:
|
|
246
|
+
resetAuthState: O,
|
|
250
247
|
setAuth: T,
|
|
251
|
-
testToken:
|
|
252
|
-
timeZone: L(() => i.value.timeZone ??
|
|
253
|
-
tokenExpired:
|
|
254
|
-
tryLogin:
|
|
255
|
-
tryRefreshToken:
|
|
256
|
-
},
|
|
248
|
+
testToken: M,
|
|
249
|
+
timeZone: L(() => i.value.timeZone ?? u.defaultTimeZone ?? b),
|
|
250
|
+
tokenExpired: A,
|
|
251
|
+
tryLogin: W,
|
|
252
|
+
tryRefreshToken: G
|
|
253
|
+
}, I;
|
|
257
254
|
}
|
|
258
255
|
export {
|
|
259
|
-
|
|
260
|
-
|
|
256
|
+
ue as createAuth,
|
|
257
|
+
ne as useAuth
|
|
261
258
|
};
|