@agyemanjp/auth
Advanced tools
Comparing version 0.0.13 to 0.0.14
import * as express from 'express'; | ||
import { Obj } from "@agyemanjp/standard"; | ||
import { Method, RouteFinal } from "@agyemanjp/http"; | ||
import { User, UserAccessLevel } from "./types"; | ||
import { RouteObject, ObjEmpty } from "@agyemanjp/http"; | ||
import { User } from "./types"; | ||
export declare const clientRoutesFactory: (authBaseUrl: string, app: string) => { | ||
@@ -9,66 +8,116 @@ middleware: express.Handler[]; | ||
readonly signup: { | ||
readonly method: "post"; | ||
readonly url: "/register"; | ||
readonly handler: express.Handler; | ||
readonly proxy: import("@agyemanjp/http").BodyProxy<import("../db/schema").T<"usersReadonly"> & { | ||
accessLevel: UserAccessLevel; | ||
readonly handlerFactory: () => express.Handler; | ||
readonly url: "/signup"; | ||
readonly method: "post" | "put" | "patch"; | ||
readonly proxy: (args: Omit<{ | ||
app: string; | ||
} & import("../db/schema").T<"usersReadonly"> & { | ||
accessLevel: import("./types").UserAccessLevel; | ||
} & { | ||
password?: string | undefined; | ||
verificationCode: string; | ||
}, "//:app/register", Promise<{ | ||
} & ObjEmpty, "app">) => Promise<{ | ||
error: string; | ||
} | { | ||
data: User; | ||
}>, {}>; | ||
}>; | ||
readonly proxyFactory: <A extends Partial<Omit<{ | ||
app: string; | ||
} & import("../db/schema").T<"usersReadonly"> & { | ||
accessLevel: import("./types").UserAccessLevel; | ||
} & { | ||
password?: string | undefined; | ||
verificationCode: string; | ||
} & ObjEmpty, "app">>>(baseUrl: string, args: A) => (args: Omit<Omit<{ | ||
app: string; | ||
} & import("../db/schema").T<"usersReadonly"> & { | ||
accessLevel: import("./types").UserAccessLevel; | ||
} & { | ||
password?: string | undefined; | ||
verificationCode: string; | ||
} & ObjEmpty, "app">, keyof A>) => Promise<{ | ||
error: string; | ||
} | { | ||
data: User; | ||
}>; | ||
}; | ||
readonly login: { | ||
readonly method: "post"; | ||
readonly handlerFactory: () => express.Handler; | ||
readonly url: "/login"; | ||
readonly handler: express.Handler; | ||
readonly proxy: import("@agyemanjp/http").QueryProxy<{ | ||
readonly method: "delete" | "get"; | ||
readonly proxy: (args: Omit<{ | ||
app: string; | ||
} & ObjEmpty & { | ||
email: string; | ||
pwd: string; | ||
}, `${string}//:app/authenticate`, Promise<{ | ||
}, "app">) => Promise<{ | ||
error: string; | ||
} | { | ||
data: User; | ||
}>, { | ||
}>; | ||
readonly proxyFactory: <A_1 extends Partial<Omit<{ | ||
app: string; | ||
} & ObjEmpty & { | ||
email: string; | ||
pwd: string; | ||
}, "app">>>(baseUrl: string, args: A_1) => (args: Omit<Omit<{ | ||
app: string; | ||
} & ObjEmpty & { | ||
email: string; | ||
pwd: string; | ||
}, "app">, keyof A_1>) => Promise<{ | ||
error: string; | ||
} | { | ||
data: User; | ||
}>; | ||
}; | ||
readonly logout: { | ||
readonly method: "get"; | ||
readonly handlerFactory: () => express.Handler; | ||
readonly proxyFactory: import("@agyemanjp/http").ProxyFactory<"/logout", ObjEmpty, void>; | ||
readonly proxy: (args: Omit<ObjEmpty, never>) => Promise<void>; | ||
readonly method: "delete" | "get" | "post" | "put" | "patch"; | ||
readonly url: "/logout"; | ||
readonly handler: express.Handler; | ||
readonly proxy: any; | ||
}; | ||
readonly verify: RouteFinal<Method, { | ||
readonly verify: RouteObject<"POST" | "PATCH" | "PUT", Omit<{ | ||
app: string; | ||
} & { | ||
emailAddress: string; | ||
verificationCode: string; | ||
accessLevel: UserAccessLevel; | ||
} & Omit<{ | ||
app: string; | ||
}, "app">, User>; | ||
readonly deactivate: RouteFinal<Method, Obj<never, string> & Omit<{ | ||
accessLevel: import("./types").UserAccessLevel; | ||
} & ObjEmpty, "app">, { | ||
error: string; | ||
} | { | ||
data: User; | ||
}, any>; | ||
readonly deactivate: RouteObject<"GET" | "DELETE", Omit<{ | ||
id: string; | ||
app: string; | ||
}, "id" | "app"> & Omit<{ | ||
id: string; | ||
} & ObjEmpty, "app">, { | ||
error: string; | ||
} | { | ||
data: ObjEmpty; | ||
}, any>; | ||
readonly logResourceAccess: RouteObject<"POST" | "PATCH" | "PUT", Omit<{ | ||
app: string; | ||
}, "app">, null>; | ||
readonly logResourceAccess: RouteFinal<Method, { | ||
} & { | ||
userId: string; | ||
resourceCode: string; | ||
resourceType: string; | ||
} & Omit<{ | ||
} & ObjEmpty, "app">, { | ||
error: string; | ||
} | { | ||
data: import("../db/schema").T<"resourceAccessCounts">; | ||
}, any>; | ||
readonly getResourceAccess: RouteObject<"GET" | "DELETE", Omit<{ | ||
app: string; | ||
}, "app">, import("../db/schema").T<"resourceAccessCounts">>; | ||
readonly getResourceAccess: RouteFinal<Method, { | ||
} & { | ||
user_id: string; | ||
resource_code: string; | ||
} & Omit<{ | ||
app: string; | ||
}, "app">, import("../db/schema").T<"resourceAccessCounts">[]>; | ||
} & ObjEmpty, "app">, { | ||
error: string; | ||
} | { | ||
data: import("../db/schema").T<"resourceAccessCounts">[]; | ||
}, any>; | ||
}; | ||
}; | ||
export declare function uid(): string; |
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
@@ -16,2 +39,5 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
exports.uid = exports.clientRoutesFactory = void 0; | ||
/* eslint-disable @typescript-eslint/no-unused-vars */ | ||
/* eslint-disable @typescript-eslint/ban-types */ | ||
const cuid_1 = __importDefault(require("cuid")); | ||
const passport_1 = __importDefault(require("passport")); | ||
@@ -21,5 +47,4 @@ const passport_local_1 = __importDefault(require("passport-local")); | ||
const http_1 = require("@agyemanjp/http"); | ||
const cuid_1 = __importDefault(require("cuid")); | ||
const types_1 = require("./types"); | ||
const server_1 = require("./server"); | ||
const server = __importStar(require("./server")); | ||
const clientRoutesFactory = (authBaseUrl, app) => { | ||
@@ -33,6 +58,3 @@ configurePassport(); | ||
routes: { | ||
signup: { | ||
method: "post", | ||
url: "/register", | ||
handler: ((req, res, next) => __awaiter(void 0, void 0, void 0, function* () { | ||
signup: Object.assign(Object.assign({}, (0, http_1.clientRoute)(server.routes.register, authBaseUrl, { app: app })), { handlerFactory: () => ((req, res, next) => { | ||
// console.log(`Request body sent to signup post: ${stringify(req.body)}`) | ||
@@ -66,9 +88,4 @@ passport_1.default.authenticate('local-signup', (errAuth, user, info) => { | ||
})(req, res, next); | ||
})), | ||
proxy: server_1.serverRoutes.register.proxyFactory("", {}) | ||
}, | ||
login: { | ||
method: "post", | ||
url: "/login", | ||
handler: ((req, res, next) => { | ||
}), url: "/signup" }), | ||
login: Object.assign(Object.assign({}, (0, http_1.clientRoute)(server.routes.authenticate, authBaseUrl, { app: app })), { handlerFactory: () => ((req, res, next) => { | ||
// console.log(`Request body sent to login post: ${stringify(req.body)}`) | ||
@@ -101,19 +118,17 @@ passport_1.default.authenticate('local-login', (errAuth, user, info) => { | ||
})(req, res, next); | ||
}), | ||
proxy: server_1.serverRoutes.authenticate.proxyFactory(authBaseUrl, { app: app }) | ||
}, | ||
logout: { | ||
method: "get", | ||
url: "/logout", | ||
handler: ((req, res, next) => { | ||
}), url: "/login" }), | ||
logout: Object.assign(Object.assign({}, (0, http_1.queryFactory)("get") | ||
.url("/logout") | ||
.queryType() | ||
.headersType() | ||
.responseType(void (0)) | ||
.proxy()), { handlerFactory: () => ((req, res, next) => { | ||
// console.log(`Logging out via GET`) | ||
req.logOut(); | ||
res.redirect('/'); | ||
}), | ||
proxy: undefined | ||
}, | ||
verify: (0, http_1.clientRoute)(server_1.serverRoutes.verify, authBaseUrl, { app: app }), | ||
deactivate: (0, http_1.clientRoute)(server_1.serverRoutes.deactivate, authBaseUrl, { app: app }), | ||
logResourceAccess: (0, http_1.clientRoute)(server_1.serverRoutes.logResourceAccess, authBaseUrl, { app: app }), | ||
getResourceAccess: (0, http_1.clientRoute)(server_1.serverRoutes.getResourceAccess, authBaseUrl, { app: app }) | ||
}) }), | ||
verify: (0, http_1.clientRoute)(server.routes.verify, authBaseUrl, { app: app }), | ||
deactivate: (0, http_1.clientRoute)(server.routes.deactivate, authBaseUrl, { app: app }), | ||
logResourceAccess: (0, http_1.clientRoute)(server.routes.logResourceAccess, authBaseUrl, { app: app }), | ||
getResourceAccess: (0, http_1.clientRoute)(server.routes.getResourceAccess, authBaseUrl, { app: app }) | ||
} | ||
@@ -127,3 +142,3 @@ }; | ||
try { | ||
const userPromise = server_1.serverRoutes.findUser.proxyFactory(authBaseUrl, { app })({ id }); | ||
const userPromise = server.routes.findUser.proxyFactory(authBaseUrl, { app })({ id }); | ||
const userInfo = yield userPromise; | ||
@@ -149,3 +164,3 @@ if ("data" in userInfo) { | ||
try { | ||
const userInfo = yield server_1.serverRoutes.authenticate.proxyFactory(authBaseUrl, { app })({ email, pwd }); | ||
const userInfo = yield server.routes.authenticate.proxyFactory(authBaseUrl, { app })({ email, pwd }); | ||
if ("data" in userInfo) { | ||
@@ -179,3 +194,3 @@ return done(null, userInfo.data); | ||
console.log(`New user verification url: ${verificationURL}`); | ||
const result = yield server_1.serverRoutes.register.proxyFactory(authBaseUrl, { app })(Object.assign(Object.assign({}, user), { verificationCode })); | ||
const result = yield server.routes.register.proxyFactory(authBaseUrl, { app })(Object.assign(Object.assign({}, user), { verificationCode })); | ||
if ("error" in result) { | ||
@@ -182,0 +197,0 @@ return done(result.error, null); |
{ | ||
"name": "@agyemanjp/auth", | ||
"version": "0.0.13", | ||
"version": "0.0.14", | ||
"description": "Authentication/Authorization library and micro-service", | ||
@@ -21,4 +21,4 @@ "main": "index.js", | ||
"dependencies": { | ||
"@agyemanjp/http": "^0.1.25", | ||
"@agyemanjp/standard": "^4.0.1", | ||
"@agyemanjp/http": "^0.1.35", | ||
"@agyemanjp/standard": "^4.0.3", | ||
"@agyemanjp/storage": "^1.5.1", | ||
@@ -70,3 +70,3 @@ "bcryptjs": "^2.4.3", | ||
"rollup": "^2.64.0", | ||
"typescript": "^4.4.2" | ||
"typescript": "^4.6.4" | ||
}, | ||
@@ -73,0 +73,0 @@ "scripts": { |
178
server.d.ts
@@ -1,104 +0,80 @@ | ||
import * as express from 'express'; | ||
import { Obj } from "@agyemanjp/standard"; | ||
import { ObjEmpty, RouteObject } from '@agyemanjp/http'; | ||
import { UserAccessLevel, User } from "./types"; | ||
export declare const serverRoutes: { | ||
readonly findUser: { | ||
method: "get"; | ||
url: "/:app/users/:id"; | ||
handler: express.Handler; | ||
proxyFactory: <BaseUrl extends string, Prm extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl}//:app/users/:id`>>>(baseUrl: BaseUrl, params: Prm) => import("@agyemanjp/http").QueryProxy<{}, `${BaseUrl}//:app/users/:id`, Promise<{ | ||
error: string; | ||
} | { | ||
data: User; | ||
}>, Prm>; | ||
}; | ||
readonly verify: { | ||
proxyFactory: <BaseUrl_4 extends string, Prm_4 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_4}//:app/verify`>>>(baseUrl: BaseUrl_4, params: Prm_4) => import("@agyemanjp/http").BodyProxy<{ | ||
emailAddress: string; | ||
verificationCode: string; | ||
accessLevel: UserAccessLevel; | ||
}, `${BaseUrl_4}//:app/verify`, Promise<{ | ||
error: string; | ||
} | { | ||
data: User; | ||
}>, Prm_4>; | ||
handler: express.Handler; | ||
url: "/:app/verify"; | ||
method: "post"; | ||
}; | ||
readonly register: { | ||
proxyFactory: <BaseUrl_4_1 extends string, Prm_4_1 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_4_1}//:app/register`>>>(baseUrl: BaseUrl_4_1, params: Prm_4_1) => import("@agyemanjp/http").BodyProxy<import("./db/schema").T<"usersReadonly"> & { | ||
accessLevel: UserAccessLevel; | ||
} & { | ||
password?: string | undefined; | ||
verificationCode: string; | ||
}, `${BaseUrl_4_1}//:app/register`, Promise<{ | ||
error: string; | ||
} | { | ||
data: User; | ||
}>, Prm_4_1>; | ||
handler: express.Handler; | ||
url: "/:app/register"; | ||
method: "post"; | ||
}; | ||
readonly authenticate: { | ||
method: "get"; | ||
url: "/:app/authenticate"; | ||
handler: express.Handler; | ||
proxyFactory: <BaseUrl_1 extends string, Prm_1 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_1}//:app/authenticate`>>>(baseUrl: BaseUrl_1, params: Prm_1) => import("@agyemanjp/http").QueryProxy<{ | ||
email: string; | ||
pwd: string; | ||
}, `${BaseUrl_1}//:app/authenticate`, Promise<{ | ||
error: string; | ||
} | { | ||
data: User; | ||
}>, Prm_1>; | ||
}; | ||
readonly deactivate: { | ||
method: "delete"; | ||
url: "/:app/deactivate/:id"; | ||
handler: express.Handler; | ||
proxyFactory: <BaseUrl_2 extends string, Prm_2 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_2}//:app/deactivate/:id`>>>(baseUrl: BaseUrl_2, params: Prm_2) => import("@agyemanjp/http").QueryProxy<Obj<never, string>, `${BaseUrl_2}//:app/deactivate/:id`, Promise<{ | ||
error: string; | ||
} | { | ||
data: null; | ||
}>, Prm_2>; | ||
}; | ||
readonly logResourceAccess: { | ||
proxyFactory: <BaseUrl_4_2 extends string, Prm_4_2 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_4_2}//:app/res_access_counts`>>>(baseUrl: BaseUrl_4_2, params: Prm_4_2) => import("@agyemanjp/http").BodyProxy<{ | ||
userId: string; | ||
resourceCode: string; | ||
resourceType: string; | ||
}, `${BaseUrl_4_2}//:app/res_access_counts`, Promise<{ | ||
error: string; | ||
} | { | ||
data: import("./db/schema").T<"resourceAccessCounts">; | ||
}>, Prm_4_2>; | ||
handler: express.Handler; | ||
url: "/:app/res_access_counts"; | ||
method: "post"; | ||
}; | ||
readonly getResourceAccess: { | ||
method: "get"; | ||
url: "/:app/res_access_counts"; | ||
handler: express.Handler; | ||
proxyFactory: <BaseUrl_3 extends string, Prm_3 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_3}//:app/res_access_counts`>>>(baseUrl: BaseUrl_3, params: Prm_3) => import("@agyemanjp/http").QueryProxy<{ | ||
user_id: string; | ||
resource_code: string; | ||
}, `${BaseUrl_3}//:app/res_access_counts`, Promise<{ | ||
error: string; | ||
} | { | ||
data: import("./db/schema").T<"resourceAccessCounts">[]; | ||
}>, Prm_3>; | ||
}; | ||
readonly default: { | ||
method: "get"; | ||
url: "/*"; | ||
handler: express.Handler; | ||
proxyFactory: <BaseUrl_5 extends string, Prm_5 extends Partial<import("@agyemanjp/http/common").Params<`${BaseUrl_5}//*`>>>(baseUrl: BaseUrl_5, params: Prm_5) => import("@agyemanjp/http").QueryProxy<Obj<never, string>, `${BaseUrl_5}//*`, Promise<{ | ||
error: string; | ||
} | { | ||
data: null; | ||
}>, Prm_5>; | ||
}; | ||
export declare const routes: { | ||
readonly findUser: RouteObject<"GET" | "DELETE", { | ||
id: string; | ||
app: string; | ||
} & ObjEmpty, { | ||
error: string; | ||
} | { | ||
data: User; | ||
}, unknown>; | ||
readonly verify: RouteObject<"POST" | "PATCH" | "PUT", { | ||
app: string; | ||
} & { | ||
emailAddress: string; | ||
verificationCode: string; | ||
accessLevel: UserAccessLevel; | ||
} & ObjEmpty, { | ||
error: string; | ||
} | { | ||
data: User; | ||
}, unknown>; | ||
readonly register: RouteObject<"POST" | "PATCH" | "PUT", { | ||
app: string; | ||
} & import("./db/schema").T<"usersReadonly"> & { | ||
accessLevel: UserAccessLevel; | ||
} & { | ||
password?: string | undefined; | ||
verificationCode: string; | ||
} & ObjEmpty, { | ||
error: string; | ||
} | { | ||
data: User; | ||
}, unknown>; | ||
readonly authenticate: RouteObject<"GET" | "DELETE", { | ||
app: string; | ||
} & ObjEmpty & { | ||
email: string; | ||
pwd: string; | ||
}, { | ||
error: string; | ||
} | { | ||
data: User; | ||
}, unknown>; | ||
readonly deactivate: RouteObject<"GET" | "DELETE", { | ||
id: string; | ||
app: string; | ||
} & ObjEmpty, { | ||
error: string; | ||
} | { | ||
data: ObjEmpty; | ||
}, unknown>; | ||
readonly logResourceAccess: RouteObject<"POST" | "PATCH" | "PUT", { | ||
app: string; | ||
} & { | ||
userId: string; | ||
resourceCode: string; | ||
resourceType: string; | ||
} & ObjEmpty, { | ||
error: string; | ||
} | { | ||
data: import("./db/schema").T<"resourceAccessCounts">; | ||
}, unknown>; | ||
readonly getResourceAccess: RouteObject<"GET" | "DELETE", { | ||
app: string; | ||
} & { | ||
user_id: string; | ||
resource_code: string; | ||
} & ObjEmpty, { | ||
error: string; | ||
} | { | ||
data: import("./db/schema").T<"resourceAccessCounts">[]; | ||
}, unknown>; | ||
readonly default: RouteObject<"GET" | "DELETE", ObjEmpty & Obj<never, string>, { | ||
error: string; | ||
} | { | ||
data: never; | ||
}, unknown>; | ||
}; |
126
server.js
@@ -47,3 +47,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.serverRoutes = void 0; | ||
exports.routes = void 0; | ||
const srcMapSupport = __importStar(require("source-map-support")); | ||
@@ -57,6 +57,6 @@ srcMapSupport.install({ environment: 'node' }); | ||
const standard_1 = require("@agyemanjp/standard"); | ||
const server_1 = require("@agyemanjp/http/server"); | ||
const http_1 = require("@agyemanjp/http"); | ||
const common_1 = require("@agyemanjp/http/common"); | ||
const repository_1 = require("./repository"); | ||
const utils_1 = require("./utils"); | ||
const repository_1 = require("./repository"); | ||
const mail_1 = require("./lib/mail"); | ||
@@ -68,22 +68,14 @@ const envKeys = ["DATABASE_URL", "SMTP_USERNAME", "SMTP_PASSWORD", "SMTP_HOST", "SMTP_PORT", "NODE_ENV"]; | ||
const db = new repository_1.PostgresRepository({ dbUrl: env.DATABASE_URL }); | ||
exports.serverRoutes = ({ | ||
findUser: server_1.route | ||
.get | ||
.url("/:app/users/:id") | ||
exports.routes = ({ | ||
findUser: (0, http_1.queryFactory)("get") | ||
.url(`/:app/users/:id`) | ||
.queryType() | ||
.headersType() | ||
.returnType() | ||
.handler((args) => __awaiter(void 0, void 0, void 0, function* () { | ||
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () { | ||
const users = yield db | ||
.getAsync("usersReadonly", { | ||
filters: [ | ||
{ | ||
fieldName: "userId", | ||
operator: "equals", | ||
value: args.id | ||
}, | ||
{ | ||
fieldName: "app", | ||
operator: "equals", | ||
value: args.app | ||
} | ||
{ fieldName: "userId", operator: "equals", value: args.id }, | ||
{ fieldName: "app", operator: "equals", value: args.app } | ||
] | ||
@@ -95,10 +87,10 @@ }); | ||
throw `The requested resource could not be found but may be available in the future.`; | ||
// statusCodes.NOT_FOUND | ||
// statusCodes.NOT_FOUND) | ||
})), | ||
verify: server_1.route | ||
.post | ||
verify: (0, http_1.bodyFactory)("post") | ||
.url("/:app/verify") | ||
.bodyType() | ||
.headersType() | ||
.returnType() | ||
.handler((args) => __awaiter(void 0, void 0, void 0, function* () { | ||
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () { | ||
const { emailAddress, verificationCode, accessLevel } = args; | ||
@@ -121,8 +113,8 @@ const users = yield db.getAsync("users", { | ||
})), | ||
register: server_1.route | ||
.post | ||
register: (0, http_1.bodyFactory)("post") | ||
.url("/:app/register") | ||
.bodyType() | ||
.headersType() | ||
.returnType() | ||
.handler((args) => __awaiter(void 0, void 0, void 0, function* () { | ||
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () { | ||
console.log(`Starting user registration for ${(0, standard_1.stringify)(args)} in auth service`); | ||
@@ -146,8 +138,8 @@ try { | ||
})), | ||
authenticate: server_1.route | ||
.get | ||
authenticate: (0, http_1.queryFactory)("get") | ||
.url("/:app/authenticate") | ||
.queryType() | ||
.headersType() | ||
.returnType() | ||
.handler((args) => __awaiter(void 0, void 0, void 0, function* () { | ||
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () { | ||
// console.log(`Handling API repo Find with body ${stringify()}`) | ||
@@ -160,12 +152,12 @@ const user = yield db.extensions.auth.authenticateAsync({ email: String(args["email"]), pwd: String(args["pwd"]) }, args.app); | ||
})), | ||
deactivate: server_1.route | ||
.delete | ||
deactivate: (0, http_1.queryFactory)("delete") | ||
.url("/:app/deactivate/:id") | ||
.queryType() | ||
.headersType() | ||
.returnType() | ||
.handler((args) => __awaiter(void 0, void 0, void 0, function* () { | ||
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () { | ||
// console.log(`Handling API repo DELETE with entity = ${entity} and id = ${stringify(req.params.id)}`) | ||
return db | ||
.deleteAsync("users", args.id) | ||
.then(() => null) | ||
.then(() => ({})) | ||
.catch(err => { | ||
@@ -176,8 +168,8 @@ console.error(err); | ||
})), | ||
logResourceAccess: server_1.route | ||
.post | ||
logResourceAccess: (0, http_1.bodyFactory)("post") | ||
.url("/:app/res_access_counts") | ||
.bodyType() | ||
.headersType() | ||
.returnType() | ||
.handler((args) => __awaiter(void 0, void 0, void 0, function* () { | ||
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () { | ||
console.log(`Starting access logging for ${(0, standard_1.stringify)(args)}`); | ||
@@ -198,8 +190,8 @@ try { | ||
})), | ||
getResourceAccess: server_1.route | ||
.get | ||
getResourceAccess: (0, http_1.queryFactory)("get") | ||
.url("/:app/res_access_counts") | ||
.queryType() | ||
.headersType() | ||
.returnType() | ||
.handler((args) => __awaiter(void 0, void 0, void 0, function* () { | ||
.handler(() => (args) => __awaiter(void 0, void 0, void 0, function* () { | ||
// console.log(`Starting access logging for ${stringify(req.body)}`) | ||
@@ -232,8 +224,8 @@ try { | ||
})), | ||
default: server_1.route | ||
.get | ||
default: (0, http_1.queryFactory)("get") | ||
.url('/*') | ||
.queryType() | ||
.headersType() | ||
.returnType() | ||
.handler((args) => { | ||
.handler(() => (args) => { | ||
console.warn(`Handling unknown API route ${args.url}`); | ||
@@ -243,3 +235,4 @@ throw common_1.statusCodes.NOT_FOUND; | ||
}); | ||
(0, server_1.startServer)({ | ||
// const u = routes.findUser.proxyFactory("", {})({ app: "", id: "" }) | ||
(0, http_1.startServer)({ | ||
name: "auth", | ||
@@ -264,9 +257,10 @@ routes: [ | ||
// API | ||
exports.serverRoutes.register, | ||
exports.serverRoutes.verify, | ||
exports.serverRoutes.authenticate, | ||
exports.serverRoutes.deactivate, | ||
exports.serverRoutes.logResourceAccess, | ||
exports.routes.register, | ||
exports.routes.verify, | ||
exports.routes.authenticate, | ||
exports.routes.deactivate, | ||
exports.routes.logResourceAccess, | ||
], | ||
port: 49722 | ||
port: 49722, | ||
context: db | ||
}); | ||
@@ -319,2 +313,38 @@ // start server | ||
*/ | ||
/*export const proxies = { | ||
findUser: queryProxyFactory("get") | ||
.url(`/:app/users/:id`) | ||
.queryType<ObjEmpty>() | ||
.returnType<User>(), | ||
verify: queryRouteFactoryFluent("post") | ||
.url("/:app/verify") | ||
.bodyType<{ emailAddress: string, verificationCode: string, accessLevel: UserAccessLevel }>() | ||
.returnType<User>(), | ||
register: bodyProxyFactory("post") | ||
.url("/:app/register") | ||
.bodyType<User & { password?: string | undefined; verificationCode: string }>() | ||
.returnType<User>(), | ||
authenticate: queryProxyFactory("get") | ||
.url("/:app/authenticate") | ||
.headersType<{ email: string, pwd: string }>() | ||
.returnType<User>(), | ||
deactivate: queryProxyFactory("delete") | ||
.url("/:app/deactivate/:id") | ||
.queryType<Obj<never>>() | ||
.returnType<null>(), | ||
logResourceAccess: bodyProxyFactory("post") | ||
.url("/:app/res_access_counts") | ||
.bodyType<{ userId: string, resourceCode: string, resourceType: string }>() | ||
.returnType<ResourceAccessCount>(), | ||
getResourceAccess: queryProxyFactory("get") | ||
.url("/:app/res_access_counts") | ||
.queryType<{ user_id: string, resource_code: string }>() | ||
.returnType<ResourceAccessCount[]>() | ||
}*/ | ||
/*const prx = routes.verify[3] | ||
@@ -321,0 +351,0 @@ const x = prx("auth.com/:cat/api")({ |
73872
1659
Updated@agyemanjp/http@^0.1.35
Updated@agyemanjp/standard@^4.0.3