File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import { ActionFunction , useActionData } from 'remix'
22import { redirect } from 'remix'
33import { db } from '~/utils/db.server'
4- import { getUserId } from '~/utils/session.server'
4+ import { requireUserId } from '~/utils/session.server'
55
66function validateJokeName ( name : string ) {
77 if ( name . length < 3 ) {
@@ -28,10 +28,7 @@ type ActionData = {
2828}
2929
3030export 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' )
Original file line number Diff line number Diff 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+
5468export async function createUserSession ( userId : string , redirectTo : string ) {
5569 let session = await storage . getSession ( ) ;
5670 session . set ( "userId" , userId ) ;
You can’t perform that action at this time.
0 commit comments