rembrembdocs

Route metadata allows you to add an optional route specific meta property which will be available in all middleware function parameters.

jsx

import * as trpc from '@trpc/server';

// [...]

interface Meta {

hasAuth: boolean

}

export const appRouter = trpc.router<Context, Meta>();

server.ts

tsx

import * as trpc from '@trpc/server';

// [...]

interface Meta {

hasAuth: boolean;

}

export const appRouter = trpc

.router<Context, Meta>()

.middleware(async ({ meta, next, ctx }) => {

`// only check authorization if enabled`

`if (meta?.hasAuth && !ctx.user) {`

  `throw new TRPCError({ code: 'UNAUTHORIZED' });`

`}`

`return next();`

})

.query('hello', {

`meta: {`

  `hasAuth: false,`

`},`

`resolve({ ctx }) {`

  `return {`

    ``greeting: `hello world`,``

  `};`

`},`

})

.query('protected-hello', {

`meta: {`

  `hasAuth: true,`

`},`

`resolve({ ctx }) {`

  `return {`

    ``greeting: `hello world`,``

  `};`

`},`

});