Skip to content

Commit 9f9fe67

Browse files
committed
fix: solidstart/github-oauth: update to current versions
1 parent 9ad506c commit 9f9fe67

File tree

9 files changed

+47
-54
lines changed

9 files changed

+47
-54
lines changed

solidstart/github-oauth/package.json

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,20 @@
77
"start": "node ./.output/server/index.mjs"
88
},
99
"dependencies": {
10-
"@lucia-auth/adapter-sqlite": "^3.0.0",
11-
"@solidjs/router": "^0.10.5",
12-
"@solidjs/start": "^0.4.2",
13-
"arctic": "^0.10.2",
14-
"better-sqlite3": "^9.2.2",
15-
"lucia": "^3.2.0",
16-
"solid-js": "^1.8.7",
17-
"vinxi": "0.0.54"
10+
"@lucia-auth/adapter-sqlite": "^3.0.2",
11+
"@solidjs/router": "^0.14.10",
12+
"@solidjs/start": "^1.0.9",
13+
"arctic": "^1.9.2",
14+
"better-sqlite3": "^9.6.0",
15+
"lucia": "^3.2.1",
16+
"solid-js": "^1.9.2",
17+
"vinxi": "^0.4.3"
1818
},
1919
"engines": {
2020
"node": ">=18"
2121
},
2222
"devDependencies": {
23-
"@types/better-sqlite3": "^7.6.8"
23+
"@types/better-sqlite3": "^7.6.8",
24+
"typescript": "^5.6.3"
2425
}
2526
}

solidstart/github-oauth/src/app.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Router } from "@solidjs/router";
2-
import { FileRoutes } from "@solidjs/start";
2+
import { FileRoutes } from "@solidjs/start/router";
33
import { Suspense } from "solid-js";
44

