@functionalcms/svelte-components 5.15.0 → 5.15.1
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/server-side/auth/userAuthenticationHandle.js +2 -21
- package/dist/server-side/functionalSequence.js +1 -1
- package/dist/server-side/handlers/accessTokenHandler.d.ts +2 -1
- package/dist/server-side/handlers/accessTokenHandler.js +6 -4
- package/dist/server-side/handlers/userHandler.d.ts +1 -2
- package/dist/server-side/handlers/userHandler.js +4 -4
- package/dist/server-side/tokenToUserParser.d.ts +1 -0
- package/dist/server-side/tokenToUserParser.js +10 -0
- package/package.json +1 -1
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { deleteCookie, loadCookie, saveCookie } from "../cookies";
|
|
2
2
|
import { userAuthenticationProvider } from "./userAuthenticationProvider";
|
|
3
|
-
import { parse } from "svelte/compiler";
|
|
4
3
|
import { Redis } from "@upstash/redis";
|
|
4
|
+
import { parseJwtToken } from "../tokenToUserParser";
|
|
5
5
|
const pkceCookieName = "functionalcms_pkce";
|
|
6
6
|
const stateCookieName = "functionalcms_state";
|
|
7
7
|
const sessionCookieName = "functionalcms_sessionId";
|
|
8
|
-
const idTokenCookie = "functionalcms_id_token";
|
|
9
|
-
const refreshTokenCookie = "functionalcms_refresh_token";
|
|
10
8
|
export const userAuthenticationHandle = (secret, serverUrl, clientId, redis) => {
|
|
11
9
|
const provider = userAuthenticationProvider(serverUrl, clientId);
|
|
12
10
|
return async ({ event, resolve }) => {
|
|
@@ -36,16 +34,6 @@ function handleLogout(event) {
|
|
|
36
34
|
event.locals.user = null;
|
|
37
35
|
event.locals.session = {};
|
|
38
36
|
}
|
|
39
|
-
function parseJwt(token) {
|
|
40
|
-
const base64 = token.split('.')[1]
|
|
41
|
-
.replace(/-/g, '+')
|
|
42
|
-
.replace(/_/g, '/');
|
|
43
|
-
const json = decodeURIComponent(atob(base64)
|
|
44
|
-
.split('')
|
|
45
|
-
.map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
|
|
46
|
-
.join(''));
|
|
47
|
-
return JSON.parse(json);
|
|
48
|
-
}
|
|
49
37
|
async function handleLogin(event, provider, secret) {
|
|
50
38
|
const callbackUrl = new URL(`${event.url.origin}/auth/callback`);
|
|
51
39
|
const response = await provider.handleLogin(callbackUrl);
|
|
@@ -62,16 +50,9 @@ async function handleCallback(event, secret, provider, redis) {
|
|
|
62
50
|
const headers = new Headers();
|
|
63
51
|
headers.set('Location', event.url.origin);
|
|
64
52
|
const sessionId = crypto.randomUUID();
|
|
65
|
-
const accessToken =
|
|
53
|
+
const accessToken = parseJwtToken(response.access_token);
|
|
66
54
|
await saveCookie(headers, secret, sessionCookieName, sessionId, accessToken.exp - Math.floor(Date.now() / 1000));
|
|
67
55
|
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
|
-
// }
|
|
75
56
|
await deleteCookie(event.cookies, headers, pkceCookieName);
|
|
76
57
|
await deleteCookie(event.cookies, headers, stateCookieName);
|
|
77
58
|
return headers;
|
|
@@ -6,5 +6,5 @@ import { userHandler } from "./handlers/userHandler";
|
|
|
6
6
|
import { accessTokenHandler } from "./handlers/accessTokenHandler";
|
|
7
7
|
import { sitemapHandle } from "./handlers/sitemapHandler";
|
|
8
8
|
export const hookSequence = (secret, redis, paraglideMiddleware, getTextDirection, settings, customHooks) => {
|
|
9
|
-
return sequence(
|
|
9
|
+
return sequence(accessTokenHandler(secret, redis), userHandler(), paraglideHandler(paraglideMiddleware, getTextDirection), authorizationHandle(), sitemapHandle(settings), ...customHooks, errorHandler);
|
|
10
10
|
};
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import {} from '@sveltejs/kit';
|
|
2
2
|
import { loadCookie } from '../cookies';
|
|
3
|
+
import { Redis } from '@upstash/redis';
|
|
3
4
|
const accessTokenCookie = "functionalcms_sessionId";
|
|
4
|
-
export const accessTokenHandler = (secret) => {
|
|
5
|
+
export const accessTokenHandler = (secret, redis) => {
|
|
5
6
|
return async ({ event, resolve }) => {
|
|
6
7
|
try {
|
|
7
|
-
let
|
|
8
|
-
if (
|
|
9
|
-
|
|
8
|
+
let sessionId = await loadCookie(event.cookies, secret, accessTokenCookie);
|
|
9
|
+
if (sessionId) {
|
|
10
|
+
const accessToken = await redis.get(sessionId);
|
|
11
|
+
event.locals.token = accessToken;
|
|
10
12
|
}
|
|
11
13
|
}
|
|
12
14
|
finally {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {} from '@sveltejs/kit';
|
|
2
2
|
import { loadCookie } from '../cookies';
|
|
3
3
|
import { Redis } from '@upstash/redis';
|
|
4
|
+
import { parseJwtToken } from '../tokenToUserParser';
|
|
4
5
|
const accessTokenCookie = "functionalcms_sessionId";
|
|
5
|
-
export const userHandler = (
|
|
6
|
+
export const userHandler = () => {
|
|
6
7
|
return async ({ event, resolve }) => {
|
|
7
8
|
try {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const user = await redis.get(sessionId);
|
|
9
|
+
if (event.locals.token) {
|
|
10
|
+
const user = parseJwtToken(event.locals.token);
|
|
11
11
|
event.locals.user = user;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function parseJwtToken(token: string): any;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function parseJwtToken(token) {
|
|
2
|
+
const base64 = token.split('.')[1]
|
|
3
|
+
.replace(/-/g, '+')
|
|
4
|
+
.replace(/_/g, '/');
|
|
5
|
+
const json = decodeURIComponent(atob(base64)
|
|
6
|
+
.split('')
|
|
7
|
+
.map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
|
|
8
|
+
.join(''));
|
|
9
|
+
return JSON.parse(json);
|
|
10
|
+
}
|