@wssto2/vue-core 0.5.3 → 0.6.0
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/CHANGELOG.md +32 -0
- package/README.md +3 -1
- package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-Bv-APkGf.js → ActionRow.vue_vue_type_script_setup_true_lang-D8NCXX4p.js} +1 -1
- package/dist/{Activity-DUjDaPfP.js → Activity-DGodh6BU.js} +4 -4
- package/dist/{Changes-B0tZO6BZ.js → Changes-38u4xY6e.js} +3 -3
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-o_Pj-JcD.js → CollectionPage.vue_vue_type_script_setup_true_lang-DPcCnrjr.js} +3 -3
- package/dist/{DateField.vue_vue_type_script_setup_true_lang-CDg31ZU7.js → DateField.vue_vue_type_script_setup_true_lang-BxUuUypB.js} +1 -1
- package/dist/{DeadLetters-IgVHao84.js → DeadLetters-CeHfhFHP.js} +6 -5
- package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-CSgT4ITL.js → FormGroup.vue_vue_type_script_setup_true_lang-CNb2CK01.js} +1 -1
- package/dist/{FormView.vue_vue_type_script_setup_true_lang-D31Hk3pJ.js → FormView.vue_vue_type_script_setup_true_lang-nyz8EkzM.js} +1 -1
- package/dist/{General-C40HxupS.js → General-BNTjPvat.js} +6 -6
- package/dist/{NewRolePage-Bhy8KJO1.js → NewRolePage-Btg7gzzH.js} +7 -6
- package/dist/{NumberField.vue_vue_type_script_setup_true_lang-BdS7BxuS.js → NumberField.vue_vue_type_script_setup_true_lang-C8um4ARi.js} +1 -1
- package/dist/PersonAccess.vue_vue_type_script_setup_true_lang-ClmawvYm.js +600 -0
- package/dist/{ProfilePage-Bf7dFzGd.js → ProfilePage-CoZyG11N.js} +9 -9
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-C6oloGIh.js → RoleEditor.vue_vue_type_script_setup_true_lang-Bs9bo0Zb.js} +30 -29
- package/dist/{RolePage-BjbvciTg.js → RolePage-CPlwZA6X.js} +37 -35
- package/dist/{RolesPage-DzVOgF4z.js → RolesPage-CdYdIHR4.js} +29 -27
- package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-DXe_iOS8.js → SegmentedField.vue_vue_type_script_setup_true_lang-B_hBL5f4.js} +1 -1
- package/dist/{SelectField.vue_vue_type_script_setup_true_lang-BN4vzvV9.js → SelectField.vue_vue_type_script_setup_true_lang-CBZhGNpm.js} +4 -4
- package/dist/ServiceAccountDialog.vue_vue_type_script_setup_true_lang-DuvSSBbX.js +126 -0
- package/dist/ServiceAccountRecord-BtaUZuWU.js +511 -0
- package/dist/ServiceAccountsList-CcRJvNaf.js +137 -0
- package/dist/{SessionList.vue_vue_type_script_setup_true_lang-PuWIK-Wa.js → SessionList.vue_vue_type_script_setup_true_lang-VvBB2EZz.js} +2 -2
- package/dist/{Sessions-CRUObe5G.js → Sessions-DkGNO1FO.js} +2 -2
- package/dist/{SettingsPage-C0qEC0uI.js → SettingsPage-D4G1HGbG.js} +8 -8
- package/dist/{SignIn-Uy0Jujzz.js → SignIn-DS1YymqD.js} +4 -4
- package/dist/{SignInPage-CpVZfrLZ.js → SignInPage-BrmL0PUw.js} +3 -3
- package/dist/{SignIns-Cp5Gx2dk.js → SignIns-C7l7IPHQ.js} +1 -1
- package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-Dj5Aq8QT.js → SwitchField.vue_vue_type_script_setup_true_lang-DXZK89A3.js} +1 -1
- package/dist/{TextField.vue_vue_type_script_setup_true_lang-BwfNNQEz.js → TextField.vue_vue_type_script_setup_true_lang-CX3LdZLK.js} +2 -2
- package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-aT1P8Xqr.js → TextareaField.vue_vue_type_script_setup_true_lang-BOtn_1GT.js} +1 -1
- package/dist/{TimeField.vue_vue_type_script_setup_true_lang-jPKPE1hc.js → TimeField.vue_vue_type_script_setup_true_lang-CbflIrq6.js} +1 -1
- package/dist/{UserRecord-DbSMnTbj.js → UserRecord-Du8M_kuk.js} +25 -25
- package/dist/{UsersList-9MicE2pG.js → UsersList-D3ydQice.js} +13 -13
- package/dist/access/api.d.ts +7 -8
- package/dist/access/context.d.ts +2 -7
- package/dist/access/feature.d.ts +0 -8
- package/dist/access/index.js +47 -15
- package/dist/client/client.d.ts +2 -2
- package/dist/client/index.d.ts +1 -1
- package/dist/client/route.d.ts +22 -3
- package/dist/collection/http.d.ts +3 -2
- package/dist/collection/index.js +17 -16
- package/dist/form/index.js +586 -611
- package/dist/http-nz92KjdS.js +42 -0
- package/dist/i18n/index.js +32 -32
- package/dist/identity/index.d.ts +7 -0
- package/dist/identity/index.js +19 -15
- package/dist/identity/serviceaccounts/ApiKeysPanel.vue.d.ts +17 -0
- package/dist/identity/serviceaccounts/CreatedApiKeyDialog.vue.d.ts +53 -0
- package/dist/identity/serviceaccounts/NewApiKeyDialog.vue.d.ts +24 -0
- package/dist/identity/serviceaccounts/ServiceAccountDialog.vue.d.ts +22 -0
- package/dist/identity/serviceaccounts/ServiceAccountRecord.vue.d.ts +2 -0
- package/dist/identity/serviceaccounts/ServiceAccountsList.vue.d.ts +2 -0
- package/dist/identity/serviceaccounts/access.d.ts +4 -0
- package/dist/identity/serviceaccounts/api.d.ts +27 -0
- package/dist/identity/serviceaccounts/context.d.ts +14 -0
- package/dist/identity/serviceaccounts/feature.d.ts +23 -0
- package/dist/identity/serviceaccounts/form.d.ts +4 -0
- package/dist/identity/serviceaccounts/messages.d.ts +11 -0
- package/dist/identity/serviceaccounts/routes.d.ts +22 -0
- package/dist/{index-Ok29ucE3.js → index-Cmj9iZmT.js} +191 -168
- package/dist/{index-C-oM_Mnf.js → index-DH0MoFqg.js} +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/copyText.d.ts +5 -0
- package/dist/modules/access/routes.d.ts +13 -13
- package/dist/modules/events/routes.d.ts +4 -4
- package/dist/modules/identity/routes.d.ts +31 -31
- package/dist/modules/notification/routes.d.ts +16 -16
- package/dist/modules/serviceaccount/entities.d.ts +127 -0
- package/dist/modules/serviceaccount/routes.d.ts +58 -0
- package/dist/modules/serviceaccount/schemas.d.ts +49 -0
- package/dist/{neighbors-Bv6vnWlW.js → neighbors-DNZuGlQH.js} +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/{options-Bu0XbEpN.js → options-e_CAfvDQ.js} +3 -3
- package/dist/phone/index.js +1 -1
- package/dist/refusals-COPr15XZ.js +135 -0
- package/dist/routes-CVckt7Pj.js +19 -0
- package/dist/state-BC1Fc6U2.js +154 -0
- package/dist/{status-C78NpXyB.js → status-C8XtnK6m.js} +7 -6
- package/dist/styles.css +1 -1
- package/dist/{suggestions-ClyLexMO.js → suggestions-cPjs5gQz.js} +1 -1
- package/dist/{useCommand-DyuPTosF.js → useCommand-CfG727e8.js} +1 -1
- package/dist/{useGroupSheet-C2NyqWRp.js → useGroupSheet-BVcNDWbP.js} +2 -2
- package/dist/useRecordDialog-D65FF85F.js +30 -0
- package/package.json +2 -2
- package/dist/http-CdQowFlW.js +0 -194
- package/dist/index-BdGnA1Jh.js +0 -765
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
import { route as i } from "./client/index.js";
|
|
2
|
-
import { d as
|
|
3
|
-
import { k as
|
|
4
|
-
import { d as
|
|
5
|
-
import { d as
|
|
6
|
-
import { defineComponent as w, computed as
|
|
2
|
+
import { d as N, p as F } from "./feature-DdUAfyi4.js";
|
|
3
|
+
import { k as ce } from "./keepAlive-z3IRFkQq.js";
|
|
4
|
+
import { d as K } from "./defineRoutes-BGAdiIrt.js";
|
|
5
|
+
import { d as A } from "./context-Ch1r4fdN.js";
|
|
6
|
+
import { defineComponent as w, computed as y, watch as z, openBlock as _, createElementBlock as D, ref as V, useTemplateRef as ue, watchEffect as le, onBeforeUnmount as me, createVNode as g, unref as o, createElementVNode as p, toDisplayString as f, createCommentVNode as I, createBlock as U, useId as pe, Teleport as de, normalizeClass as B, createTextVNode as O, withCtx as T, mergeProps as fe, h as he } from "vue";
|
|
7
7
|
import { i as P } from "./error-Bb_dr_Ay.js";
|
|
8
|
-
import { u as
|
|
9
|
-
import { u as
|
|
8
|
+
import { u as ve } from "./environment-Dva-SG8D.js";
|
|
9
|
+
import { u as C } from "./describeError-BqGAUZgX.js";
|
|
10
10
|
import { t as k } from "./toast-CqSDTWRX.js";
|
|
11
|
-
import { u as x, h as
|
|
11
|
+
import { u as x, h as R, f as j } from "./platform-Dx6STiwY.js";
|
|
12
12
|
import { useI18n as E } from "vue-i18n";
|
|
13
|
-
import { _ as
|
|
14
|
-
import { useRouter as
|
|
15
|
-
import { _ as
|
|
16
|
-
import { _ as
|
|
17
|
-
import { u as
|
|
18
|
-
import { _ as
|
|
19
|
-
import { _ as
|
|
20
|
-
import { u as
|
|
21
|
-
import { u as
|
|
22
|
-
import { c as
|
|
23
|
-
import { u as
|
|
24
|
-
import { u as
|
|
25
|
-
import { b as
|
|
26
|
-
import "./ActionRow.vue_vue_type_script_setup_true_lang-
|
|
27
|
-
import { _ as
|
|
13
|
+
import { _ as J } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
14
|
+
import { useRouter as Q, useRoute as ye } from "vue-router";
|
|
15
|
+
import { _ as X } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-CPeNxh5K.js";
|
|
16
|
+
import { _ as G } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
17
|
+
import { u as ge } from "./leaveGuard-Cc8yeLxM.js";
|
|
18
|
+
import { _ as _e } from "./FormView.vue_vue_type_script_setup_true_lang-nyz8EkzM.js";
|
|
19
|
+
import { _ as be } from "./TextField.vue_vue_type_script_setup_true_lang-CX3LdZLK.js";
|
|
20
|
+
import { u as we } from "./mediaQuery-CygcXmFW.js";
|
|
21
|
+
import { u as xe } from "./useDialog-CXR3hN0G.js";
|
|
22
|
+
import { c as Ee } from "./closeOverlays-CjVsIrpL.js";
|
|
23
|
+
import { u as Se } from "./FormErrors.vue_vue_type_script_setup_true_lang-D7edzNTL.js";
|
|
24
|
+
import { u as Te } from "./format-D8X4zsx6.js";
|
|
25
|
+
import { b as ke } from "./routeResource-CcYA75T2.js";
|
|
26
|
+
import "./ActionRow.vue_vue_type_script_setup_true_lang-D8NCXX4p.js";
|
|
27
|
+
import { _ as Ae } from "./AccessGate.vue_vue_type_script_setup_true_lang-DZ9GcLC1.js";
|
|
28
|
+
import "./routes-CVckt7Pj.js";
|
|
28
29
|
const b = {
|
|
29
30
|
login: i("POST", "/v1/auth/login", { public: !0 }),
|
|
30
31
|
refresh: i("POST", "/v1/auth/refresh", { public: !0 }),
|
|
@@ -57,37 +58,37 @@ const b = {
|
|
|
57
58
|
profileSignins: i("GET", "/v1/iam/profile/signins"),
|
|
58
59
|
profileSessions: i("GET", "/v1/iam/profile/sessions"),
|
|
59
60
|
profileRevokeSession: i("DELETE", "/v1/iam/profile/sessions/:session_id")
|
|
60
|
-
}, [
|
|
61
|
-
function
|
|
61
|
+
}, [Pe, Z] = A("vue-core.identity"), $ = (e) => P(e) && e.kind === "unauthorized";
|
|
62
|
+
function Ce(e) {
|
|
62
63
|
if (!P(e) || e.code !== "identity.signin.locked") return null;
|
|
63
64
|
const s = e.params?.locked_until, t = typeof s == "string" ? new Date(s) : null;
|
|
64
65
|
return t && !Number.isNaN(t.getTime()) ? t : null;
|
|
65
66
|
}
|
|
66
|
-
async function
|
|
67
|
-
await e.request(b.login, t, { handleUnauthorized: !1 }), await
|
|
67
|
+
async function Oe({ http: e, session: s }, t) {
|
|
68
|
+
await e.request(b.login, t, { handleUnauthorized: !1 }), await M({ session: s });
|
|
68
69
|
}
|
|
69
|
-
async function
|
|
70
|
+
async function M({ session: e }) {
|
|
70
71
|
const s = await e.refresh();
|
|
71
72
|
if (s.status === "failed") throw s.error;
|
|
72
73
|
if (s.status !== "authenticated") throw new Error("The server accepted the request but reports nobody signed in.");
|
|
73
74
|
}
|
|
74
|
-
async function
|
|
75
|
-
await e.http.request(b.loginAs, { user_id: s }), await
|
|
75
|
+
async function Re(e, s) {
|
|
76
|
+
await e.http.request(b.loginAs, { user_id: s }), await M(e);
|
|
76
77
|
}
|
|
77
|
-
async function
|
|
78
|
-
await e.http.request(b.loginAsReturn), await
|
|
78
|
+
async function Ke(e) {
|
|
79
|
+
await e.http.request(b.loginAsReturn), await M(e);
|
|
79
80
|
}
|
|
80
|
-
const
|
|
81
|
+
const Ie = { hidden: "" }, Ue = /* @__PURE__ */ w({
|
|
81
82
|
__name: "LocaleSync",
|
|
82
83
|
setup(e) {
|
|
83
|
-
const { http: s, session: t } = x(), n =
|
|
84
|
+
const { http: s, session: t } = x(), n = ve(), m = C(), d = y(() => {
|
|
84
85
|
const r = t.state.value, a = r.status === "authenticated" ? r.user.locale : void 0;
|
|
85
86
|
return typeof a == "string" ? a : null;
|
|
86
87
|
});
|
|
87
88
|
let u = null;
|
|
88
|
-
return
|
|
89
|
+
return z(d, async (r) => {
|
|
89
90
|
u = r, r !== null && r !== n.locale.value && n.locales.includes(r) && await n.setLocale(r);
|
|
90
|
-
}, { immediate: !0 }),
|
|
91
|
+
}, { immediate: !0 }), z(n.locale, async (r) => {
|
|
91
92
|
if (!(t.state.value.status !== "authenticated" || r === u))
|
|
92
93
|
try {
|
|
93
94
|
await s.request(b.changeLocale, { locale: r }), u = r;
|
|
@@ -95,15 +96,15 @@ const Re = { hidden: "" }, Ie = /* @__PURE__ */ w({
|
|
|
95
96
|
if ($(a)) return;
|
|
96
97
|
k.error(m(a)), P(a) && a.code === "identity.locale.unsupported" && u !== null && await n.setLocale(u);
|
|
97
98
|
}
|
|
98
|
-
}), (r, a) => (_(), D("span",
|
|
99
|
+
}), (r, a) => (_(), D("span", Ie));
|
|
99
100
|
}
|
|
100
101
|
});
|
|
101
|
-
function
|
|
102
|
-
const e = x(), s =
|
|
102
|
+
function ee() {
|
|
103
|
+
const e = x(), s = Q(), { home: t } = Z(), n = C(), m = V(!1), d = y(() => R(e.session.state.value)?.impersonator != null);
|
|
103
104
|
async function u() {
|
|
104
105
|
m.value = !0;
|
|
105
106
|
try {
|
|
106
|
-
await
|
|
107
|
+
await Ke(e), await s.push(t);
|
|
107
108
|
} catch (r) {
|
|
108
109
|
$(r) || k.error(n(r)), e.session.refresh();
|
|
109
110
|
} finally {
|
|
@@ -112,22 +113,22 @@ function X() {
|
|
|
112
113
|
}
|
|
113
114
|
return { impersonating: d, returning: m, leave: u };
|
|
114
115
|
}
|
|
115
|
-
const
|
|
116
|
+
const $e = { class: "min-w-0 flex-1" }, Le = { class: "hidden md:inline" }, qe = { class: "md:hidden" }, ze = ["disabled"], Ge = /* @__PURE__ */ w({
|
|
116
117
|
__name: "ImpersonationBanner",
|
|
117
118
|
setup(e) {
|
|
118
|
-
const { t: s } = E(), t = x(), { returning: n, leave: m } =
|
|
119
|
-
const l =
|
|
119
|
+
const { t: s } = E(), t = x(), { returning: n, leave: m } = ee(), d = y(() => R(t.session.state.value)?.impersonator ?? null), u = y(() => {
|
|
120
|
+
const l = R(t.session.state.value)?.user;
|
|
120
121
|
return typeof l?.name == "string" ? l.name : typeof l?.login == "string" ? l.login : String(l?.id ?? "");
|
|
121
|
-
}), r =
|
|
122
|
+
}), r = ue("strip");
|
|
122
123
|
let a = null;
|
|
123
|
-
return
|
|
124
|
+
return le(() => {
|
|
124
125
|
a?.disconnect(), a = null;
|
|
125
126
|
const l = r.value;
|
|
126
127
|
if (!l) return void document.documentElement.style.removeProperty("--shell-banner-h");
|
|
127
128
|
if (typeof ResizeObserver > "u") return;
|
|
128
129
|
const c = () => document.documentElement.style.setProperty("--shell-banner-h", `${l.offsetHeight}px`);
|
|
129
130
|
a = new ResizeObserver(c), a.observe(l), c();
|
|
130
|
-
}, { flush: "post" }),
|
|
131
|
+
}, { flush: "post" }), me(() => {
|
|
131
132
|
a?.disconnect(), document.documentElement.style.removeProperty("--shell-banner-h");
|
|
132
133
|
}), (l, c) => d.value ? (_(), D("div", {
|
|
133
134
|
key: 0,
|
|
@@ -137,14 +138,14 @@ const Ke = { class: "min-w-0 flex-1" }, $e = { class: "hidden md:inline" }, Ue =
|
|
|
137
138
|
"data-impersonation-banner": "",
|
|
138
139
|
class: "sticky top-0 z-40 flex flex-wrap items-center gap-x-3 gap-y-1.5 bg-status-warning-surface px-4 py-2 text-subheadline text-status-warning-content shadow-[inset_0_-1px_0_rgb(154_74_7/0.25)]"
|
|
139
140
|
}, [
|
|
140
|
-
|
|
141
|
+
g(o(J), {
|
|
141
142
|
name: "informationLine",
|
|
142
143
|
size: 18,
|
|
143
144
|
class: "shrink-0 compact:hidden"
|
|
144
145
|
}),
|
|
145
|
-
p("span",
|
|
146
|
-
p("span",
|
|
147
|
-
p("span",
|
|
146
|
+
p("span", $e, [
|
|
147
|
+
p("span", Le, f(o(s)("core.identity.impersonation.banner", { name: u.value })), 1),
|
|
148
|
+
p("span", qe, f(o(s)("core.identity.impersonation.banner_short", { name: u.value })), 1)
|
|
148
149
|
]),
|
|
149
150
|
p("button", {
|
|
150
151
|
type: "button",
|
|
@@ -152,14 +153,14 @@ const Ke = { class: "min-w-0 flex-1" }, $e = { class: "hidden md:inline" }, Ue =
|
|
|
152
153
|
class: "hit-target cursor-pointer rounded-control bg-status-warning-solid px-3 py-1 text-footnote font-semibold whitespace-nowrap text-white transition duration-motion-fast hover:brightness-110 disabled:opacity-45",
|
|
153
154
|
onClick: c[0] || (c[0] = //@ts-ignore
|
|
154
155
|
(...h) => o(m) && o(m)(...h))
|
|
155
|
-
}, f(o(s)("core.identity.impersonation.return")), 9,
|
|
156
|
+
}, f(o(s)("core.identity.impersonation.return")), 9, ze)
|
|
156
157
|
], 512)) : I("", !0);
|
|
157
158
|
}
|
|
158
|
-
}),
|
|
159
|
+
}), Ne = /* @__PURE__ */ w({
|
|
159
160
|
__name: "ReturnMenuItem",
|
|
160
161
|
setup(e) {
|
|
161
|
-
const { t: s } = E(), { impersonating: t, leave: n } =
|
|
162
|
-
return (m, d) => o(t) ? (_(),
|
|
162
|
+
const { t: s } = E(), { impersonating: t, leave: n } = ee();
|
|
163
|
+
return (m, d) => o(t) ? (_(), U(X, {
|
|
163
164
|
key: 0,
|
|
164
165
|
label: o(s)("core.identity.impersonation.return"),
|
|
165
166
|
icon: "logoutBoxRLine",
|
|
@@ -168,8 +169,8 @@ const Ke = { class: "min-w-0 flex-1" }, $e = { class: "hidden md:inline" }, Ue =
|
|
|
168
169
|
}, null, 8, ["label", "onClick"])) : I("", !0);
|
|
169
170
|
}
|
|
170
171
|
});
|
|
171
|
-
function
|
|
172
|
-
const { t: s } = E(), t = x(), n =
|
|
172
|
+
function Fe(e = {}) {
|
|
173
|
+
const { t: s } = E(), t = x(), n = Te(), m = C(), u = Se({
|
|
173
174
|
defaults: () => ({ login: e.login ?? "", password: "" }),
|
|
174
175
|
validator: {
|
|
175
176
|
safeParse(a) {
|
|
@@ -178,36 +179,36 @@ function Ge(e = {}) {
|
|
|
178
179
|
}
|
|
179
180
|
},
|
|
180
181
|
failureMessage(a, l) {
|
|
181
|
-
const c =
|
|
182
|
+
const c = Ce(l);
|
|
182
183
|
return c ? s("core.errors.identity.signin.locked", { locked_until: n.time(c) }) : P(l) ? m(l) : void 0;
|
|
183
184
|
}
|
|
184
|
-
}), r =
|
|
185
|
-
return { form: u, passwordError: r, submit: async () => (await u.submit((a) =>
|
|
185
|
+
}), r = y(() => u.errors.first("password") ?? (u.failure.value?.error ? u.failure.value.message : void 0));
|
|
186
|
+
return { form: u, passwordError: r, submit: async () => (await u.submit((a) => Oe(t, a))).status === "saved" };
|
|
186
187
|
}
|
|
187
|
-
const De = ["aria-labelledby"],
|
|
188
|
+
const De = ["aria-labelledby"], Ve = ["id"], Me = { class: "mt-1 text-subheadline text-content-muted" }, Be = { class: "flex items-center gap-2 rounded-control bg-status-success-surface px-2.5 py-2 text-footnote text-status-success-content" }, je = { class: "flex flex-col gap-1.5" }, We = { class: "text-footnote text-content-muted" }, Ye = {
|
|
188
189
|
class: "rounded-control bg-fill px-2.5 py-2 text-body text-content-muted",
|
|
189
190
|
"data-expiry-login": ""
|
|
190
|
-
},
|
|
191
|
+
}, He = /* @__PURE__ */ w({
|
|
191
192
|
__name: "SessionExpiry",
|
|
192
193
|
setup(e) {
|
|
193
|
-
const { t: s } = E(), { session: t } = x(), n =
|
|
194
|
-
const
|
|
194
|
+
const { t: s } = E(), { session: t } = x(), n = ye(), m = ge(), d = C(), u = we(), r = pe(), a = y(() => {
|
|
195
|
+
const v = t.state.value, S = v.status === "anonymous" && v.reason === "expired" ? v.previous?.user : void 0;
|
|
195
196
|
return typeof S?.login == "string" ? S.login : null;
|
|
196
|
-
}), l =
|
|
197
|
-
} }), { isOpen:
|
|
198
|
-
|
|
199
|
-
|
|
197
|
+
}), l = y(() => a.value !== null && n.meta.public !== !0), c = V(null), h = xe(c, { onEscape: () => {
|
|
198
|
+
} }), { isOpen: oe } = h, { form: L, passwordError: ie, submit: re } = Fe({ login: a.value ?? "" });
|
|
199
|
+
z(l, (v) => {
|
|
200
|
+
v ? (L.hydrate({ login: a.value ?? "", password: "" }), Ee(), k.dismiss(), h.present()) : h.dismissWithoutAsking();
|
|
200
201
|
}, { immediate: !0, flush: "post" });
|
|
201
|
-
async function
|
|
202
|
+
async function ae() {
|
|
202
203
|
if (!(m.hasUnsavedChanges() && !await m.confirm()))
|
|
203
204
|
try {
|
|
204
205
|
await t.signOut();
|
|
205
|
-
} catch (
|
|
206
|
-
$(
|
|
206
|
+
} catch (v) {
|
|
207
|
+
$(v) || k.error(d(v));
|
|
207
208
|
}
|
|
208
209
|
}
|
|
209
|
-
return (
|
|
210
|
-
o(
|
|
210
|
+
return (v, S) => (_(), U(de, { to: "body" }, [
|
|
211
|
+
o(oe) ? (_(), D("div", {
|
|
211
212
|
key: 0,
|
|
212
213
|
class: "relative z-10000",
|
|
213
214
|
role: "alertdialog",
|
|
@@ -232,51 +233,51 @@ const De = ["aria-labelledby"], Fe = ["id"], Ne = { class: "mt-1 text-subheadlin
|
|
|
232
233
|
p("h2", {
|
|
233
234
|
id: o(r),
|
|
234
235
|
class: "text-headline font-semibold text-content-strong"
|
|
235
|
-
}, f(o(s)("core.identity.expired.title")), 9,
|
|
236
|
-
p("p",
|
|
236
|
+
}, f(o(s)("core.identity.expired.title")), 9, Ve),
|
|
237
|
+
p("p", Me, f(o(s)("core.identity.expired.body")), 1)
|
|
237
238
|
]),
|
|
238
239
|
p("p", Be, [
|
|
239
|
-
|
|
240
|
+
g(o(J), {
|
|
240
241
|
name: "checkboxCircleFill",
|
|
241
242
|
size: 16,
|
|
242
243
|
class: "shrink-0"
|
|
243
244
|
}),
|
|
244
|
-
|
|
245
|
+
O(" " + f(o(s)("core.identity.expired.kept")), 1)
|
|
245
246
|
]),
|
|
246
|
-
|
|
247
|
+
g(o(_e), { onSubmit: o(re) }, {
|
|
247
248
|
default: T(() => [
|
|
248
|
-
p("div",
|
|
249
|
-
p("span",
|
|
250
|
-
p("span",
|
|
249
|
+
p("div", je, [
|
|
250
|
+
p("span", We, f(o(s)("core.identity.username")), 1),
|
|
251
|
+
p("span", Ye, f(a.value), 1)
|
|
251
252
|
]),
|
|
252
|
-
|
|
253
|
+
g(o(be), fe(o(L).bind("password"), {
|
|
253
254
|
label: o(s)("core.identity.signin.password"),
|
|
254
255
|
type: "password",
|
|
255
256
|
autocomplete: "current-password",
|
|
256
257
|
required: "",
|
|
257
|
-
error: o(
|
|
258
|
+
error: o(ie)
|
|
258
259
|
}), null, 16, ["label", "error"]),
|
|
259
|
-
|
|
260
|
+
g(o(G), {
|
|
260
261
|
type: "submit",
|
|
261
262
|
prominence: "primary",
|
|
262
263
|
class: "w-full",
|
|
263
|
-
processing: o(
|
|
264
|
+
processing: o(L).submitting.value
|
|
264
265
|
}, {
|
|
265
266
|
default: T(() => [
|
|
266
|
-
|
|
267
|
+
O(f(o(s)("core.identity.signin.submit")), 1)
|
|
267
268
|
]),
|
|
268
269
|
_: 1
|
|
269
270
|
}, 8, ["processing"])
|
|
270
271
|
]),
|
|
271
272
|
_: 1
|
|
272
273
|
}, 8, ["onSubmit"]),
|
|
273
|
-
|
|
274
|
+
g(o(G), {
|
|
274
275
|
prominence: "plain",
|
|
275
276
|
class: "self-center",
|
|
276
|
-
onClick:
|
|
277
|
+
onClick: ae
|
|
277
278
|
}, {
|
|
278
279
|
default: T(() => [
|
|
279
|
-
|
|
280
|
+
O(f(o(s)("core.identity.expired.sign_out")), 1)
|
|
280
281
|
]),
|
|
281
282
|
_: 1
|
|
282
283
|
})
|
|
@@ -285,48 +286,48 @@ const De = ["aria-labelledby"], Fe = ["id"], Ne = { class: "mt-1 text-subheadlin
|
|
|
285
286
|
], 8, De)) : I("", !0)
|
|
286
287
|
]));
|
|
287
288
|
}
|
|
288
|
-
}),
|
|
289
|
-
login: { name: "login", path: "/login", component: () => import("./SignInPage-
|
|
289
|
+
}), Je = K({
|
|
290
|
+
login: { name: "login", path: "/login", component: () => import("./SignInPage-BrmL0PUw.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
|
|
290
291
|
});
|
|
291
|
-
function
|
|
292
|
-
return
|
|
292
|
+
function $s(e = {}) {
|
|
293
|
+
return N({
|
|
293
294
|
id: "identity",
|
|
294
|
-
routes:
|
|
295
|
-
context:
|
|
295
|
+
routes: Je.records,
|
|
296
|
+
context: F(Pe, { home: e.home ?? "/" }),
|
|
296
297
|
holdsExpiredSession: !0,
|
|
297
298
|
contributions: [
|
|
298
299
|
// Not optional: a shell without a `host` could not ask for the password, and the person would be stuck on a dead page.
|
|
299
|
-
{ id: "identity.expiry", slot: "host", component:
|
|
300
|
+
{ id: "identity.expiry", slot: "host", component: He, scope: "always" },
|
|
300
301
|
// Not optional either: acting as somebody else must always be visible.
|
|
301
|
-
{ id: "identity.impersonation", slot: "banner", component:
|
|
302
|
+
{ id: "identity.impersonation", slot: "banner", component: Ge, scope: "authenticated" },
|
|
302
303
|
// The same way out in the account menu (a shell without that slot shows only the banner's button).
|
|
303
|
-
{ id: "identity.return", slot: "accountMenu", component:
|
|
304
|
-
{ id: "identity.locale", slot: "host", component:
|
|
304
|
+
{ id: "identity.return", slot: "accountMenu", component: Ne, scope: "authenticated", optional: !0, order: -20 },
|
|
305
|
+
{ id: "identity.locale", slot: "host", component: Ue, scope: "authenticated", optional: !0 }
|
|
305
306
|
],
|
|
306
|
-
effects: [
|
|
307
|
+
effects: [ce()]
|
|
307
308
|
});
|
|
308
309
|
}
|
|
309
|
-
const
|
|
310
|
-
if (!
|
|
310
|
+
const Qe = (e) => typeof e == "object" && e !== null && !Array.isArray(e), Xe = (e) => {
|
|
311
|
+
if (!Qe(e)) throw new TypeError("expected an object");
|
|
311
312
|
if (typeof e.id != "number") throw new TypeError("id: expected a number");
|
|
312
313
|
for (const s of ["login", "name", "email", "locale"])
|
|
313
314
|
if (typeof e[s] != "string") throw new TypeError(`${s}: expected a string`);
|
|
314
315
|
return { id: e.id, login: e.login, name: e.name, email: e.email, locale: e.locale };
|
|
315
|
-
},
|
|
316
|
-
function
|
|
316
|
+
}, q = (e) => P(e) && e.kind === "unauthorized", se = (e, s) => e.request(b.refresh, { refresh_token: "" }, { signal: s, handleUnauthorized: !1 });
|
|
317
|
+
function Ze(e, s) {
|
|
317
318
|
return {
|
|
318
319
|
async load(t) {
|
|
319
320
|
try {
|
|
320
321
|
const { data: n } = await e.request(b.me, void 0, { signal: t, handleUnauthorized: !1 });
|
|
321
|
-
return
|
|
322
|
+
return j(n, s);
|
|
322
323
|
} catch (n) {
|
|
323
|
-
if (!
|
|
324
|
+
if (!q(n)) throw n;
|
|
324
325
|
}
|
|
325
326
|
try {
|
|
326
|
-
const { data: n } = await
|
|
327
|
-
return
|
|
327
|
+
const { data: n } = await se(e, t);
|
|
328
|
+
return j(n, s);
|
|
328
329
|
} catch (n) {
|
|
329
|
-
if (
|
|
330
|
+
if (q(n)) return null;
|
|
330
331
|
throw n;
|
|
331
332
|
}
|
|
332
333
|
},
|
|
@@ -334,82 +335,82 @@ function Qe(e, s) {
|
|
|
334
335
|
try {
|
|
335
336
|
await e.request(b.logout, void 0, { handleUnauthorized: !1 });
|
|
336
337
|
} catch (t) {
|
|
337
|
-
if (!
|
|
338
|
+
if (!q(t)) throw t;
|
|
338
339
|
}
|
|
339
340
|
}
|
|
340
341
|
};
|
|
341
342
|
}
|
|
342
|
-
function
|
|
343
|
-
const s = e?.parseUser ??
|
|
343
|
+
function Ls(e) {
|
|
344
|
+
const s = e?.parseUser ?? Xe;
|
|
344
345
|
return {
|
|
345
|
-
session: (n) =>
|
|
346
|
+
session: (n) => Ze(n, s),
|
|
346
347
|
...e?.renewable && { renewable: e.renewable },
|
|
347
348
|
async renewSession(n, m) {
|
|
348
349
|
try {
|
|
349
|
-
return await
|
|
350
|
+
return await se(m), (await n.refresh()).status === "authenticated";
|
|
350
351
|
} catch {
|
|
351
352
|
return !1;
|
|
352
353
|
}
|
|
353
354
|
}
|
|
354
355
|
};
|
|
355
356
|
}
|
|
356
|
-
const
|
|
357
|
-
index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-
|
|
358
|
-
}),
|
|
357
|
+
const te = K({
|
|
358
|
+
index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-CoZyG11N.js"), meta: { titleKey: "core.profile.title" } }
|
|
359
|
+
}), es = /* @__PURE__ */ w({
|
|
359
360
|
__name: "ProfileMenuItem",
|
|
360
361
|
setup(e) {
|
|
361
362
|
const { t: s } = E();
|
|
362
|
-
return (t, n) => (_(),
|
|
363
|
+
return (t, n) => (_(), U(X, {
|
|
363
364
|
label: o(s)("core.profile.menu"),
|
|
364
365
|
icon: "user3Line",
|
|
365
|
-
to: o(
|
|
366
|
+
to: o(te).index,
|
|
366
367
|
"data-profile-menu-item": ""
|
|
367
368
|
}, null, 8, ["label", "to"]));
|
|
368
369
|
}
|
|
369
|
-
}), [
|
|
370
|
-
function
|
|
370
|
+
}), [ss, qs] = A("vue-core.users"), ts = Symbol("vue-core.users.person"), [zs, Gs] = A("vue-core.users.personActions"), [Ns, Fs] = A("vue-core.users.personSessions");
|
|
371
|
+
function ns(e) {
|
|
371
372
|
const s = w({
|
|
372
373
|
name: `PersonSection(${e.path})`,
|
|
373
374
|
setup() {
|
|
374
|
-
const t =
|
|
375
|
-
return () => t.data.value ?
|
|
375
|
+
const t = ke(ts);
|
|
376
|
+
return () => t.data.value ? he(e.component, e.props?.(t.data.value) ?? {}) : null;
|
|
376
377
|
}
|
|
377
378
|
});
|
|
378
379
|
return { name: `users.record.${e.path}`, path: e.path, component: s, meta: { ...e.meta } };
|
|
379
380
|
}
|
|
380
|
-
const
|
|
381
|
-
index: { name: "users.index", path: "/users", component: () => import("./UsersList-
|
|
381
|
+
const W = "iam.user:view", Ds = "iam.user:manage", os = "iam.user.activity:view", ne = K({
|
|
382
|
+
index: { name: "users.index", path: "/users", component: () => import("./UsersList-D3ydQice.js"), meta: { access: W, titleKey: "core.users.title" } },
|
|
382
383
|
record: {
|
|
383
384
|
name: "users.record",
|
|
384
385
|
path: "/users/:id",
|
|
385
|
-
component: () => import("./UserRecord-
|
|
386
|
-
meta: { access:
|
|
386
|
+
component: () => import("./UserRecord-Du8M_kuk.js"),
|
|
387
|
+
meta: { access: W, titleKey: "core.users.title", remountOnParam: "id" },
|
|
387
388
|
children: [
|
|
388
|
-
{ name: "users.record.general", path: "general", component: () => import("./General-
|
|
389
|
-
{ name: "users.record.signin", path: "signin", component: () => import("./SignIn-
|
|
390
|
-
{ name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-
|
|
391
|
-
{ name: "users.record.signins", path: "signins", component: () => import("./SignIns-
|
|
392
|
-
{ name: "users.record.changes", path: "changes", component: () => import("./Changes-
|
|
393
|
-
{ name: "users.record.activity", path: "activity", component: () => import("./Activity-
|
|
389
|
+
{ name: "users.record.general", path: "general", component: () => import("./General-BNTjPvat.js"), meta: { section: { labelKey: "core.users.sections.general", icon: "user3Line", groupKey: "core.users.section_groups.person" } } },
|
|
390
|
+
{ name: "users.record.signin", path: "signin", component: () => import("./SignIn-DS1YymqD.js"), meta: { section: { labelKey: "core.users.sections.signin", icon: "key2Line", groupKey: "core.users.section_groups.access" } } },
|
|
391
|
+
{ name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-DkGNO1FO.js"), meta: { section: { labelKey: "core.users.sections.sessions", icon: "deviceLine", groupKey: "core.users.section_groups.access" } } },
|
|
392
|
+
{ name: "users.record.signins", path: "signins", component: () => import("./SignIns-C7l7IPHQ.js"), meta: { section: { labelKey: "core.users.sections.signins", icon: "timeFill", groupKey: "core.users.section_groups.activity" } } },
|
|
393
|
+
{ name: "users.record.changes", path: "changes", component: () => import("./Changes-38u4xY6e.js"), meta: { section: { labelKey: "core.users.sections.changes", icon: "edit", groupKey: "core.users.section_groups.activity" } } },
|
|
394
|
+
{ name: "users.record.activity", path: "activity", component: () => import("./Activity-DGodh6BU.js"), meta: { access: os, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
|
|
394
395
|
]
|
|
395
396
|
}
|
|
396
397
|
});
|
|
397
|
-
function
|
|
398
|
-
return
|
|
398
|
+
function is(e) {
|
|
399
|
+
return ne.records.map((s) => s.name === "users.record" ? { ...s, children: [...s.children ?? [], ...e.map(ns)] } : s);
|
|
399
400
|
}
|
|
400
|
-
function
|
|
401
|
+
function Vs(e = {}) {
|
|
401
402
|
const s = e.people ?? !0, t = e.profile ?? !0, n = e.signInAs ?? "iam.user:impersonate";
|
|
402
|
-
return
|
|
403
|
+
return N({
|
|
403
404
|
id: "users",
|
|
404
|
-
routes: [...s ?
|
|
405
|
-
context:
|
|
406
|
-
navigation: s && e.destination ? [{ destination: e.destination, to:
|
|
405
|
+
routes: [...s ? is(e.sections ?? []) : [], ...t ? te.records : []],
|
|
406
|
+
context: F(ss, { signInAs: n, activityAreas: e.activityAreas ?? {}, profileSections: e.profileSections ?? [] }),
|
|
407
|
+
navigation: s && e.destination ? [{ destination: e.destination, to: ne.index, within: ["users.record"] }] : [],
|
|
407
408
|
// The entry of the account menu; a shell without that menu leaves it out.
|
|
408
|
-
contributions: t ? [{ id: "users.profile", slot: "accountMenu", component:
|
|
409
|
+
contributions: t ? [{ id: "users.profile", slot: "accountMenu", component: es, scope: "authenticated", optional: !0, order: -10 }] : [],
|
|
409
410
|
requires: s && n !== !1 ? ["identity"] : []
|
|
410
411
|
});
|
|
411
412
|
}
|
|
412
|
-
const
|
|
413
|
+
const Ms = /* @__PURE__ */ w({
|
|
413
414
|
__name: "SignInAsButton",
|
|
414
415
|
props: {
|
|
415
416
|
userId: {},
|
|
@@ -417,32 +418,32 @@ const Ds = /* @__PURE__ */ w({
|
|
|
417
418
|
permission: {}
|
|
418
419
|
},
|
|
419
420
|
setup(e) {
|
|
420
|
-
const s = e, { t } = E(), n = x(), m =
|
|
421
|
-
const c =
|
|
421
|
+
const s = e, { t } = E(), n = x(), m = Q(), { home: d } = Z(), u = C(), r = V(!1), a = y(() => {
|
|
422
|
+
const c = R(n.session.state.value);
|
|
422
423
|
return c !== null && c.impersonator === void 0 && c.user.id !== s.userId;
|
|
423
424
|
});
|
|
424
425
|
async function l() {
|
|
425
426
|
r.value = !0;
|
|
426
427
|
try {
|
|
427
|
-
await
|
|
428
|
+
await Re(n, s.userId), await m.push(d);
|
|
428
429
|
} catch (c) {
|
|
429
430
|
$(c) || k.error(u(c, { fallback: t("core.identity.impersonation.sign_in_as_failed", { name: s.name }) }));
|
|
430
431
|
} finally {
|
|
431
432
|
r.value = !1;
|
|
432
433
|
}
|
|
433
434
|
}
|
|
434
|
-
return (c, h) => a.value ? (_(),
|
|
435
|
+
return (c, h) => a.value ? (_(), U(o(Ae), {
|
|
435
436
|
key: 0,
|
|
436
437
|
permission: s.permission
|
|
437
438
|
}, {
|
|
438
439
|
default: T(() => [
|
|
439
|
-
|
|
440
|
+
g(o(G), {
|
|
440
441
|
processing: r.value,
|
|
441
442
|
"data-sign-in-as": "",
|
|
442
443
|
onClick: l
|
|
443
444
|
}, {
|
|
444
445
|
default: T(() => [
|
|
445
|
-
|
|
446
|
+
O(f(o(t)("core.identity.impersonation.sign_in_as", { name: s.name })), 1)
|
|
446
447
|
]),
|
|
447
448
|
_: 1
|
|
448
449
|
}, 8, ["processing"])
|
|
@@ -450,29 +451,51 @@ const Ds = /* @__PURE__ */ w({
|
|
|
450
451
|
_: 1
|
|
451
452
|
}, 8, ["permission"])) : I("", !0);
|
|
452
453
|
}
|
|
454
|
+
}), [rs, Bs] = A("vue-core.serviceaccounts"), Y = "iam.serviceaccount:view", js = "iam.serviceaccount:manage", Ws = "iam.serviceaccount:revoke", H = K({
|
|
455
|
+
index: { name: "serviceaccounts.index", path: "/iam/service-accounts", component: () => import("./ServiceAccountsList-CcRJvNaf.js"), meta: { access: Y, titleKey: "core.serviceaccounts.title_plural" } },
|
|
456
|
+
record: {
|
|
457
|
+
name: "serviceaccounts.record",
|
|
458
|
+
path: "/iam/service-accounts/:id",
|
|
459
|
+
component: () => import("./ServiceAccountRecord-BtaUZuWU.js"),
|
|
460
|
+
meta: { access: Y, titleKey: "core.serviceaccounts.title_plural", remountOnParam: "id" }
|
|
461
|
+
}
|
|
453
462
|
});
|
|
463
|
+
function Ys(e = {}) {
|
|
464
|
+
return N({
|
|
465
|
+
id: "serviceaccounts",
|
|
466
|
+
routes: H.records,
|
|
467
|
+
context: F(rs, { tenants: e.tenants ?? null }),
|
|
468
|
+
navigation: e.destination ? [{ destination: e.destination, to: H.index, within: ["serviceaccounts.record"] }] : [],
|
|
469
|
+
requires: ["access"]
|
|
470
|
+
});
|
|
471
|
+
}
|
|
454
472
|
export {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
473
|
+
js as M,
|
|
474
|
+
ts as P,
|
|
475
|
+
Ws as R,
|
|
476
|
+
Ms as _,
|
|
477
|
+
Fe as a,
|
|
478
|
+
Gs as b,
|
|
479
|
+
qs as c,
|
|
461
480
|
$ as d,
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
481
|
+
Fs as e,
|
|
482
|
+
Bs as f,
|
|
483
|
+
ne as g,
|
|
484
|
+
Ds as h,
|
|
466
485
|
b as i,
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
486
|
+
zs as j,
|
|
487
|
+
$s as k,
|
|
488
|
+
Ls as l,
|
|
489
|
+
Ze as m,
|
|
490
|
+
Ce as n,
|
|
491
|
+
Xe as o,
|
|
492
|
+
Ns as p,
|
|
493
|
+
te as q,
|
|
494
|
+
Ke as r,
|
|
495
|
+
H as s,
|
|
496
|
+
Ys as t,
|
|
497
|
+
Z as u,
|
|
498
|
+
Oe as v,
|
|
499
|
+
Re as w,
|
|
500
|
+
Vs as x
|
|
478
501
|
};
|
|
@@ -135,9 +135,9 @@ function Me(n = ee().http, t = W()) {
|
|
|
135
135
|
return { state: $(e), hash: $(i), busy: $(a), inspect: c, enable: u, disable: g };
|
|
136
136
|
}
|
|
137
137
|
const Ne = "events.deadletter:view", $t = "events.deadletter:retry", Y = te({
|
|
138
|
-
index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-
|
|
138
|
+
index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-CeHfhFHP.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
|
|
139
139
|
}), j = te({
|
|
140
|
-
index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-
|
|
140
|
+
index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-D4G1HGbG.js"), meta: { titleKey: "core.notifications.settings.title" } }
|
|
141
141
|
}), Oe = /* @__PURE__ */ q({
|
|
142
142
|
__name: "SettingsMenuItem",
|
|
143
143
|
setup(n) {
|