Skip to content

Commit a931d94

Browse files
committed
1 parent cdcce35 commit a931d94

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

app/routes/jokes/new.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ActionFunction, useActionData } from 'remix'
22
import { redirect } from 'remix'
33
import { db } from '~/utils/db.server'
4-
import { getUserId } from '~/utils/session.server'
4+
import { requireUserId } from '~/utils/session.server'
55

66
function validateJokeName(name: string) {
77
if (name.length < 3) {
@@ -28,10 +28,7 @@ type ActionData = {
2828
}
2929

3030
export let action: ActionFunction = async ({ request }) => {
31-
let userId = await getUserId(request)
32-
if (!userId) {
33-
return redirect('/login?redirectTo=/jokes/new')
34-
}
31+
let userId = await requireUserId(request)
3532
let form = await request.formData()
3633
let name = form.get('name')
3734
let content = form.get('content')

app/utils/session.server.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,20 @@ export async function getUserId(request: Request) {
5151
return userId;
5252
}
5353

54+
export async function requireUserId(
55+
request: Request,
56+
redirectTo: string = new URL(request.url).pathname
57+
) {
58+
let userId = await getUserId(request);
59+
if (!userId) {
60+
let searchParams = new URLSearchParams([
61+
["redirectTo", redirectTo]
62+
]);
63+
throw redirect(`/login?${searchParams}`);
64+
}
65+
return userId;
66+
}
67+
5468
export async function createUserSession(userId: string, redirectTo: string) {
5569
let session = await storage.getSession();
5670
session.set("userId", userId);

0 commit comments

Comments
 (0)