dn-react-router-toolkit 0.4.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/create_api_handler.d.mts +28 -0
- package/dist/api/create_api_handler.d.ts +28 -0
- package/dist/api/create_api_handler.js +148 -0
- package/dist/api/create_api_handler.mjs +132 -0
- package/dist/api/create_handler.d.mts +1 -1
- package/dist/api/create_handler.d.ts +1 -1
- package/dist/api/create_handler.js +27 -25
- package/dist/api/create_handler.mjs +27 -25
- package/dist/api/index.js +27 -25
- package/dist/api/index.mjs +27 -25
- package/dist/api/item_api_handler.d.mts +18 -0
- package/dist/api/item_api_handler.d.ts +18 -0
- package/dist/api/item_api_handler.js +55 -0
- package/dist/api/item_api_handler.mjs +30 -0
- package/dist/auth/index.d.mts +1 -2
- package/dist/auth/index.d.ts +1 -2
- package/dist/auth/index.js +13 -21
- package/dist/auth/index.mjs +12 -20
- package/dist/auth/with_auth.d.mts +3 -3
- package/dist/auth/with_auth.d.ts +3 -3
- package/dist/auth/with_auth.js +13 -21
- package/dist/auth/with_auth.mjs +12 -20
- package/dist/crud/crud_form.d.mts +13 -0
- package/dist/crud/crud_form.d.ts +13 -0
- package/dist/crud/crud_form.js +88 -0
- package/dist/crud/crud_form.mjs +55 -0
- package/dist/crud/crud_form_provider.d.mts +34 -0
- package/dist/crud/crud_form_provider.d.ts +34 -0
- package/dist/crud/crud_form_provider.js +160 -0
- package/dist/crud/crud_form_provider.mjs +124 -0
- package/dist/crud/crud_loader.d.mts +21 -0
- package/dist/crud/crud_loader.d.ts +21 -0
- package/dist/crud/crud_loader.js +288 -0
- package/dist/crud/crud_loader.mjs +273 -0
- package/dist/crud/crud_page.d.mts +25 -0
- package/dist/crud/crud_page.d.ts +25 -0
- package/dist/crud/crud_page.js +645 -0
- package/dist/crud/crud_page.mjs +616 -0
- package/dist/crud/generate_handlers.d.mts +15 -0
- package/dist/crud/generate_handlers.d.ts +15 -0
- package/dist/crud/generate_handlers.js +39 -0
- package/dist/crud/generate_handlers.mjs +14 -0
- package/dist/crud/generate_pages.d.mts +11 -0
- package/dist/crud/generate_pages.d.ts +11 -0
- package/dist/crud/generate_pages.js +52 -0
- package/dist/crud/generate_pages.mjs +17 -0
- package/dist/crud/generate_routes.d.mts +5 -0
- package/dist/crud/generate_routes.d.ts +5 -0
- package/dist/crud/generate_routes.js +62 -0
- package/dist/crud/generate_routes.mjs +27 -0
- package/dist/crud/index.d.mts +21 -0
- package/dist/crud/index.d.ts +21 -0
- package/dist/crud/index.js +970 -0
- package/dist/crud/index.mjs +945 -0
- package/dist/db/index.d.mts +4 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.js +46 -0
- package/dist/db/index.mjs +8 -0
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/table/buttons.d.mts +10 -0
- package/dist/table/buttons.d.ts +10 -0
- package/dist/table/buttons.js +102 -0
- package/dist/table/buttons.mjs +71 -0
- package/dist/table/index.d.mts +9 -0
- package/dist/table/index.d.ts +9 -0
- package/dist/table/index.js +570 -0
- package/dist/table/index.mjs +543 -0
- package/dist/table/item_loader.d.mts +12 -0
- package/dist/table/item_loader.d.ts +12 -0
- package/dist/table/item_loader.js +51 -0
- package/dist/table/item_loader.mjs +26 -0
- package/dist/table/loader.d.mts +28 -0
- package/dist/table/loader.d.ts +28 -0
- package/dist/table/loader.js +70 -0
- package/dist/table/loader.mjs +48 -0
- package/dist/table/page.d.mts +27 -0
- package/dist/table/page.d.ts +27 -0
- package/dist/table/page.js +444 -0
- package/dist/table/page.mjs +415 -0
- package/dist/table/repository.d.mts +38 -0
- package/dist/table/repository.d.ts +38 -0
- package/dist/table/repository.js +76 -0
- package/dist/table/repository.mjs +56 -0
- package/dist/table/table.d.mts +27 -0
- package/dist/table/table.d.ts +27 -0
- package/dist/table/table.js +290 -0
- package/dist/table/table.mjs +255 -0
- package/package.json +21 -3
- package/dist/auth/temp_user.d.mts +0 -5
- package/dist/auth/temp_user.d.ts +0 -5
- package/dist/auth/temp_user.js +0 -18
- package/dist/auth/temp_user.mjs +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Table, InferInsertModel, SQLWrapper } from 'drizzle-orm';
|
|
2
|
+
import { ActionFunctionArgs, LoaderFunctionArgs } from 'react-router';
|
|
3
|
+
import { TableRepository } from '../table/repository.mjs';
|
|
4
|
+
import { WithAuthHandler } from '../auth/with_auth.mjs';
|
|
5
|
+
import 'drizzle-orm/pg-core';
|
|
6
|
+
import 'dn-react-toolkit/auth';
|
|
7
|
+
import 'dn-react-toolkit/auth/server';
|
|
8
|
+
|
|
9
|
+
type APIHandlerOptions<T extends Table, TSelect> = {
|
|
10
|
+
withAuthAction: WithAuthHandler<ActionFunctionArgs>;
|
|
11
|
+
repository: TableRepository<T, TSelect>;
|
|
12
|
+
validators?: {
|
|
13
|
+
[K in keyof InferInsertModel<T>]?: {
|
|
14
|
+
validate?: (value?: InferInsertModel<T>[K]) => boolean;
|
|
15
|
+
message?: (value?: InferInsertModel<T>[K]) => string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
existingConditions: {
|
|
19
|
+
[K in keyof InferInsertModel<T>]?: (value: InferInsertModel<T>[K]) => SQLWrapper;
|
|
20
|
+
};
|
|
21
|
+
injectUserId?: boolean;
|
|
22
|
+
};
|
|
23
|
+
declare function apiHandler<T extends Table, TSelect>({ withAuthAction, repository, validators, existingConditions, injectUserId, }: APIHandlerOptions<T, TSelect>): {
|
|
24
|
+
loader: ({ request }: LoaderFunctionArgs) => Promise<{}>;
|
|
25
|
+
action: (arg: ActionFunctionArgs<any>) => Promise<unknown> | unknown;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { type APIHandlerOptions, apiHandler };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Table, InferInsertModel, SQLWrapper } from 'drizzle-orm';
|
|
2
|
+
import { ActionFunctionArgs, LoaderFunctionArgs } from 'react-router';
|
|
3
|
+
import { TableRepository } from '../table/repository.js';
|
|
4
|
+
import { WithAuthHandler } from '../auth/with_auth.js';
|
|
5
|
+
import 'drizzle-orm/pg-core';
|
|
6
|
+
import 'dn-react-toolkit/auth';
|
|
7
|
+
import 'dn-react-toolkit/auth/server';
|
|
8
|
+
|
|
9
|
+
type APIHandlerOptions<T extends Table, TSelect> = {
|
|
10
|
+
withAuthAction: WithAuthHandler<ActionFunctionArgs>;
|
|
11
|
+
repository: TableRepository<T, TSelect>;
|
|
12
|
+
validators?: {
|
|
13
|
+
[K in keyof InferInsertModel<T>]?: {
|
|
14
|
+
validate?: (value?: InferInsertModel<T>[K]) => boolean;
|
|
15
|
+
message?: (value?: InferInsertModel<T>[K]) => string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
existingConditions: {
|
|
19
|
+
[K in keyof InferInsertModel<T>]?: (value: InferInsertModel<T>[K]) => SQLWrapper;
|
|
20
|
+
};
|
|
21
|
+
injectUserId?: boolean;
|
|
22
|
+
};
|
|
23
|
+
declare function apiHandler<T extends Table, TSelect>({ withAuthAction, repository, validators, existingConditions, injectUserId, }: APIHandlerOptions<T, TSelect>): {
|
|
24
|
+
loader: ({ request }: LoaderFunctionArgs) => Promise<{}>;
|
|
25
|
+
action: (arg: ActionFunctionArgs<any>) => Promise<unknown> | unknown;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { type APIHandlerOptions, apiHandler };
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/api/create_api_handler.ts
|
|
21
|
+
var create_api_handler_exports = {};
|
|
22
|
+
__export(create_api_handler_exports, {
|
|
23
|
+
apiHandler: () => apiHandler
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(create_api_handler_exports);
|
|
26
|
+
var import_http = require("dn-react-toolkit/http");
|
|
27
|
+
var import_drizzle_orm = require("drizzle-orm");
|
|
28
|
+
var import_react_router = require("react-router");
|
|
29
|
+
var import_uuid = require("uuid");
|
|
30
|
+
function apiHandler({
|
|
31
|
+
withAuthAction,
|
|
32
|
+
repository,
|
|
33
|
+
validators,
|
|
34
|
+
existingConditions,
|
|
35
|
+
injectUserId
|
|
36
|
+
}) {
|
|
37
|
+
const loader = async ({ request }) => {
|
|
38
|
+
return {};
|
|
39
|
+
};
|
|
40
|
+
const action = withAuthAction((auth) => async ({ request }) => {
|
|
41
|
+
if (!auth || auth.role !== "admin") {
|
|
42
|
+
return (0, import_react_router.redirect)("/login");
|
|
43
|
+
}
|
|
44
|
+
switch (request.method) {
|
|
45
|
+
case "POST":
|
|
46
|
+
case "PUT": {
|
|
47
|
+
const serilaizedParams = await request.json();
|
|
48
|
+
const params = Object.entries(serilaizedParams).reduce(
|
|
49
|
+
function reducer(acc, [key, value]) {
|
|
50
|
+
const converter = (value2) => {
|
|
51
|
+
if (value2.type === "null") {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
if (value2.type === "string") {
|
|
55
|
+
return value2.value;
|
|
56
|
+
}
|
|
57
|
+
if (value2.type === "number") {
|
|
58
|
+
return value2.value;
|
|
59
|
+
}
|
|
60
|
+
if (value2.type === "boolean") {
|
|
61
|
+
return value2.value;
|
|
62
|
+
}
|
|
63
|
+
if (value2.type === "date") {
|
|
64
|
+
return new Date(value2.value);
|
|
65
|
+
}
|
|
66
|
+
if (Array.isArray(value2)) {
|
|
67
|
+
return value2.map((v) => converter(v));
|
|
68
|
+
}
|
|
69
|
+
if (typeof value2 === "object") {
|
|
70
|
+
return Object.entries(value2).reduce(
|
|
71
|
+
reducer,
|
|
72
|
+
{}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const result = converter(value);
|
|
77
|
+
if (result === void 0) {
|
|
78
|
+
return acc;
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
...acc,
|
|
82
|
+
[key]: result
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
{}
|
|
86
|
+
);
|
|
87
|
+
if (validators) {
|
|
88
|
+
const paramsForValidation = Object.keys(validators).filter(
|
|
89
|
+
(key) => Object.prototype.hasOwnProperty.call(
|
|
90
|
+
validators,
|
|
91
|
+
key
|
|
92
|
+
)
|
|
93
|
+
);
|
|
94
|
+
for (const paramKey of paramsForValidation) {
|
|
95
|
+
const value = params[paramKey];
|
|
96
|
+
const validator = validators[paramKey];
|
|
97
|
+
if (validator?.validate && !validator.validate(value)) {
|
|
98
|
+
throw (0, import_http.BAD_REQUEST)(
|
|
99
|
+
validator.message ? validator.message(value) : void 0
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const itemId = params.id || (0, import_uuid.v4)();
|
|
105
|
+
if (!params.id && existingConditions) {
|
|
106
|
+
const paramsForExistenceCheck = Object.keys(
|
|
107
|
+
existingConditions
|
|
108
|
+
).filter(
|
|
109
|
+
(key) => Object.prototype.hasOwnProperty.call(params, key)
|
|
110
|
+
);
|
|
111
|
+
const where = (0, import_drizzle_orm.and)(
|
|
112
|
+
...paramsForExistenceCheck.reduce((acc, key) => {
|
|
113
|
+
const condition = existingConditions[key];
|
|
114
|
+
if (condition) {
|
|
115
|
+
acc.push(condition(params[key]));
|
|
116
|
+
}
|
|
117
|
+
return acc;
|
|
118
|
+
}, [])
|
|
119
|
+
);
|
|
120
|
+
const existing = await repository.findAll({
|
|
121
|
+
limit: 1,
|
|
122
|
+
where
|
|
123
|
+
});
|
|
124
|
+
if (existing.length > 0) {
|
|
125
|
+
throw (0, import_http.CONFLICT)("\uC790\uB8CC\uAC00 \uC774\uBBF8 \uC874\uC7AC\uD569\uB2C8\uB2E4.");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const values = {
|
|
129
|
+
id: itemId,
|
|
130
|
+
userId: injectUserId ? auth.userId : void 0,
|
|
131
|
+
...params
|
|
132
|
+
};
|
|
133
|
+
const item = await repository.save(values);
|
|
134
|
+
return (0, import_http.CREATED)(item);
|
|
135
|
+
}
|
|
136
|
+
default:
|
|
137
|
+
throw (0, import_http.METHOD_NOT_ALLOWED)();
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
return {
|
|
141
|
+
loader,
|
|
142
|
+
action
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
146
|
+
0 && (module.exports = {
|
|
147
|
+
apiHandler
|
|
148
|
+
});
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// src/api/create_api_handler.ts
|
|
2
|
+
import {
|
|
3
|
+
BAD_REQUEST,
|
|
4
|
+
CONFLICT,
|
|
5
|
+
CREATED,
|
|
6
|
+
METHOD_NOT_ALLOWED
|
|
7
|
+
} from "dn-react-toolkit/http";
|
|
8
|
+
import {
|
|
9
|
+
and
|
|
10
|
+
} from "drizzle-orm";
|
|
11
|
+
import {
|
|
12
|
+
redirect
|
|
13
|
+
} from "react-router";
|
|
14
|
+
import { v4 } from "uuid";
|
|
15
|
+
function apiHandler({
|
|
16
|
+
withAuthAction,
|
|
17
|
+
repository,
|
|
18
|
+
validators,
|
|
19
|
+
existingConditions,
|
|
20
|
+
injectUserId
|
|
21
|
+
}) {
|
|
22
|
+
const loader = async ({ request }) => {
|
|
23
|
+
return {};
|
|
24
|
+
};
|
|
25
|
+
const action = withAuthAction((auth) => async ({ request }) => {
|
|
26
|
+
if (!auth || auth.role !== "admin") {
|
|
27
|
+
return redirect("/login");
|
|
28
|
+
}
|
|
29
|
+
switch (request.method) {
|
|
30
|
+
case "POST":
|
|
31
|
+
case "PUT": {
|
|
32
|
+
const serilaizedParams = await request.json();
|
|
33
|
+
const params = Object.entries(serilaizedParams).reduce(
|
|
34
|
+
function reducer(acc, [key, value]) {
|
|
35
|
+
const converter = (value2) => {
|
|
36
|
+
if (value2.type === "null") {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
if (value2.type === "string") {
|
|
40
|
+
return value2.value;
|
|
41
|
+
}
|
|
42
|
+
if (value2.type === "number") {
|
|
43
|
+
return value2.value;
|
|
44
|
+
}
|
|
45
|
+
if (value2.type === "boolean") {
|
|
46
|
+
return value2.value;
|
|
47
|
+
}
|
|
48
|
+
if (value2.type === "date") {
|
|
49
|
+
return new Date(value2.value);
|
|
50
|
+
}
|
|
51
|
+
if (Array.isArray(value2)) {
|
|
52
|
+
return value2.map((v) => converter(v));
|
|
53
|
+
}
|
|
54
|
+
if (typeof value2 === "object") {
|
|
55
|
+
return Object.entries(value2).reduce(
|
|
56
|
+
reducer,
|
|
57
|
+
{}
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const result = converter(value);
|
|
62
|
+
if (result === void 0) {
|
|
63
|
+
return acc;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
...acc,
|
|
67
|
+
[key]: result
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
{}
|
|
71
|
+
);
|
|
72
|
+
if (validators) {
|
|
73
|
+
const paramsForValidation = Object.keys(validators).filter(
|
|
74
|
+
(key) => Object.prototype.hasOwnProperty.call(
|
|
75
|
+
validators,
|
|
76
|
+
key
|
|
77
|
+
)
|
|
78
|
+
);
|
|
79
|
+
for (const paramKey of paramsForValidation) {
|
|
80
|
+
const value = params[paramKey];
|
|
81
|
+
const validator = validators[paramKey];
|
|
82
|
+
if (validator?.validate && !validator.validate(value)) {
|
|
83
|
+
throw BAD_REQUEST(
|
|
84
|
+
validator.message ? validator.message(value) : void 0
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const itemId = params.id || v4();
|
|
90
|
+
if (!params.id && existingConditions) {
|
|
91
|
+
const paramsForExistenceCheck = Object.keys(
|
|
92
|
+
existingConditions
|
|
93
|
+
).filter(
|
|
94
|
+
(key) => Object.prototype.hasOwnProperty.call(params, key)
|
|
95
|
+
);
|
|
96
|
+
const where = and(
|
|
97
|
+
...paramsForExistenceCheck.reduce((acc, key) => {
|
|
98
|
+
const condition = existingConditions[key];
|
|
99
|
+
if (condition) {
|
|
100
|
+
acc.push(condition(params[key]));
|
|
101
|
+
}
|
|
102
|
+
return acc;
|
|
103
|
+
}, [])
|
|
104
|
+
);
|
|
105
|
+
const existing = await repository.findAll({
|
|
106
|
+
limit: 1,
|
|
107
|
+
where
|
|
108
|
+
});
|
|
109
|
+
if (existing.length > 0) {
|
|
110
|
+
throw CONFLICT("\uC790\uB8CC\uAC00 \uC774\uBBF8 \uC874\uC7AC\uD569\uB2C8\uB2E4.");
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const values = {
|
|
114
|
+
id: itemId,
|
|
115
|
+
userId: injectUserId ? auth.userId : void 0,
|
|
116
|
+
...params
|
|
117
|
+
};
|
|
118
|
+
const item = await repository.save(values);
|
|
119
|
+
return CREATED(item);
|
|
120
|
+
}
|
|
121
|
+
default:
|
|
122
|
+
throw METHOD_NOT_ALLOWED();
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
loader,
|
|
127
|
+
action
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export {
|
|
131
|
+
apiHandler
|
|
132
|
+
};
|
|
@@ -8,6 +8,6 @@ declare const createAPIHandler: <TFile>({ authService, fileService, passwordReco
|
|
|
8
8
|
passwordRecoveryService: PasswordRecoveryService;
|
|
9
9
|
getThirdPartyAuth: (provider: string) => ThirdpartyAuth;
|
|
10
10
|
signupTokenManager: JWTManager<ThirdpartySignupTokenPayload>;
|
|
11
|
-
}) => (args: LoaderFunctionArgs | ActionFunctionArgs) => Promise<(({ request }:
|
|
11
|
+
}) => (args: LoaderFunctionArgs | ActionFunctionArgs) => Promise<Response | (({ request }: ActionFunctionArgs<any> | LoaderFunctionArgs<any>) => Promise<Response>)>;
|
|
12
12
|
|
|
13
13
|
export { createAPIHandler };
|
|
@@ -8,6 +8,6 @@ declare const createAPIHandler: <TFile>({ authService, fileService, passwordReco
|
|
|
8
8
|
passwordRecoveryService: PasswordRecoveryService;
|
|
9
9
|
getThirdPartyAuth: (provider: string) => ThirdpartyAuth;
|
|
10
10
|
signupTokenManager: JWTManager<ThirdpartySignupTokenPayload>;
|
|
11
|
-
}) => (args: LoaderFunctionArgs | ActionFunctionArgs) => Promise<(({ request }:
|
|
11
|
+
}) => (args: LoaderFunctionArgs | ActionFunctionArgs) => Promise<Response | (({ request }: ActionFunctionArgs<any> | LoaderFunctionArgs<any>) => Promise<Response>)>;
|
|
12
12
|
|
|
13
13
|
export { createAPIHandler };
|
|
@@ -34,7 +34,7 @@ var toResponse = (result) => {
|
|
|
34
34
|
}
|
|
35
35
|
return Response.json(result);
|
|
36
36
|
};
|
|
37
|
-
function
|
|
37
|
+
function createWithStrictAuthHandler({ authService }) {
|
|
38
38
|
return function(fn) {
|
|
39
39
|
const handler = async function(arg) {
|
|
40
40
|
const respond = async (auth, headers = new Headers()) => {
|
|
@@ -51,9 +51,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
51
51
|
arg.request
|
|
52
52
|
);
|
|
53
53
|
if (accessToken) {
|
|
54
|
-
const payload = await authService.accessTokenManager.verify(
|
|
55
|
-
accessToken
|
|
56
|
-
);
|
|
54
|
+
const payload = await authService.accessTokenManager.verify(accessToken);
|
|
57
55
|
if (payload) {
|
|
58
56
|
return respond(payload);
|
|
59
57
|
}
|
|
@@ -63,23 +61,17 @@ function createWithAuthHandler({ authService }) {
|
|
|
63
61
|
);
|
|
64
62
|
if (refreshToken) {
|
|
65
63
|
try {
|
|
66
|
-
const newAccessToken = await authService.refreshAccessToken(
|
|
67
|
-
refreshToken
|
|
68
|
-
);
|
|
64
|
+
const newAccessToken = await authService.refreshAccessToken(refreshToken);
|
|
69
65
|
const setCookieHeader = await authService.getAccessTokenSetCookie(
|
|
70
66
|
newAccessToken
|
|
71
67
|
);
|
|
72
68
|
const headers = new Headers();
|
|
73
69
|
headers.append("Set-Cookie", setCookieHeader);
|
|
74
|
-
const payload = authService.accessTokenManager.decode(
|
|
75
|
-
newAccessToken
|
|
76
|
-
);
|
|
70
|
+
const payload = authService.accessTokenManager.decode(newAccessToken);
|
|
77
71
|
return respond(payload, headers);
|
|
78
72
|
} catch (e) {
|
|
79
73
|
console.log(e);
|
|
80
|
-
const setCookieHeader = await authService.getRefreshTokenSetCookie(
|
|
81
|
-
null
|
|
82
|
-
);
|
|
74
|
+
const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
|
|
83
75
|
const headers = new Headers();
|
|
84
76
|
headers.append("Set-Cookie", setCookieHeader);
|
|
85
77
|
return respond(void 0, headers);
|
|
@@ -107,7 +99,7 @@ var createAPIHandler = ({
|
|
|
107
99
|
const { request, params } = args;
|
|
108
100
|
const method = request.method.toUpperCase();
|
|
109
101
|
const slug = params["*"] ? params["*"].split("/") : [];
|
|
110
|
-
const withAuth =
|
|
102
|
+
const withAuth = createWithStrictAuthHandler({ authService });
|
|
111
103
|
switch (slug[0]) {
|
|
112
104
|
case "auth": {
|
|
113
105
|
switch (slug[1]) {
|
|
@@ -135,10 +127,13 @@ var createAPIHandler = ({
|
|
|
135
127
|
const provider = slug[2];
|
|
136
128
|
switch (method) {
|
|
137
129
|
case "POST": {
|
|
138
|
-
return (0, import_server.loginWithThirdPartyHandler)(
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
130
|
+
return (0, import_server.loginWithThirdPartyHandler)(
|
|
131
|
+
request,
|
|
132
|
+
{
|
|
133
|
+
provider,
|
|
134
|
+
getThirdPartyAuth
|
|
135
|
+
}
|
|
136
|
+
);
|
|
142
137
|
}
|
|
143
138
|
}
|
|
144
139
|
}
|
|
@@ -177,11 +172,14 @@ var createAPIHandler = ({
|
|
|
177
172
|
default: {
|
|
178
173
|
switch (method) {
|
|
179
174
|
case "POST": {
|
|
180
|
-
return (0, import_server.signUpWithThirdpartyHandler)(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
175
|
+
return (0, import_server.signUpWithThirdpartyHandler)(
|
|
176
|
+
request,
|
|
177
|
+
{
|
|
178
|
+
authService,
|
|
179
|
+
fileService,
|
|
180
|
+
signupTokenManager
|
|
181
|
+
}
|
|
182
|
+
);
|
|
185
183
|
}
|
|
186
184
|
}
|
|
187
185
|
}
|
|
@@ -205,7 +203,9 @@ var createAPIHandler = ({
|
|
|
205
203
|
});
|
|
206
204
|
}
|
|
207
205
|
case "reset-password": {
|
|
208
|
-
return (0, import_server.resetPasswordHandler)(request, {
|
|
206
|
+
return (0, import_server.resetPasswordHandler)(request, {
|
|
207
|
+
passwordRecoveryService
|
|
208
|
+
});
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
}
|
|
@@ -215,7 +215,9 @@ var createAPIHandler = ({
|
|
|
215
215
|
switch (method) {
|
|
216
216
|
case "POST": {
|
|
217
217
|
return withAuth(
|
|
218
|
-
(auth) => ({ request: request2 }) => (0, import_server2.uploadFileHandler)({ fileService })(
|
|
218
|
+
(auth) => ({ request: request2 }) => (0, import_server2.uploadFileHandler)({ fileService })(
|
|
219
|
+
auth
|
|
220
|
+
)(request2)
|
|
219
221
|
)(args);
|
|
220
222
|
}
|
|
221
223
|
}
|
|
@@ -21,7 +21,7 @@ var toResponse = (result) => {
|
|
|
21
21
|
}
|
|
22
22
|
return Response.json(result);
|
|
23
23
|
};
|
|
24
|
-
function
|
|
24
|
+
function createWithStrictAuthHandler({ authService }) {
|
|
25
25
|
return function(fn) {
|
|
26
26
|
const handler = async function(arg) {
|
|
27
27
|
const respond = async (auth, headers = new Headers()) => {
|
|
@@ -38,9 +38,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
38
38
|
arg.request
|
|
39
39
|
);
|
|
40
40
|
if (accessToken) {
|
|
41
|
-
const payload = await authService.accessTokenManager.verify(
|
|
42
|
-
accessToken
|
|
43
|
-
);
|
|
41
|
+
const payload = await authService.accessTokenManager.verify(accessToken);
|
|
44
42
|
if (payload) {
|
|
45
43
|
return respond(payload);
|
|
46
44
|
}
|
|
@@ -50,23 +48,17 @@ function createWithAuthHandler({ authService }) {
|
|
|
50
48
|
);
|
|
51
49
|
if (refreshToken) {
|
|
52
50
|
try {
|
|
53
|
-
const newAccessToken = await authService.refreshAccessToken(
|
|
54
|
-
refreshToken
|
|
55
|
-
);
|
|
51
|
+
const newAccessToken = await authService.refreshAccessToken(refreshToken);
|
|
56
52
|
const setCookieHeader = await authService.getAccessTokenSetCookie(
|
|
57
53
|
newAccessToken
|
|
58
54
|
);
|
|
59
55
|
const headers = new Headers();
|
|
60
56
|
headers.append("Set-Cookie", setCookieHeader);
|
|
61
|
-
const payload = authService.accessTokenManager.decode(
|
|
62
|
-
newAccessToken
|
|
63
|
-
);
|
|
57
|
+
const payload = authService.accessTokenManager.decode(newAccessToken);
|
|
64
58
|
return respond(payload, headers);
|
|
65
59
|
} catch (e) {
|
|
66
60
|
console.log(e);
|
|
67
|
-
const setCookieHeader = await authService.getRefreshTokenSetCookie(
|
|
68
|
-
null
|
|
69
|
-
);
|
|
61
|
+
const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
|
|
70
62
|
const headers = new Headers();
|
|
71
63
|
headers.append("Set-Cookie", setCookieHeader);
|
|
72
64
|
return respond(void 0, headers);
|
|
@@ -97,7 +89,7 @@ var createAPIHandler = ({
|
|
|
97
89
|
const { request, params } = args;
|
|
98
90
|
const method = request.method.toUpperCase();
|
|
99
91
|
const slug = params["*"] ? params["*"].split("/") : [];
|
|
100
|
-
const withAuth =
|
|
92
|
+
const withAuth = createWithStrictAuthHandler({ authService });
|
|
101
93
|
switch (slug[0]) {
|
|
102
94
|
case "auth": {
|
|
103
95
|
switch (slug[1]) {
|
|
@@ -125,10 +117,13 @@ var createAPIHandler = ({
|
|
|
125
117
|
const provider = slug[2];
|
|
126
118
|
switch (method) {
|
|
127
119
|
case "POST": {
|
|
128
|
-
return loginWithThirdPartyHandler(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
120
|
+
return loginWithThirdPartyHandler(
|
|
121
|
+
request,
|
|
122
|
+
{
|
|
123
|
+
provider,
|
|
124
|
+
getThirdPartyAuth
|
|
125
|
+
}
|
|
126
|
+
);
|
|
132
127
|
}
|
|
133
128
|
}
|
|
134
129
|
}
|
|
@@ -167,11 +162,14 @@ var createAPIHandler = ({
|
|
|
167
162
|
default: {
|
|
168
163
|
switch (method) {
|
|
169
164
|
case "POST": {
|
|
170
|
-
return signUpWithThirdpartyHandler(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
165
|
+
return signUpWithThirdpartyHandler(
|
|
166
|
+
request,
|
|
167
|
+
{
|
|
168
|
+
authService,
|
|
169
|
+
fileService,
|
|
170
|
+
signupTokenManager
|
|
171
|
+
}
|
|
172
|
+
);
|
|
175
173
|
}
|
|
176
174
|
}
|
|
177
175
|
}
|
|
@@ -195,7 +193,9 @@ var createAPIHandler = ({
|
|
|
195
193
|
});
|
|
196
194
|
}
|
|
197
195
|
case "reset-password": {
|
|
198
|
-
return resetPasswordHandler(request, {
|
|
196
|
+
return resetPasswordHandler(request, {
|
|
197
|
+
passwordRecoveryService
|
|
198
|
+
});
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
}
|
|
@@ -205,7 +205,9 @@ var createAPIHandler = ({
|
|
|
205
205
|
switch (method) {
|
|
206
206
|
case "POST": {
|
|
207
207
|
return withAuth(
|
|
208
|
-
(auth) => ({ request: request2 }) => uploadFileHandler({ fileService })(
|
|
208
|
+
(auth) => ({ request: request2 }) => uploadFileHandler({ fileService })(
|
|
209
|
+
auth
|
|
210
|
+
)(request2)
|
|
209
211
|
)(args);
|
|
210
212
|
}
|
|
211
213
|
}
|