Skip to content

Commit

Permalink
Merge branch 'main' into dt-refactor-server-entries-from-routes
Browse files Browse the repository at this point in the history
  • Loading branch information
dthyresson authored May 21, 2024
2 parents 7184362 + b9e509d commit a2ac9fc
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 27 deletions.
4 changes: 4 additions & 0 deletions .changesets/10642.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- feat(auth-middleware): Return a Tuple with Route pattern configuration when creating dbAuth middleware (#10642) by @dac09

- This PR renames createDbAuthMiddleware -> initDbAuthMiddleware
- Returns a tuple of `[dbAuthMw, '*']` from the init function to make it harder to accidentally misconfigure the auth middleware
8 changes: 5 additions & 3 deletions packages/auth-providers/dbAuth/middleware/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import type { TagDescriptor } from '@redwoodjs/web'

import App from './App'
import createDbAuthMiddleware from '@redwoodjs/auth-dbauth-middleware'
import initDbAuthMiddleware from '@redwoodjs/auth-dbauth-middleware'
import { Document } from './Document'

import { handler as dbAuthHandler } from '$api/src/functions/auth'
Expand All @@ -16,13 +16,15 @@ interface Props {
}

export const registerMiddleware = () => {
const dbAuthMiddleware = createDbAuthMiddleware({
// This actually returns [dbAuthMiddleware, '*']
const authMw = initDbAuthMiddleware({
cookieName,
dbAuthHandler,
getCurrentUser,
// dbAuthUrl? optional
})
return [dbAuthMiddleware]

return [authMw]
}

export const ServerEntry: React.FC<Props> = ({ css, meta }) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
} from '@redwoodjs/vite/middleware'

import type { DbAuthMiddlewareOptions } from '../index'
import { createDbAuthMiddleware } from '../index'
import { initDbAuthMiddleware } from '../index'
const FIXTURE_PATH = path.resolve(
__dirname,
'../../../../../../__fixtures__/example-todo-main',
Expand All @@ -22,7 +22,7 @@ afterAll(() => {
delete process.env.RWJS_CWD
})

describe('createDbAuthMiddleware()', () => {
describe('initDbAuthMiddleware()', () => {
it('When no cookie headers, pass through the response', async () => {
const options: DbAuthMiddlewareOptions = {
cookieName: '8911',
Expand All @@ -37,7 +37,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)
const req = {
method: 'GET',
headers: new Headers(),
Expand All @@ -61,7 +61,7 @@ describe('createDbAuthMiddleware()', () => {
}),
dbAuthHandler: vi.fn(),
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const mwReq = new MiddlewareRequest(
new Request('http://localhost:8911', {
Expand Down Expand Up @@ -140,7 +140,7 @@ describe('createDbAuthMiddleware()', () => {
}
}),
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)

Expand Down Expand Up @@ -178,7 +178,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)

Expand Down Expand Up @@ -232,7 +232,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)

Expand Down Expand Up @@ -275,7 +275,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)
expect(res.body).toEqual(resetToken)
Expand Down Expand Up @@ -309,7 +309,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)
expect(res).toBeDefined()
Expand Down Expand Up @@ -347,7 +347,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)
expect(res).toBeDefined()
Expand Down Expand Up @@ -390,7 +390,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)
expect(res).toBeDefined()
Expand Down Expand Up @@ -445,7 +445,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)

Expand Down Expand Up @@ -482,7 +482,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)

Expand Down Expand Up @@ -524,7 +524,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)
const serverAuthState = req.serverAuthState.get()
Expand Down Expand Up @@ -563,7 +563,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(mwReq)
expect(res).toBeDefined()
Expand Down Expand Up @@ -599,7 +599,7 @@ describe('createDbAuthMiddleware()', () => {
}
},
}
const middleware = createDbAuthMiddleware(options)
const [middleware] = initDbAuthMiddleware(options)

const res = await middleware(req)
expect(res).toBeDefined()
Expand Down
17 changes: 9 additions & 8 deletions packages/auth-providers/dbAuth/middleware/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
dbAuthSession,
} from '@redwoodjs/auth-dbauth-api'
import type { GetCurrentUser } from '@redwoodjs/graphql-server'
import type { MiddlewareRequest } from '@redwoodjs/vite/middleware'
import type { Middleware } from '@redwoodjs/vite/middleware'
import { MiddlewareResponse } from '@redwoodjs/vite/middleware'

export interface DbAuthMiddlewareOptions {
Expand All @@ -21,16 +21,13 @@ export interface DbAuthMiddlewareOptions {
getCurrentUser: GetCurrentUser
}

export const createDbAuthMiddleware = ({
export const initDbAuthMiddleware = ({
cookieName,
dbAuthHandler,
getCurrentUser,
dbAuthUrl = '/middleware/dbauth',
}: DbAuthMiddlewareOptions) => {
return async (
req: MiddlewareRequest,
res: MiddlewareResponse = MiddlewareResponse.next(),
) => {
}: DbAuthMiddlewareOptions): [Middleware, '*'] => {
const mw: Middleware = async (req, res = MiddlewareResponse.next()) => {
// Handoff POST requests to the dbAuthHandler. The url is configurable on the dbAuth client side.
// This is where we handle login, logout, and signup, etc., but we don't want to intercept
if (req.method === 'POST') {
Expand Down Expand Up @@ -110,6 +107,10 @@ export const createDbAuthMiddleware = ({

return res
}

// Return a tuple and wildcard route pattern
// Just to make it more difficult for user to accidentally misconfigure
return [mw, '*']
}

export default createDbAuthMiddleware
export default initDbAuthMiddleware

0 comments on commit a2ac9fc

Please sign in to comment.