55
export default function App() {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import { mount, StartClient } from "@solidjs/start/client";
22

3-
mount(() => <StartClient />, document.getElementById("app"));
3+
mount(() => <StartClient />, document.getElementById("app")!);

solidstart/github-oauth/src/lib/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import { getRequestEvent } from "solid-js/web";
44
export const getAuthenticatedUser = cache(async () => {
55
"use server";
66
const event = getRequestEvent()!;
7-
if (!event.context.user) {
7+
if (!event.locals.user) {
88
throw redirect("/login");
99
}
10-
return event.context.user;
10+
return event.locals.user;
1111
}, "user");

solidstart/github-oauth/src/middleware.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,41 @@
1-
import { createMiddleware, appendHeader, getCookie, getHeader } from "@solidjs/start/server";
1+
import { createMiddleware} from "@solidjs/start/middleware";
22
import { Session, User, verifyRequestOrigin } from "lucia";
33
import { lucia } from "./lib/auth";
4+
import { appendHeader, getCookie, getHeader } from "vinxi/http";
5+
import { FetchEvent } from "@solidjs/start/server";
46

57
export default createMiddleware({
6-
onRequest: async (event) => {
7-
if (event.node.req.method !== "GET") {
8-
const originHeader = getHeader(event, "Origin") ?? null;
9-
const hostHeader = getHeader(event, "Host") ?? null;
8+
onRequest: [ async (event: FetchEvent) => {
9+
if (event.request.method !== "GET") {
10+
const originHeader = getHeader("Origin") ?? null;
11+
const hostHeader = getHeader( "Host") ?? null;
1012
if (!originHeader || !hostHeader || !verifyRequestOrigin(originHeader, [hostHeader])) {
11-
event.node.res.writeHead(403).end();
13+
event.response.status = 403;
1214
return;
1315
}
1416
}
1517

16-
const sessionId = getCookie(event, lucia.sessionCookieName) ?? null;
18+
const sessionId = getCookie(lucia.sessionCookieName) ?? null;
1719
if (!sessionId) {
18-
event.context.session = null;
19-
event.context.user = null;
20+
event.locals.session = null;
21+
event.locals.user = null;
2022
return;
2123
}
2224

2325
const { session, user } = await lucia.validateSession(sessionId);
2426
if (session && session.fresh) {
25-
appendHeader(event, "Set-Cookie", lucia.createSessionCookie(session.id).serialize());
27+
appendHeader("Set-Cookie", lucia.createSessionCookie(session.id).serialize());
2628
}
2729
if (!session) {
28-
appendHeader(event, "Set-Cookie", lucia.createBlankSessionCookie().serialize());
30+
appendHeader("Set-Cookie", lucia.createBlankSessionCookie().serialize());
2931
}
30-
event.context.session = session;
31-
event.context.user = user;
32-
}
32+
event.locals.session = session;
33+
event.locals.user = user;
34+
}]
3335
});
3436

35-
declare module "vinxi/server" {
36-
interface H3EventContext {
37+
declare module "@solidjs/start/server" {
38+
interface RequestEventLocals {
3739
user: User | null;
3840
session: Session | null;
3941
}

solidstart/github-oauth/src/routes/index.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { action, createAsync, redirect } from "@solidjs/router";
22
import { getRequestEvent } from "solid-js/web";
3-
import { appendHeader } from "@solidjs/start/server";
3+
import { appendHeader } from "vinxi/http";
44
import { lucia } from "~/lib/auth";
55
import { getAuthenticatedUser } from "~/lib/utils";
66

77
export default function Index() {
8-
const user = createAsync(getAuthenticatedUser);
8+
const user = createAsync(() => getAuthenticatedUser());
99
return (
1010
<>
1111
<h1>Hi, {user()?.username}!</h1>
@@ -20,10 +20,10 @@ export default function Index() {
2020
const logout = action(async () => {
2121
"use server";
2222
const event = getRequestEvent()!;
23-
if (!event.context.session) {
23+
if (!event.locals.session) {
2424
return new Error("Unauthorized");
2525
}
26-
await lucia.invalidateSession(event.context.session.id);
27-
appendHeader(event, "Set-Cookie", lucia.createBlankSessionCookie().serialize());
26+
await lucia.invalidateSession(event.locals.session.id);
27+
appendHeader("Set-Cookie", lucia.createBlankSessionCookie().serialize());
2828
throw redirect("/login");
2929
});

solidstart/github-oauth/src/routes/login/github/callback.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,15 @@
1-
import {
2-
getQuery,
3-
createError,
4-
getCookie,
5-
appendHeader,
6-
sendRedirect
7-
} from "@solidjs/start/server";
81
import { OAuth2RequestError } from "arctic";
92
import { generateId } from "lucia";
103
import { github, lucia } from "~/lib/auth";
114
import { db } from "~/lib/db";
12-
13-
import type { APIEvent } from "@solidjs/start/server";
145
import type { DatabaseUser } from "~/lib/db";
6+
import { appendHeader, createError, getCookie, getQuery, HTTPEvent, sendRedirect } from "vinxi/http";
157

16-
export async function GET(event: APIEvent) {
8+
export async function GET(event: HTTPEvent) {
179
const query = getQuery(event);
1810
const code = query.code?.toString() ?? null;
1911
const state = query.state?.toString() ?? null;
20-
const storedState = getCookie(event, "github_oauth_state") ?? null;
12+
const storedState = getCookie("github_oauth_state") ?? null;
2113
if (!code || !state || !storedState || state !== storedState) {
2214
throw createError({
2315
status: 400
@@ -38,8 +30,8 @@ export async function GET(event: APIEvent) {
3830

3931
if (existingUser) {
4032
const session = await lucia.createSession(existingUser.id, {});
41-
appendHeader(event, "Set-Cookie", lucia.createSessionCookie(session.id).serialize());
42-
return sendRedirect(event, "/");
33+
appendHeader("Set-Cookie", lucia.createSessionCookie(session.id).serialize());
34+
return sendRedirect("/");
4335
}
4436

4537
const userId = generateId(15);
@@ -49,8 +41,8 @@ export async function GET(event: APIEvent) {
4941
githubUser.login
5042
);
5143
const session = await lucia.createSession(userId, {});
52-
appendHeader(event, "Set-Cookie", lucia.createSessionCookie(session.id).serialize());
53-
return sendRedirect(event, "/");
44+
appendHeader("Set-Cookie", lucia.createSessionCookie(session.id).serialize());
45+
return sendRedirect("/");
5446
} catch (e) {
5547
if (e instanceof OAuth2RequestError && e.message === "bad_verification_code") {
5648
// invalid code
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { sendRedirect, setCookie } from "@solidjs/start/server";
1+
import { sendRedirect, setCookie } from "vinxi/http";
22
import { generateState } from "arctic";
33
import { github } from "~/lib/auth";
44

@@ -8,12 +8,12 @@ export async function GET(event: APIEvent) {
88
const state = generateState();
99
const url = await github.createAuthorizationURL(state);
1010

11-
setCookie(event, "github_oauth_state", state, {
11+
setCookie("github_oauth_state", state, {
1212
path: "/",
1313
secure: process.env.NODE_ENV === "production",
1414
httpOnly: true,
1515
maxAge: 60 * 10,
1616
sameSite: "lax"
1717
});
18-
return sendRedirect(event, url.toString());
18+
return sendRedirect(url.toString());
1919
}
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { defineConfig } from "@solidjs/start/config";
22

33
export default defineConfig({
4-
start: {
54
middleware: "./src/middleware.ts"
6-
}
75
});

0 commit comments

Comments
 (0)