diff --git a/.wundergraph/wundergraph.config.ts b/.wundergraph/wundergraph.config.ts index 144aeca..09518e4 100644 --- a/.wundergraph/wundergraph.config.ts +++ b/.wundergraph/wundergraph.config.ts @@ -59,7 +59,7 @@ configureWunderGraphApplication({ tokenBased: { providers: [ { - userInfoEndpoint: 'http://localhost:3000/api/auth/session', + userInfoEndpoint: 'http://localhost:3000/api/wunderauth', }, ], }, diff --git a/src/lib/ACCs.svelte b/src/lib/ACCs.svelte new file mode 100644 index 0000000..1d9c31a --- /dev/null +++ b/src/lib/ACCs.svelte @@ -0,0 +1,25 @@ + + +
+

Access Control Conditions

+ {#each accs as acc (acc.id)} +

{acc.name}

+ {/each} + +
+ + diff --git a/src/lib/JWT.svelte b/src/lib/JWT.svelte index 71c61d8..4b3525d 100644 --- a/src/lib/JWT.svelte +++ b/src/lib/JWT.svelte @@ -1,16 +1,17 @@
- -

{jwt}

diff --git a/src/lib/Login.svelte b/src/lib/Login.svelte deleted file mode 100644 index 033718a..0000000 --- a/src/lib/Login.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/lib/services/createJWT.ts b/src/lib/services/createJWT.ts index ed989af..5e0ce1e 100644 --- a/src/lib/services/createJWT.ts +++ b/src/lib/services/createJWT.ts @@ -1,7 +1,7 @@ import { LitNodeClient } from "@lit-protocol/lit-node-client"; import type { AccsEVMParams } from "@lit-protocol/types"; -export const createJwt = async () => { +export const createJWT = async () => { const litNodeClient = new LitNodeClient({ litNetwork: "serrano" }); await litNodeClient.connect(); @@ -13,10 +13,10 @@ export const createJwt = async () => { const resourceId = { baseUrl: "https://localhost:3000/", - path: "/wunderauth", + path: "wunderauth", orgId: "°", - role: "admin", - extraData: "{loggedIn: true}" + role: "owner", + extraData: "" } const sessionSigs = me.sessionSigs; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 030766c..44ad4ef 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -31,6 +31,7 @@ }); if (token) { + console.log("layout jwt token: " + token); client.setAuthorizationToken(token); } diff --git a/src/routes/api/auth/+server.ts b/src/routes/api/auth/+server.ts deleted file mode 100644 index 4928997..0000000 --- a/src/routes/api/auth/+server.ts +++ /dev/null @@ -1,13 +0,0 @@ -import jwt from 'jsonwebtoken'; -import { error } from '@sveltejs/kit'; - -const secretKey = process.env.JWT_KEY; - -export async function POST({ request }) { - const user = await request.json(); - const token = jwt.sign(user, secretKey); - if (!token) { - throw error(400, 'No token created.'); - } - return new Response(JSON.stringify({ token }), { status: 200 }); -} \ No newline at end of file diff --git a/src/routes/api/auth/session/+server.js b/src/routes/api/auth/session/+server.js deleted file mode 100644 index 15731ad..0000000 --- a/src/routes/api/auth/session/+server.js +++ /dev/null @@ -1,24 +0,0 @@ -// src/routes/api/session/+server.ts -import jwt from 'jsonwebtoken'; -import { error } from '@sveltejs/kit'; - -const secretKey = process.env.JWT_KEY; - -export async function GET({ request }) { - const authHeader = request.headers.get('Authorization'); - if (!authHeader) { - throw error(401, 'No Authorization header provided.'); - } - - const token = authHeader.split(' ')[1]; - if (!token) { - throw error(401, 'No token provided.'); - } - - try { - const user = jwt.verify(token, secretKey); - return new Response(JSON.stringify(user), { status: 200 }); - } catch (err) { - throw error(401, 'Invalid token.'); - } -} \ No newline at end of file diff --git a/src/routes/api/login/+server.js b/src/routes/api/login/+server.js deleted file mode 100644 index 4928997..0000000 --- a/src/routes/api/login/+server.js +++ /dev/null @@ -1,13 +0,0 @@ -import jwt from 'jsonwebtoken'; -import { error } from '@sveltejs/kit'; - -const secretKey = process.env.JWT_KEY; - -export async function POST({ request }) { - const user = await request.json(); - const token = jwt.sign(user, secretKey); - if (!token) { - throw error(400, 'No token created.'); - } - return new Response(JSON.stringify({ token }), { status: 200 }); -} \ No newline at end of file diff --git a/src/routes/api/verify/+server.ts b/src/routes/api/verify/+server.ts deleted file mode 100644 index c0f2864..0000000 --- a/src/routes/api/verify/+server.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { json } from '@sveltejs/kit'; -import { ethers } from 'ethers'; - -export async function POST({ request }) { - const { messageToSign, messageSignature, currentPKP } = await request.json(); - - // Verify the signature - const jsonString = JSON.stringify(messageToSign); - const recoveredAddr = ethers.verifyMessage(jsonString, messageSignature); - - // Check if the address associated with the signature is the same as the current PKP - const verified = currentPKP.ethAddress.toLowerCase() === recoveredAddr.toLowerCase(); - - return json({ verified }, { status: 200 }); -} \ No newline at end of file diff --git a/src/routes/api/wunderauth/+server.ts b/src/routes/api/wunderauth/+server.ts new file mode 100644 index 0000000..f8783b7 --- /dev/null +++ b/src/routes/api/wunderauth/+server.ts @@ -0,0 +1,33 @@ +import { verifyJwt } from "@lit-protocol/lit-node-client"; +import { error } from '@sveltejs/kit'; + +export async function GET({ request }) { + const authHeader = request.headers.get('Authorization'); + if (!authHeader) { + throw error(401, 'No Authorization header provided.'); + } + + const token = authHeader.split(' ')[1]; + if (!token) { + throw error(401, 'No jwt provided.'); + } + + try { + const { payload } = await verifyJwt({ jwt: token }); + if ( + payload.baseUrl !== "https://localhost:3000/" || + payload.path !== "wunderauth" || + payload.orgId !== "°" || + payload.role !== "owner" || + payload.extraData !== "" + ) { + console.log("JWT payload not matching"); + throw error(401, "JWT payload not macting") + } + console.log(payload); + return new Response(JSON.stringify(payload), { status: 200 }); + } catch (err) { + console.log("JWT error"); + throw error(401, "JWT payload not machting") + } +} \ No newline at end of file diff --git a/src/routes/jwt/+page.svelte b/src/routes/jwt/+page.svelte index ba0eed1..e3371de 100644 --- a/src/routes/jwt/+page.svelte +++ b/src/routes/jwt/+page.svelte @@ -1,5 +1,7 @@ + diff --git a/src/routes/me/+page.svelte b/src/routes/me/+page.svelte index c00ab78..65d6a5c 100644 --- a/src/routes/me/+page.svelte +++ b/src/routes/me/+page.svelte @@ -1,24 +1,22 @@ - - +
+ -
-Projects -
- {#if $projectsQuery.isLoading} -

Loading...

- {:else if $projectsQuery.error} -
Error: {JSON.stringify($projectsQuery.error, null, 2)}
- {:else} -
{JSON.stringify($projectsQuery.data, null, 2)}
- {/if} +
+ {#if $projectsQuery.isLoading} +

Loading...

+ {:else if $projectsQuery.error} +
Error: {JSON.stringify($projectsQuery.error, null, 2)}
+ {:else} +
{JSON.stringify($projectsQuery.data, null, 2)}
+ {/if} +