@jskit-ai/auth-web 0.1.53 → 0.1.55
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/package.descriptor.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default Object.freeze({
|
|
2
2
|
"packageVersion": 1,
|
|
3
3
|
"packageId": "@jskit-ai/auth-web",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.55",
|
|
5
5
|
"kind": "runtime",
|
|
6
6
|
"description": "Auth web module: Fastify auth routes plus web login/sign-out scaffolds.",
|
|
7
7
|
"dependsOn": [
|
|
@@ -220,10 +220,10 @@ export default Object.freeze({
|
|
|
220
220
|
"@tanstack/vue-query": "5.92.12",
|
|
221
221
|
"@mdi/js": "^7.4.47",
|
|
222
222
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
223
|
-
"@jskit-ai/auth-core": "0.1.
|
|
224
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
225
|
-
"@jskit-ai/kernel": "0.1.
|
|
226
|
-
"@jskit-ai/shell-web": "0.1.
|
|
223
|
+
"@jskit-ai/auth-core": "0.1.53",
|
|
224
|
+
"@jskit-ai/http-runtime": "0.1.53",
|
|
225
|
+
"@jskit-ai/kernel": "0.1.54",
|
|
226
|
+
"@jskit-ai/shell-web": "0.1.53",
|
|
227
227
|
"vuetify": "^4.0.0"
|
|
228
228
|
},
|
|
229
229
|
"dev": {}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jskit-ai/auth-web",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.55",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --test"
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@tanstack/vue-query": "^5.90.5",
|
|
21
|
-
"@jskit-ai/auth-core": "0.1.
|
|
21
|
+
"@jskit-ai/auth-core": "0.1.53",
|
|
22
22
|
"@mdi/js": "^7.4.47",
|
|
23
23
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
24
|
-
"@jskit-ai/kernel": "0.1.
|
|
25
|
-
"@jskit-ai/shell-web": "0.1.
|
|
24
|
+
"@jskit-ai/kernel": "0.1.54",
|
|
25
|
+
"@jskit-ai/shell-web": "0.1.53",
|
|
26
26
|
"pinia": "^3.0.4",
|
|
27
27
|
"vuetify": "^4.0.0",
|
|
28
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
28
|
+
"@jskit-ai/http-runtime": "0.1.53"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -3,6 +3,7 @@ import { AUTH_PATHS } from "@jskit-ai/auth-core/shared/authPaths";
|
|
|
3
3
|
import { isExternalLinkTarget } from "@jskit-ai/kernel/shared/support/linkPath";
|
|
4
4
|
import { normalizePathname as normalizeSurfacePathname } from "@jskit-ai/kernel/shared/surface/paths";
|
|
5
5
|
import { createListenerSubscription } from "@jskit-ai/kernel/shared/support/listenerSet";
|
|
6
|
+
import { normalizePermissionList } from "@jskit-ai/kernel/shared/support/permissions";
|
|
6
7
|
|
|
7
8
|
const GLOBAL_GUARD_EVALUATOR_KEY = "__JSKIT_WEB_SHELL_GUARD_EVALUATOR__";
|
|
8
9
|
const AUTH_POLICY_AUTHENTICATED = "authenticated";
|
|
@@ -34,6 +35,8 @@ const KEEP_PREVIOUS_AUTH_STATE = Symbol("keepPreviousAuthState");
|
|
|
34
35
|
const DEFAULT_AUTH_STATE = Object.freeze({
|
|
35
36
|
authenticated: false,
|
|
36
37
|
username: "",
|
|
38
|
+
email: "",
|
|
39
|
+
permissions: Object.freeze([]),
|
|
37
40
|
oauthDefaultProvider: "",
|
|
38
41
|
oauthProviders: Object.freeze([])
|
|
39
42
|
});
|
|
@@ -102,10 +105,14 @@ function normalizeAuthState(payload = {}) {
|
|
|
102
105
|
.toLowerCase();
|
|
103
106
|
const authenticated = Boolean(payload.authenticated);
|
|
104
107
|
const username = authenticated ? String(payload.username || "").trim() : "";
|
|
108
|
+
const email = authenticated ? String(payload.email || "").trim().toLowerCase() : "";
|
|
109
|
+
const permissions = authenticated ? Object.freeze(normalizePermissionList(payload.permissions)) : Object.freeze([]);
|
|
105
110
|
|
|
106
111
|
return Object.freeze({
|
|
107
112
|
authenticated,
|
|
108
113
|
username,
|
|
114
|
+
email,
|
|
115
|
+
permissions,
|
|
109
116
|
oauthDefaultProvider,
|
|
110
117
|
oauthProviders
|
|
111
118
|
});
|
|
@@ -129,6 +136,8 @@ function applyAuthContext(nextState, placementRuntime) {
|
|
|
129
136
|
{
|
|
130
137
|
auth: {
|
|
131
138
|
authenticated: nextState.authenticated,
|
|
139
|
+
email: nextState.email,
|
|
140
|
+
permissions: nextState.permissions,
|
|
132
141
|
oauthDefaultProvider: nextState.oauthDefaultProvider,
|
|
133
142
|
oauthProviders: nextState.oauthProviders
|
|
134
143
|
}
|
|
@@ -157,6 +157,8 @@ class AuthController {
|
|
|
157
157
|
reply.code(200).send({
|
|
158
158
|
authenticated: true,
|
|
159
159
|
username: authResult.profile.displayName,
|
|
160
|
+
email: authResult.profile.email,
|
|
161
|
+
permissions: Array.isArray(authResult.permissions) ? authResult.permissions : [],
|
|
160
162
|
csrfToken,
|
|
161
163
|
...oauthCatalogPayload
|
|
162
164
|
});
|
|
@@ -170,6 +170,8 @@ test("auth guard runtime only updates placement auth context", async () => {
|
|
|
170
170
|
return {
|
|
171
171
|
authenticated: true,
|
|
172
172
|
username: "ada",
|
|
173
|
+
email: "ada@example.com",
|
|
174
|
+
permissions: ["settings.allowed"],
|
|
173
175
|
oauthProviders: [{ id: "github", label: "GitHub" }],
|
|
174
176
|
oauthDefaultProvider: "github"
|
|
175
177
|
};
|
|
@@ -191,6 +193,8 @@ test("auth guard runtime only updates placement auth context", async () => {
|
|
|
191
193
|
});
|
|
192
194
|
assert.deepEqual(context.auth, {
|
|
193
195
|
authenticated: true,
|
|
196
|
+
email: "ada@example.com",
|
|
197
|
+
permissions: ["settings.allowed"],
|
|
194
198
|
oauthDefaultProvider: "github",
|
|
195
199
|
oauthProviders: [{ id: "github", label: "GitHub" }]
|
|
196
200
|
});
|