Skip to content

Commit

Permalink
feat: Add endpoint to get current viewer
Browse files Browse the repository at this point in the history
  • Loading branch information
tonyxiao committed Dec 19, 2023
1 parent 3392247 commit 2668268
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 10 deletions.
20 changes: 11 additions & 9 deletions kits/cdk/viewer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@ import {zEndUserId, zId, zUserId} from './id.types'

export const zRole = z.enum(['anon', 'end_user', 'user', 'org', 'system'])

export const zViewer = z.discriminatedUnion('role', [
z.object({role: z.literal(zRole.Enum.anon)}),
// prettier-ignore
z.object({role: z.literal(zRole.Enum.end_user), endUserId: zEndUserId, orgId: zId('org')}),
// prettier-ignore
z.object({role: z.literal(zRole.Enum.user), userId: zUserId, orgId: zId('org').nullish()}),
z.object({role: z.literal(zRole.Enum.org), orgId: zId('org')}),
z.object({role: z.literal(zRole.Enum.system)}),
])
export const zViewer = z
.discriminatedUnion('role', [
z.object({role: z.literal(zRole.Enum.anon)}),
// prettier-ignore
z.object({role: z.literal(zRole.Enum.end_user), endUserId: zEndUserId, orgId: zId('org')}),
// prettier-ignore
z.object({role: z.literal(zRole.Enum.user), userId: zUserId, orgId: zId('org').nullish()}),
z.object({role: z.literal(zRole.Enum.org), orgId: zId('org')}),
z.object({role: z.literal(zRole.Enum.system)}),
])
.openapi({ref: 'Viewer'})

export type ViewerRole = z.infer<typeof zRole>
export type Viewer<R extends ViewerRole = ViewerRole> = Extract<
Expand Down
13 changes: 12 additions & 1 deletion packages/engine-backend/router/publicRouter.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {zRaw} from '@usevenice/cdk'
import {zRaw, zViewer} from '@usevenice/cdk'
import {R, z} from '@usevenice/util'
import {zodToOas31Schema} from '@usevenice/zod'
import {publicProcedure, trpc} from './_base'
Expand All @@ -16,6 +16,17 @@ export const publicRouter = trpc.router({
.input(z.void())
.output(z.string())
.query(() => 'Ok ' + new Date().toISOString()),
getViewer: publicProcedure
.meta({
openapi: {
method: 'GET',
path: '/viewer',
summary: 'Get current viewer accessing the API',
},
})
.input(z.void())
.output(zViewer)
.query(({ctx}) => ctx.viewer),
getPublicEnv: publicProcedure.query(({ctx}) =>
R.pick(ctx.env, ['NEXT_PUBLIC_NANGO_PUBLIC_KEY']),
),
Expand Down

1 comment on commit 2668268

@vercel
Copy link

@vercel vercel bot commented on 2668268 Dec 19, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

venice – ./

venice-git-production-venice.vercel.app
usevenice.vercel.app
venice-venice.vercel.app
app.venice.is

Please sign in to comment.