ability to get sample users with middleware stuff in dev
This commit is contained in:
parent
26e4b80f9f
commit
ddd25e9650
|
@ -0,0 +1,87 @@
|
||||||
|
import * as AT from "../../../website/src/types/account-types";
|
||||||
|
|
||||||
|
const basic: AT.LingdocsUser = {
|
||||||
|
"_id":"5e8dd381-950f-4641-922d-c63c6bf0f8e9",
|
||||||
|
"_rev":"1713-1a299e0d66da62fe4c8d059f0f068cb7",
|
||||||
|
"userId":"5e8dd381-950f-4641-922d-c63c6bf0f8e9" as AT.UUID,
|
||||||
|
"email":"bob@example.com",
|
||||||
|
"emailVerified":true,
|
||||||
|
"name":"Bob Smith",
|
||||||
|
"password":"12345" as AT.Hash,
|
||||||
|
"level":"basic",
|
||||||
|
"tests":[],
|
||||||
|
"lastLogin":1629893763810 as AT.TimeStamp,
|
||||||
|
"lastActive":1630414108552 as AT.TimeStamp,
|
||||||
|
"userTextOptionsRecord":{
|
||||||
|
"lastModified":1629983812750 as AT.TimeStamp,
|
||||||
|
"userTextOptions":{"spelling":"Afghan","diacritics":false,"dialect":"standard","phonetics":"lingdocs"}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const student: AT.LingdocsUser = {
|
||||||
|
"_id":"5e8dd381-950f-4641-922d-c63c6bf0f8e8",
|
||||||
|
"_rev":"1713-1a299e0d66da62fe4c8d059f0f068cb6",
|
||||||
|
"userId":"5e8dd381-950f-4641-922d-c63c6bf0f8e9" as AT.UUID,
|
||||||
|
"email":"jim@example.com",
|
||||||
|
"emailVerified":true,
|
||||||
|
"name":"Jim Weston",
|
||||||
|
"password":"12345" as AT.Hash,
|
||||||
|
"level":"student",
|
||||||
|
"tests":[],
|
||||||
|
"lastLogin":1629893763810 as AT.TimeStamp,
|
||||||
|
"lastActive":1630414108552 as AT.TimeStamp,
|
||||||
|
"couchDbPassword": "12345" as AT.UserDbPassword,
|
||||||
|
"wordlistDbName": "jim-db" as AT.WordlistDbName,
|
||||||
|
"userTextOptionsRecord":{
|
||||||
|
"lastModified":1629983812750 as AT.TimeStamp,
|
||||||
|
"userTextOptions":{"spelling":"Afghan","diacritics":false,"dialect":"standard","phonetics":"lingdocs"}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const admin: AT.LingdocsUser = {
|
||||||
|
"_id":"5e8dd381-950f-4641-922d-c63c6bf0f8e8",
|
||||||
|
"_rev":"1713-1a299e0d66da62fe4c8d059f0f068cb6",
|
||||||
|
"userId":"5e8dd381-950f-4641-922d-c63c6bf0f8e9" as AT.UUID,
|
||||||
|
"email":"jim@example.com",
|
||||||
|
"emailVerified":true,
|
||||||
|
"name":"Frank Weston",
|
||||||
|
"password":"12345" as AT.Hash,
|
||||||
|
"level":"editor",
|
||||||
|
"admin":true,
|
||||||
|
"tests":[],
|
||||||
|
"lastLogin":1629893763810 as AT.TimeStamp,
|
||||||
|
"lastActive":1630414108552 as AT.TimeStamp,
|
||||||
|
"couchDbPassword": "12345" as AT.UserDbPassword,
|
||||||
|
"wordlistDbName": "jim-db" as AT.WordlistDbName,
|
||||||
|
"userTextOptionsRecord":{
|
||||||
|
"lastModified":1629983812750 as AT.TimeStamp,
|
||||||
|
"userTextOptions":{"spelling":"Afghan","diacritics":false,"dialect":"standard","phonetics":"lingdocs"}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const editor: AT.LingdocsUser = {
|
||||||
|
"_id":"5e8dd381-950f-4641-922d-c63c6bf0f8e8",
|
||||||
|
"_rev":"1713-1a299e0d66da62fe4c8d059f0f068cb6",
|
||||||
|
"userId":"5e8dd381-950f-4641-922d-c63c6bf0f8e9" as AT.UUID,
|
||||||
|
"email":"jim@example.com",
|
||||||
|
"emailVerified":true,
|
||||||
|
"name":"Frank Weston",
|
||||||
|
"password":"12345" as AT.Hash,
|
||||||
|
"level":"editor",
|
||||||
|
"tests":[],
|
||||||
|
"lastLogin":1629893763810 as AT.TimeStamp,
|
||||||
|
"lastActive":1630414108552 as AT.TimeStamp,
|
||||||
|
"couchDbPassword": "12345" as AT.UserDbPassword,
|
||||||
|
"wordlistDbName": "jim-db" as AT.WordlistDbName,
|
||||||
|
"userTextOptionsRecord":{
|
||||||
|
"lastModified":1629983812750 as AT.TimeStamp,
|
||||||
|
"userTextOptions":{"spelling":"Afghan","diacritics":false,"dialect":"standard","phonetics":"lingdocs"}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
basic,
|
||||||
|
student,
|
||||||
|
editor,
|
||||||
|
admin,
|
||||||
|
};
|
|
@ -5,7 +5,7 @@ import type {
|
||||||
GetServerSidePropsContext,
|
GetServerSidePropsContext,
|
||||||
GetServerSidePropsResult,
|
GetServerSidePropsResult,
|
||||||
} from "next";
|
} from "next";
|
||||||
|
import sampleUsers from "./sample-users";
|
||||||
|
|
||||||
declare module "http" {
|
declare module "http" {
|
||||||
interface IncomingMessage {
|
interface IncomingMessage {
|
||||||
|
@ -38,14 +38,18 @@ async function fetchUser(cookies: any): Promise<AT.LingdocsUser | undefined> {
|
||||||
*
|
*
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export async function lingdocsUserExpressMiddleware(req: Request, res: Response, next: NextFunction) {
|
export function lingdocsUserExpressMiddleware(devSampleUser?: "basic" | "student" | "admin" | "editor" | "none"): (req: Request, res: Response, next: NextFunction) => Promise<void> {
|
||||||
const user = await fetchUser(req.headers.cookie);
|
return async function expressMiddleware(req, res, next) {
|
||||||
Object.defineProperty(
|
const user = devSampleUser
|
||||||
req,
|
? (devSampleUser === "none" ? undefined : sampleUsers[devSampleUser])
|
||||||
"user",
|
: await fetchUser(req.headers.cookie);
|
||||||
{ value: user, writable: false, enumerable: true },
|
Object.defineProperty(
|
||||||
);
|
req,
|
||||||
next();
|
"user",
|
||||||
|
{ value: user, writable: false, enumerable: true },
|
||||||
|
);
|
||||||
|
next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,9 +66,11 @@ export async function lingdocsUserExpressMiddleware(req: Request, res: Response,
|
||||||
* @param handler
|
* @param handler
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function withLingdocsUserApiRoute(handler: NextApiHandler): NextApiHandler {
|
export function withLingdocsUserApiRoute(handler: NextApiHandler, devSampleUser?: "basic" | "student" | "admin" | "editor" | "none"): NextApiHandler {
|
||||||
return async function nextApiHandlerWrappedWithLingdocsUser(req, res) {
|
return async function nextApiHandlerWrappedWithLingdocsUser(req, res) {
|
||||||
const user = await fetchUser(req.cookies);
|
const user = devSampleUser
|
||||||
|
? (devSampleUser === "none" ? undefined : sampleUsers[devSampleUser])
|
||||||
|
: await fetchUser(req.headers.cookies);
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
req,
|
req,
|
||||||
"user",
|
"user",
|
||||||
|
@ -91,11 +97,15 @@ export function withLingdocsUserSsr<
|
||||||
>(
|
>(
|
||||||
handler: (
|
handler: (
|
||||||
context: GetServerSidePropsContext,
|
context: GetServerSidePropsContext,
|
||||||
) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>) {
|
) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>,
|
||||||
|
devSampleUser?: "basic" | "student" | "admin" | "editor" | "none",
|
||||||
|
) {
|
||||||
return async function nextGetServerSidePropsHandlerWrappedWithLingdocsUser(
|
return async function nextGetServerSidePropsHandlerWrappedWithLingdocsUser(
|
||||||
context: GetServerSidePropsContext,
|
context: GetServerSidePropsContext,
|
||||||
) {
|
) {
|
||||||
const user = await fetchUser(context.req.cookies);
|
const user = devSampleUser
|
||||||
|
? (devSampleUser === "none" ? undefined : sampleUsers[devSampleUser])
|
||||||
|
: await fetchUser(context.req.cookies);
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
context.req,
|
context.req,
|
||||||
"user",
|
"user",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@lingdocs/lingdocs-main",
|
"name": "@lingdocs/lingdocs-main",
|
||||||
"version": "0.2.2",
|
"version": "0.2.3",
|
||||||
"description": "types and functions for lingdocs stuff",
|
"description": "types and functions for lingdocs stuff",
|
||||||
"main": "dist/library.js",
|
"main": "dist/library.js",
|
||||||
"module": "dist/library.js",
|
"module": "dist/library.js",
|
||||||
|
|
Loading…
Reference in New Issue