@functionalcms/svelte-components 5.14.0 → 5.15.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/dist/index-server.d.ts +2 -2
- package/dist/index-server.js +2 -2
- package/dist/server-side/auth/{user_authentication.d.ts → userAuthenticationHandle.d.ts} +2 -1
- package/dist/server-side/auth/{user_authentication.js → userAuthenticationHandle.js} +18 -14
- package/dist/server-side/auth/userAuthenticationProvider.d.ts +1 -1
- package/dist/server-side/auth/userAuthenticationProvider.js +1 -0
- package/dist/server-side/functionalSequence.d.ts +2 -1
- package/dist/server-side/functionalSequence.js +2 -2
- package/dist/server-side/handlers/accessTokenHandler.js +1 -1
- package/dist/server-side/handlers/userHandler.d.ts +2 -1
- package/dist/server-side/handlers/userHandler.js +6 -15
- package/package.json +1 -1
- /package/dist/server-side/auth/{machine_authentication.d.ts → machineAuthenticationHandle.d.ts} +0 -0
- /package/dist/server-side/auth/{machine_authentication.js → machineAuthenticationHandle.js} +0 -0
package/dist/index-server.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { default as authorizationHandle } from './server-side/auth/authorizationHandle.js';
|
|
2
2
|
export { default as errorHandler } from './server-side/auth/errorHandle.js';
|
|
3
|
-
export {
|
|
4
|
-
export { machineAuthenticationHandle } from './server-side/auth/
|
|
3
|
+
export { userAuthenticationHandle } from './server-side/auth/userAuthenticationHandle.js';
|
|
4
|
+
export { machineAuthenticationHandle } from './server-side/auth/machineAuthenticationHandle.js';
|
|
5
5
|
export { userAuthenticationProvider } from './server-side/auth/userAuthenticationProvider.js';
|
|
6
6
|
export { hookSequence } from './server-side/functionalSequence.js';
|
|
7
7
|
export { sessionStorageHandler } from './server-side/handlers/sessionStorageHandler.js';
|
package/dist/index-server.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { default as authorizationHandle } from './server-side/auth/authorizationHandle.js';
|
|
2
2
|
export { default as errorHandler } from './server-side/auth/errorHandle.js';
|
|
3
|
-
export {
|
|
4
|
-
export { machineAuthenticationHandle } from './server-side/auth/
|
|
3
|
+
export { userAuthenticationHandle } from './server-side/auth/userAuthenticationHandle.js';
|
|
4
|
+
export { machineAuthenticationHandle } from './server-side/auth/machineAuthenticationHandle.js';
|
|
5
5
|
export { userAuthenticationProvider } from './server-side/auth/userAuthenticationProvider.js';
|
|
6
6
|
export { hookSequence } from './server-side/functionalSequence.js';
|
|
7
7
|
export { sessionStorageHandler } from './server-side/handlers/sessionStorageHandler.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Handle } from "@sveltejs/kit";
|
|
2
|
+
import { Redis } from "@upstash/redis";
|
|
2
3
|
export type CallbackResponse = {
|
|
3
4
|
access_token: string;
|
|
4
5
|
id_token?: string;
|
|
@@ -13,4 +14,4 @@ export type AuthenticationProvider = {
|
|
|
13
14
|
handleLogin(callbackUrl: URL): Promise<SigninResponse>;
|
|
14
15
|
handleCallback: (state: string, codeVerifier: string, eventUrl: URL) => Promise<CallbackResponse>;
|
|
15
16
|
};
|
|
16
|
-
export declare const
|
|
17
|
+
export declare const userAuthenticationHandle: (secret: string, serverUrl: string, clientId: string, redis: Redis) => Handle;
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { deleteCookie, loadCookie, saveCookie } from "../cookies";
|
|
2
2
|
import { userAuthenticationProvider } from "./userAuthenticationProvider";
|
|
3
3
|
import { parse } from "svelte/compiler";
|
|
4
|
+
import { Redis } from "@upstash/redis";
|
|
4
5
|
const pkceCookieName = "functionalcms_pkce";
|
|
5
6
|
const stateCookieName = "functionalcms_state";
|
|
6
|
-
const
|
|
7
|
+
const sessionCookieName = "functionalcms_sessionId";
|
|
7
8
|
const idTokenCookie = "functionalcms_id_token";
|
|
8
9
|
const refreshTokenCookie = "functionalcms_refresh_token";
|
|
9
|
-
export const
|
|
10
|
+
export const userAuthenticationHandle = (secret, serverUrl, clientId, redis) => {
|
|
10
11
|
const provider = userAuthenticationProvider(serverUrl, clientId);
|
|
11
12
|
return async ({ event, resolve }) => {
|
|
12
13
|
try {
|
|
13
14
|
if (event.url.pathname === '/auth/callback') {
|
|
14
|
-
const headers = await handleCallback(event, secret, provider);
|
|
15
|
+
const headers = await handleCallback(event, secret, provider, redis);
|
|
15
16
|
return new Response(null, { status: 302, headers });
|
|
16
17
|
}
|
|
17
18
|
else if (event.url.pathname === '/auth/login') {
|
|
@@ -29,9 +30,9 @@ export const authenticationHandle = (secret, serverUrl, clientId) => {
|
|
|
29
30
|
};
|
|
30
31
|
};
|
|
31
32
|
function handleLogout(event) {
|
|
32
|
-
event.cookies.delete(
|
|
33
|
-
event.cookies.delete(idTokenCookie, { path: "/" });
|
|
34
|
-
event.cookies.delete(refreshTokenCookie, { path: "/" });
|
|
33
|
+
event.cookies.delete(sessionCookieName, { path: "/" });
|
|
34
|
+
// event.cookies.delete(idTokenCookie, { path: "/" });
|
|
35
|
+
// event.cookies.delete(refreshTokenCookie, { path: "/" });
|
|
35
36
|
event.locals.user = null;
|
|
36
37
|
event.locals.session = {};
|
|
37
38
|
}
|
|
@@ -54,20 +55,23 @@ async function handleLogin(event, provider, secret) {
|
|
|
54
55
|
await saveCookie(headers, secret, stateCookieName, response.state);
|
|
55
56
|
return headers;
|
|
56
57
|
}
|
|
57
|
-
async function handleCallback(event, secret, provider) {
|
|
58
|
+
async function handleCallback(event, secret, provider, redis) {
|
|
58
59
|
const expectedState = await loadCookie(event.cookies, secret, stateCookieName);
|
|
59
60
|
const codeVerifier = await loadCookie(event.cookies, secret, pkceCookieName);
|
|
60
61
|
const response = await provider.handleCallback(expectedState, codeVerifier, event.url);
|
|
61
62
|
const headers = new Headers();
|
|
62
63
|
headers.set('Location', event.url.origin);
|
|
64
|
+
const sessionId = crypto.randomUUID();
|
|
63
65
|
const accessToken = parseJwt(response.access_token);
|
|
64
|
-
await saveCookie(headers, secret,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
await saveCookie(headers, secret, sessionCookieName, sessionId, accessToken.exp - Math.floor(Date.now() / 1000));
|
|
67
|
+
redis.set(sessionId, JSON.stringify(response.access_token), { ex: accessToken.exp - Math.floor(Date.now() / 1000) });
|
|
68
|
+
// await saveCookie(headers, secret, accessTokenCookie, response.access_token, accessToken.exp - Math.floor(Date.now() / 1000));
|
|
69
|
+
// if (response.id_token) {
|
|
70
|
+
// await saveCookie(headers, secret, idTokenCookie, response.id_token);
|
|
71
|
+
// }
|
|
72
|
+
// if (response.refresh_token) {
|
|
73
|
+
// await saveCookie(headers, secret, refreshTokenCookie, response.refresh_token);
|
|
74
|
+
// }
|
|
71
75
|
await deleteCookie(event.cookies, headers, pkceCookieName);
|
|
72
76
|
await deleteCookie(event.cookies, headers, stateCookieName);
|
|
73
77
|
return headers;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { AuthenticationProvider } from "./
|
|
1
|
+
import type { AuthenticationProvider } from "./userAuthenticationHandle";
|
|
2
2
|
export declare const userAuthenticationProvider: (serverUrl: string, clientId: string) => AuthenticationProvider;
|
|
@@ -21,6 +21,7 @@ export const userAuthenticationProvider = (serverUrl, clientId) => {
|
|
|
21
21
|
authUrl.searchParams.set('state', state);
|
|
22
22
|
authUrl.searchParams.set('code_challenge', code_challenge);
|
|
23
23
|
authUrl.searchParams.set('code_challenge_method', 'S256');
|
|
24
|
+
authUrl.searchParams.set('scope', 'openid profile email user.extended properties');
|
|
24
25
|
return { state, codeVerifier: code_verifier, authorisationUrl: authUrl.toString() };
|
|
25
26
|
};
|
|
26
27
|
const handleCallback = async (state, codeVerifier, callbackUrl) => {
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { Handle } from "@sveltejs/kit";
|
|
2
|
-
|
|
2
|
+
import type { Redis } from "@upstash/redis";
|
|
3
|
+
export declare const hookSequence: (secret: string, redis: Redis, paraglideMiddleware: any, getTextDirection: any, settings: any, customHooks: Handle[]) => Handle;
|
|
@@ -5,6 +5,6 @@ import authorizationHandle from "./auth/authorizationHandle";
|
|
|
5
5
|
import { userHandler } from "./handlers/userHandler";
|
|
6
6
|
import { accessTokenHandler } from "./handlers/accessTokenHandler";
|
|
7
7
|
import { sitemapHandle } from "./handlers/sitemapHandler";
|
|
8
|
-
export const hookSequence = (secret, paraglideMiddleware, getTextDirection, settings, customHooks) => {
|
|
9
|
-
return sequence(userHandler(secret), accessTokenHandler(secret), paraglideHandler(paraglideMiddleware, getTextDirection), authorizationHandle(), sitemapHandle(settings), ...customHooks, errorHandler);
|
|
8
|
+
export const hookSequence = (secret, redis, paraglideMiddleware, getTextDirection, settings, customHooks) => {
|
|
9
|
+
return sequence(userHandler(secret, redis), accessTokenHandler(secret), paraglideHandler(paraglideMiddleware, getTextDirection), authorizationHandle(), sitemapHandle(settings), ...customHooks, errorHandler);
|
|
10
10
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {} from '@sveltejs/kit';
|
|
2
2
|
import { loadCookie } from '../cookies';
|
|
3
|
-
const accessTokenCookie = "
|
|
3
|
+
const accessTokenCookie = "functionalcms_sessionId";
|
|
4
4
|
export const accessTokenHandler = (secret) => {
|
|
5
5
|
return async ({ event, resolve }) => {
|
|
6
6
|
try {
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import {} from '@sveltejs/kit';
|
|
2
2
|
import { loadCookie } from '../cookies';
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
// Base64url to string conversion
|
|
7
|
-
const base64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');
|
|
8
|
-
// Use TextDecoder (available in Node.js 11+)
|
|
9
|
-
const binString = globalThis.atob(base64);
|
|
10
|
-
const bytes = Uint8Array.from(binString, (m) => m.codePointAt(0));
|
|
11
|
-
const payload = JSON.parse(new TextDecoder().decode(bytes));
|
|
12
|
-
return payload;
|
|
13
|
-
};
|
|
14
|
-
export const userHandler = (secret) => {
|
|
3
|
+
import { Redis } from '@upstash/redis';
|
|
4
|
+
const accessTokenCookie = "functionalcms_sessionId";
|
|
5
|
+
export const userHandler = (secret, redis) => {
|
|
15
6
|
return async ({ event, resolve }) => {
|
|
16
7
|
try {
|
|
17
|
-
let
|
|
18
|
-
if (
|
|
19
|
-
|
|
8
|
+
let sessionId = await loadCookie(event.cookies, secret, accessTokenCookie);
|
|
9
|
+
if (sessionId) {
|
|
10
|
+
const user = await redis.get(sessionId);
|
|
20
11
|
event.locals.user = user;
|
|
21
12
|
}
|
|
22
13
|
}
|
package/package.json
CHANGED
/package/dist/server-side/auth/{machine_authentication.d.ts → machineAuthenticationHandle.d.ts}
RENAMED
|
File without changes
|
|
File without changes
|