From 5a272095be5550104a31e3e6cb27aacdd37e28ca Mon Sep 17 00:00:00 2001 From: lingdocs <71590811+lingdocs@users.noreply.github.com> Date: Sun, 9 Jan 2022 19:15:13 +0400 Subject: [PATCH] actually, base that on the env vars from here --- account/src/lib/with-user.ts | 46 +++++++++++++++++++++++------------- package.json | 2 +- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/account/src/lib/with-user.ts b/account/src/lib/with-user.ts index e042630..840cea6 100644 --- a/account/src/lib/with-user.ts +++ b/account/src/lib/with-user.ts @@ -13,6 +13,16 @@ declare module "http" { } } +const devSampleUser = getSampleUser(); +function getSampleUser(): AT.LingdocsUser | "none" | undefined { + const e = process.env.DEV_SAMPLE; + if (e === "basic" || e === "student" || e === "admin") { + return sampleUsers[e]; + } + if (e === "none") return e; + return undefined; +} + async function fetchUser(cookies: any): Promise { if (!cookies) { return undefined; @@ -36,20 +46,20 @@ async function fetchUser(cookies: any): Promise { /** * express middleware to include the LingdocsUser in req.user if signed in * + * to get sample users, set the DEV_SAMPLE env var to "basic", "student", "editor", or "admin" + * * @returns */ -export function lingdocsUserExpressMiddleware(devSampleUser?: "basic" | "student" | "admin" | "editor" | "none"): (req: Request, res: Response, next: NextFunction) => Promise { - return async function expressMiddleware(req, res, next) { - const user = devSampleUser - ? (devSampleUser === "none" ? undefined : sampleUsers[devSampleUser]) - : await fetchUser(req.headers.cookie); - Object.defineProperty( - req, - "user", - { value: user, writable: false, enumerable: true }, - ); - next(); - } +export async function lingdocsUserExpressMiddleware(req: Request, res: Response, next: NextFunction) { + const user = devSampleUser + ? (devSampleUser === "none" ? undefined : devSampleUser) + : await fetchUser(req.headers.cookie); + Object.defineProperty( + req, + "user", + { value: user, writable: false, enumerable: true }, + ); + next(); } /** @@ -62,14 +72,16 @@ export function lingdocsUserExpressMiddleware(devSampleUser?: "basic" | "student * export default withLingdocsUserApiRoute( * async function thingRoute(req, res) { * ... + * + * to get sample users, set the DEV_SAMPLE env var to "basic", "student", "editor", or "admin" * * @param handler * @returns */ -export function withLingdocsUserApiRoute(handler: NextApiHandler, devSampleUser?: "basic" | "student" | "admin" | "editor" | "none"): NextApiHandler { +export function withLingdocsUserApiRoute(handler: NextApiHandler): NextApiHandler { return async function nextApiHandlerWrappedWithLingdocsUser(req, res) { const user = devSampleUser - ? (devSampleUser === "none" ? undefined : sampleUsers[devSampleUser]) + ? (devSampleUser === "none" ? undefined : devSampleUser) : await fetchUser(req.headers.cookies); Object.defineProperty( req, @@ -88,7 +100,8 @@ export function withLingdocsUserApiRoute(handler: NextApiHandler, devSampleUser? * export const getServerSideProps = withLingdocsUserSsr( * async function getServerSideProps({ req }) { * ... - * + * to get sample users, set the DEV_SAMPLE env var to "basic", "student", "editor", or "admin" + * * @param handler * @returns */ @@ -98,13 +111,12 @@ export function withLingdocsUserSsr< handler: ( context: GetServerSidePropsContext, ) => GetServerSidePropsResult

| Promise>, - devSampleUser?: "basic" | "student" | "admin" | "editor" | "none", ) { return async function nextGetServerSidePropsHandlerWrappedWithLingdocsUser( context: GetServerSidePropsContext, ) { const user = devSampleUser - ? (devSampleUser === "none" ? undefined : sampleUsers[devSampleUser]) + ? (devSampleUser === "none" ? undefined : devSampleUser) : await fetchUser(context.req.cookies); Object.defineProperty( context.req, diff --git a/package.json b/package.json index a23cbc7..789fd49 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lingdocs/lingdocs-main", - "version": "0.2.3", + "version": "0.2.4", "description": "types and functions for lingdocs stuff", "main": "dist/library.js", "module": "dist/library.js",