dn-react-router-toolkit 0.4.2 → 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 +29 -26
- package/dist/api/create_handler.mjs +29 -26
- package/dist/api/index.js +29 -26
- package/dist/api/index.mjs +29 -26
- 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 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.js +62 -16
- package/dist/auth/index.mjs +60 -15
- package/dist/auth/with_auth.d.mts +8 -3
- package/dist/auth/with_auth.d.ts +8 -3
- package/dist/auth/with_auth.js +62 -16
- package/dist/auth/with_auth.mjs +60 -15
- 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 +78 -59
package/dist/api/index.js
CHANGED
|
@@ -29,13 +29,14 @@ var import_http = require("dn-react-toolkit/http");
|
|
|
29
29
|
var import_server = require("dn-react-toolkit/auth/server");
|
|
30
30
|
|
|
31
31
|
// src/auth/with_auth.ts
|
|
32
|
+
var import_uuid = require("uuid");
|
|
32
33
|
var toResponse = (result) => {
|
|
33
34
|
if (result instanceof Response) {
|
|
34
35
|
return result;
|
|
35
36
|
}
|
|
36
37
|
return Response.json(result);
|
|
37
38
|
};
|
|
38
|
-
function
|
|
39
|
+
function createWithStrictAuthHandler({ authService }) {
|
|
39
40
|
return function(fn) {
|
|
40
41
|
const handler = async function(arg) {
|
|
41
42
|
const respond = async (auth, headers = new Headers()) => {
|
|
@@ -44,7 +45,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
44
45
|
};
|
|
45
46
|
const setHeader = (res, headers) => {
|
|
46
47
|
headers.forEach((value, key) => {
|
|
47
|
-
res.headers.
|
|
48
|
+
res.headers.append(key, value);
|
|
48
49
|
});
|
|
49
50
|
return res;
|
|
50
51
|
};
|
|
@@ -52,9 +53,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
52
53
|
arg.request
|
|
53
54
|
);
|
|
54
55
|
if (accessToken) {
|
|
55
|
-
const payload = await authService.accessTokenManager.verify(
|
|
56
|
-
accessToken
|
|
57
|
-
);
|
|
56
|
+
const payload = await authService.accessTokenManager.verify(accessToken);
|
|
58
57
|
if (payload) {
|
|
59
58
|
return respond(payload);
|
|
60
59
|
}
|
|
@@ -64,23 +63,17 @@ function createWithAuthHandler({ authService }) {
|
|
|
64
63
|
);
|
|
65
64
|
if (refreshToken) {
|
|
66
65
|
try {
|
|
67
|
-
const newAccessToken = await authService.refreshAccessToken(
|
|
68
|
-
refreshToken
|
|
69
|
-
);
|
|
66
|
+
const newAccessToken = await authService.refreshAccessToken(refreshToken);
|
|
70
67
|
const setCookieHeader = await authService.getAccessTokenSetCookie(
|
|
71
68
|
newAccessToken
|
|
72
69
|
);
|
|
73
70
|
const headers = new Headers();
|
|
74
71
|
headers.append("Set-Cookie", setCookieHeader);
|
|
75
|
-
const payload = authService.accessTokenManager.decode(
|
|
76
|
-
newAccessToken
|
|
77
|
-
);
|
|
72
|
+
const payload = authService.accessTokenManager.decode(newAccessToken);
|
|
78
73
|
return respond(payload, headers);
|
|
79
74
|
} catch (e) {
|
|
80
75
|
console.log(e);
|
|
81
|
-
const setCookieHeader = await authService.getRefreshTokenSetCookie(
|
|
82
|
-
null
|
|
83
|
-
);
|
|
76
|
+
const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
|
|
84
77
|
const headers = new Headers();
|
|
85
78
|
headers.append("Set-Cookie", setCookieHeader);
|
|
86
79
|
return respond(void 0, headers);
|
|
@@ -108,7 +101,7 @@ var createAPIHandler = ({
|
|
|
108
101
|
const { request, params } = args;
|
|
109
102
|
const method = request.method.toUpperCase();
|
|
110
103
|
const slug = params["*"] ? params["*"].split("/") : [];
|
|
111
|
-
const withAuth =
|
|
104
|
+
const withAuth = createWithStrictAuthHandler({ authService });
|
|
112
105
|
switch (slug[0]) {
|
|
113
106
|
case "auth": {
|
|
114
107
|
switch (slug[1]) {
|
|
@@ -136,10 +129,13 @@ var createAPIHandler = ({
|
|
|
136
129
|
const provider = slug[2];
|
|
137
130
|
switch (method) {
|
|
138
131
|
case "POST": {
|
|
139
|
-
return (0, import_server.loginWithThirdPartyHandler)(
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
132
|
+
return (0, import_server.loginWithThirdPartyHandler)(
|
|
133
|
+
request,
|
|
134
|
+
{
|
|
135
|
+
provider,
|
|
136
|
+
getThirdPartyAuth
|
|
137
|
+
}
|
|
138
|
+
);
|
|
143
139
|
}
|
|
144
140
|
}
|
|
145
141
|
}
|
|
@@ -178,11 +174,14 @@ var createAPIHandler = ({
|
|
|
178
174
|
default: {
|
|
179
175
|
switch (method) {
|
|
180
176
|
case "POST": {
|
|
181
|
-
return (0, import_server.signUpWithThirdpartyHandler)(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
177
|
+
return (0, import_server.signUpWithThirdpartyHandler)(
|
|
178
|
+
request,
|
|
179
|
+
{
|
|
180
|
+
authService,
|
|
181
|
+
fileService,
|
|
182
|
+
signupTokenManager
|
|
183
|
+
}
|
|
184
|
+
);
|
|
186
185
|
}
|
|
187
186
|
}
|
|
188
187
|
}
|
|
@@ -206,7 +205,9 @@ var createAPIHandler = ({
|
|
|
206
205
|
});
|
|
207
206
|
}
|
|
208
207
|
case "reset-password": {
|
|
209
|
-
return (0, import_server.resetPasswordHandler)(request, {
|
|
208
|
+
return (0, import_server.resetPasswordHandler)(request, {
|
|
209
|
+
passwordRecoveryService
|
|
210
|
+
});
|
|
210
211
|
}
|
|
211
212
|
}
|
|
212
213
|
}
|
|
@@ -216,7 +217,9 @@ var createAPIHandler = ({
|
|
|
216
217
|
switch (method) {
|
|
217
218
|
case "POST": {
|
|
218
219
|
return withAuth(
|
|
219
|
-
(auth) => ({ request: request2 }) => (0, import_server2.uploadFileHandler)({ fileService })(
|
|
220
|
+
(auth) => ({ request: request2 }) => (0, import_server2.uploadFileHandler)({ fileService })(
|
|
221
|
+
auth
|
|
222
|
+
)(request2)
|
|
220
223
|
)(args);
|
|
221
224
|
}
|
|
222
225
|
}
|
package/dist/api/index.mjs
CHANGED
|
@@ -14,13 +14,14 @@ import {
|
|
|
14
14
|
} from "dn-react-toolkit/auth/server";
|
|
15
15
|
|
|
16
16
|
// src/auth/with_auth.ts
|
|
17
|
+
import { v4 } from "uuid";
|
|
17
18
|
var toResponse = (result) => {
|
|
18
19
|
if (result instanceof Response) {
|
|
19
20
|
return result;
|
|
20
21
|
}
|
|
21
22
|
return Response.json(result);
|
|
22
23
|
};
|
|
23
|
-
function
|
|
24
|
+
function createWithStrictAuthHandler({ authService }) {
|
|
24
25
|
return function(fn) {
|
|
25
26
|
const handler = async function(arg) {
|
|
26
27
|
const respond = async (auth, headers = new Headers()) => {
|
|
@@ -29,7 +30,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
29
30
|
};
|
|
30
31
|
const setHeader = (res, headers) => {
|
|
31
32
|
headers.forEach((value, key) => {
|
|
32
|
-
res.headers.
|
|
33
|
+
res.headers.append(key, value);
|
|
33
34
|
});
|
|
34
35
|
return res;
|
|
35
36
|
};
|
|
@@ -37,9 +38,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
37
38
|
arg.request
|
|
38
39
|
);
|
|
39
40
|
if (accessToken) {
|
|
40
|
-
const payload = await authService.accessTokenManager.verify(
|
|
41
|
-
accessToken
|
|
42
|
-
);
|
|
41
|
+
const payload = await authService.accessTokenManager.verify(accessToken);
|
|
43
42
|
if (payload) {
|
|
44
43
|
return respond(payload);
|
|
45
44
|
}
|
|
@@ -49,23 +48,17 @@ function createWithAuthHandler({ authService }) {
|
|
|
49
48
|
);
|
|
50
49
|
if (refreshToken) {
|
|
51
50
|
try {
|
|
52
|
-
const newAccessToken = await authService.refreshAccessToken(
|
|
53
|
-
refreshToken
|
|
54
|
-
);
|
|
51
|
+
const newAccessToken = await authService.refreshAccessToken(refreshToken);
|
|
55
52
|
const setCookieHeader = await authService.getAccessTokenSetCookie(
|
|
56
53
|
newAccessToken
|
|
57
54
|
);
|
|
58
55
|
const headers = new Headers();
|
|
59
56
|
headers.append("Set-Cookie", setCookieHeader);
|
|
60
|
-
const payload = authService.accessTokenManager.decode(
|
|
61
|
-
newAccessToken
|
|
62
|
-
);
|
|
57
|
+
const payload = authService.accessTokenManager.decode(newAccessToken);
|
|
63
58
|
return respond(payload, headers);
|
|
64
59
|
} catch (e) {
|
|
65
60
|
console.log(e);
|
|
66
|
-
const setCookieHeader = await authService.getRefreshTokenSetCookie(
|
|
67
|
-
null
|
|
68
|
-
);
|
|
61
|
+
const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
|
|
69
62
|
const headers = new Headers();
|
|
70
63
|
headers.append("Set-Cookie", setCookieHeader);
|
|
71
64
|
return respond(void 0, headers);
|
|
@@ -96,7 +89,7 @@ var createAPIHandler = ({
|
|
|
96
89
|
const { request, params } = args;
|
|
97
90
|
const method = request.method.toUpperCase();
|
|
98
91
|
const slug = params["*"] ? params["*"].split("/") : [];
|
|
99
|
-
const withAuth =
|
|
92
|
+
const withAuth = createWithStrictAuthHandler({ authService });
|
|
100
93
|
switch (slug[0]) {
|
|
101
94
|
case "auth": {
|
|
102
95
|
switch (slug[1]) {
|
|
@@ -124,10 +117,13 @@ var createAPIHandler = ({
|
|
|
124
117
|
const provider = slug[2];
|
|
125
118
|
switch (method) {
|
|
126
119
|
case "POST": {
|
|
127
|
-
return loginWithThirdPartyHandler(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
120
|
+
return loginWithThirdPartyHandler(
|
|
121
|
+
request,
|
|
122
|
+
{
|
|
123
|
+
provider,
|
|
124
|
+
getThirdPartyAuth
|
|
125
|
+
}
|
|
126
|
+
);
|
|
131
127
|
}
|
|
132
128
|
}
|
|
133
129
|
}
|
|
@@ -166,11 +162,14 @@ var createAPIHandler = ({
|
|
|
166
162
|
default: {
|
|
167
163
|
switch (method) {
|
|
168
164
|
case "POST": {
|
|
169
|
-
return signUpWithThirdpartyHandler(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
165
|
+
return signUpWithThirdpartyHandler(
|
|
166
|
+
request,
|
|
167
|
+
{
|
|
168
|
+
authService,
|
|
169
|
+
fileService,
|
|
170
|
+
signupTokenManager
|
|
171
|
+
}
|
|
172
|
+
);
|
|
174
173
|
}
|
|
175
174
|
}
|
|
176
175
|
}
|
|
@@ -194,7 +193,9 @@ var createAPIHandler = ({
|
|
|
194
193
|
});
|
|
195
194
|
}
|
|
196
195
|
case "reset-password": {
|
|
197
|
-
return resetPasswordHandler(request, {
|
|
196
|
+
return resetPasswordHandler(request, {
|
|
197
|
+
passwordRecoveryService
|
|
198
|
+
});
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
201
|
}
|
|
@@ -204,7 +205,9 @@ var createAPIHandler = ({
|
|
|
204
205
|
switch (method) {
|
|
205
206
|
case "POST": {
|
|
206
207
|
return withAuth(
|
|
207
|
-
(auth) => ({ request: request2 }) => uploadFileHandler({ fileService })(
|
|
208
|
+
(auth) => ({ request: request2 }) => uploadFileHandler({ fileService })(
|
|
209
|
+
auth
|
|
210
|
+
)(request2)
|
|
208
211
|
)(args);
|
|
209
212
|
}
|
|
210
213
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Table } from 'drizzle-orm';
|
|
2
|
+
import { 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 ItemAPIHandlerOptions<T extends Table, TSelect> = {
|
|
10
|
+
withAuthAction: WithAuthHandler<LoaderFunctionArgs>;
|
|
11
|
+
repository: TableRepository<T, TSelect>;
|
|
12
|
+
};
|
|
13
|
+
declare function itemApiHandler<T extends Table, TSelect>({ withAuthAction, repository, }: ItemAPIHandlerOptions<T, TSelect>): {
|
|
14
|
+
loader: ({ request }: LoaderFunctionArgs) => Promise<{}>;
|
|
15
|
+
action: (arg: LoaderFunctionArgs<any>) => Promise<unknown> | unknown;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { type ItemAPIHandlerOptions, itemApiHandler };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Table } from 'drizzle-orm';
|
|
2
|
+
import { 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 ItemAPIHandlerOptions<T extends Table, TSelect> = {
|
|
10
|
+
withAuthAction: WithAuthHandler<LoaderFunctionArgs>;
|
|
11
|
+
repository: TableRepository<T, TSelect>;
|
|
12
|
+
};
|
|
13
|
+
declare function itemApiHandler<T extends Table, TSelect>({ withAuthAction, repository, }: ItemAPIHandlerOptions<T, TSelect>): {
|
|
14
|
+
loader: ({ request }: LoaderFunctionArgs) => Promise<{}>;
|
|
15
|
+
action: (arg: LoaderFunctionArgs<any>) => Promise<unknown> | unknown;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { type ItemAPIHandlerOptions, itemApiHandler };
|
|
@@ -0,0 +1,55 @@
|
|
|
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/item_api_handler.ts
|
|
21
|
+
var item_api_handler_exports = {};
|
|
22
|
+
__export(item_api_handler_exports, {
|
|
23
|
+
itemApiHandler: () => itemApiHandler
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(item_api_handler_exports);
|
|
26
|
+
var import_http = require("dn-react-toolkit/http");
|
|
27
|
+
var import_react_router = require("react-router");
|
|
28
|
+
function itemApiHandler({
|
|
29
|
+
withAuthAction,
|
|
30
|
+
repository
|
|
31
|
+
}) {
|
|
32
|
+
const loader = async ({ request }) => {
|
|
33
|
+
return {};
|
|
34
|
+
};
|
|
35
|
+
const action = withAuthAction((auth) => async ({ params, request }) => {
|
|
36
|
+
if (!auth || auth.role !== "admin") {
|
|
37
|
+
return (0, import_http.UNAUTHORIZED)();
|
|
38
|
+
}
|
|
39
|
+
switch (request.method) {
|
|
40
|
+
case "DELETE": {
|
|
41
|
+
const itemId = params.itemId;
|
|
42
|
+
await repository.delete(itemId);
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
loader,
|
|
49
|
+
action
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
53
|
+
0 && (module.exports = {
|
|
54
|
+
itemApiHandler
|
|
55
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// src/api/item_api_handler.ts
|
|
2
|
+
import { UNAUTHORIZED } from "dn-react-toolkit/http";
|
|
3
|
+
import "react-router";
|
|
4
|
+
function itemApiHandler({
|
|
5
|
+
withAuthAction,
|
|
6
|
+
repository
|
|
7
|
+
}) {
|
|
8
|
+
const loader = async ({ request }) => {
|
|
9
|
+
return {};
|
|
10
|
+
};
|
|
11
|
+
const action = withAuthAction((auth) => async ({ params, request }) => {
|
|
12
|
+
if (!auth || auth.role !== "admin") {
|
|
13
|
+
return UNAUTHORIZED();
|
|
14
|
+
}
|
|
15
|
+
switch (request.method) {
|
|
16
|
+
case "DELETE": {
|
|
17
|
+
const itemId = params.itemId;
|
|
18
|
+
await repository.delete(itemId);
|
|
19
|
+
return {};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
loader,
|
|
25
|
+
action
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
itemApiHandler
|
|
30
|
+
};
|
package/dist/auth/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { WithAuthHandler, createWithAuthHandler } from './with_auth.mjs';
|
|
1
|
+
export { WithAuthHandler, createWithAuthHandler, createWithStrictAuthHandler } from './with_auth.mjs';
|
|
2
2
|
export { ReactRouterCookieManager } from './cookie_store.mjs';
|
|
3
3
|
import 'dn-react-toolkit/auth';
|
|
4
4
|
import 'dn-react-toolkit/auth/server';
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { WithAuthHandler, createWithAuthHandler } from './with_auth.js';
|
|
1
|
+
export { WithAuthHandler, createWithAuthHandler, createWithStrictAuthHandler } from './with_auth.js';
|
|
2
2
|
export { ReactRouterCookieManager } from './cookie_store.js';
|
|
3
3
|
import 'dn-react-toolkit/auth';
|
|
4
4
|
import 'dn-react-toolkit/auth/server';
|
package/dist/auth/index.js
CHANGED
|
@@ -21,18 +21,20 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var auth_exports = {};
|
|
22
22
|
__export(auth_exports, {
|
|
23
23
|
ReactRouterCookieManager: () => ReactRouterCookieManager,
|
|
24
|
-
createWithAuthHandler: () => createWithAuthHandler
|
|
24
|
+
createWithAuthHandler: () => createWithAuthHandler,
|
|
25
|
+
createWithStrictAuthHandler: () => createWithStrictAuthHandler
|
|
25
26
|
});
|
|
26
27
|
module.exports = __toCommonJS(auth_exports);
|
|
27
28
|
|
|
28
29
|
// src/auth/with_auth.ts
|
|
30
|
+
var import_uuid = require("uuid");
|
|
29
31
|
var toResponse = (result) => {
|
|
30
32
|
if (result instanceof Response) {
|
|
31
33
|
return result;
|
|
32
34
|
}
|
|
33
35
|
return Response.json(result);
|
|
34
36
|
};
|
|
35
|
-
function
|
|
37
|
+
function createWithStrictAuthHandler({ authService }) {
|
|
36
38
|
return function(fn) {
|
|
37
39
|
const handler = async function(arg) {
|
|
38
40
|
const respond = async (auth, headers = new Headers()) => {
|
|
@@ -41,7 +43,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
41
43
|
};
|
|
42
44
|
const setHeader = (res, headers) => {
|
|
43
45
|
headers.forEach((value, key) => {
|
|
44
|
-
res.headers.
|
|
46
|
+
res.headers.append(key, value);
|
|
45
47
|
});
|
|
46
48
|
return res;
|
|
47
49
|
};
|
|
@@ -49,9 +51,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
49
51
|
arg.request
|
|
50
52
|
);
|
|
51
53
|
if (accessToken) {
|
|
52
|
-
const payload = await authService.accessTokenManager.verify(
|
|
53
|
-
accessToken
|
|
54
|
-
);
|
|
54
|
+
const payload = await authService.accessTokenManager.verify(accessToken);
|
|
55
55
|
if (payload) {
|
|
56
56
|
return respond(payload);
|
|
57
57
|
}
|
|
@@ -61,23 +61,17 @@ function createWithAuthHandler({ authService }) {
|
|
|
61
61
|
);
|
|
62
62
|
if (refreshToken) {
|
|
63
63
|
try {
|
|
64
|
-
const newAccessToken = await authService.refreshAccessToken(
|
|
65
|
-
refreshToken
|
|
66
|
-
);
|
|
64
|
+
const newAccessToken = await authService.refreshAccessToken(refreshToken);
|
|
67
65
|
const setCookieHeader = await authService.getAccessTokenSetCookie(
|
|
68
66
|
newAccessToken
|
|
69
67
|
);
|
|
70
68
|
const headers = new Headers();
|
|
71
69
|
headers.append("Set-Cookie", setCookieHeader);
|
|
72
|
-
const payload = authService.accessTokenManager.decode(
|
|
73
|
-
newAccessToken
|
|
74
|
-
);
|
|
70
|
+
const payload = authService.accessTokenManager.decode(newAccessToken);
|
|
75
71
|
return respond(payload, headers);
|
|
76
72
|
} catch (e) {
|
|
77
73
|
console.log(e);
|
|
78
|
-
const setCookieHeader = await authService.getRefreshTokenSetCookie(
|
|
79
|
-
null
|
|
80
|
-
);
|
|
74
|
+
const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
|
|
81
75
|
const headers = new Headers();
|
|
82
76
|
headers.append("Set-Cookie", setCookieHeader);
|
|
83
77
|
return respond(void 0, headers);
|
|
@@ -88,6 +82,57 @@ function createWithAuthHandler({ authService }) {
|
|
|
88
82
|
return handler;
|
|
89
83
|
};
|
|
90
84
|
}
|
|
85
|
+
function createWithAuthHandler({
|
|
86
|
+
authService,
|
|
87
|
+
tempUserTokenManager,
|
|
88
|
+
tempUserCookieManager
|
|
89
|
+
}) {
|
|
90
|
+
return function(fn) {
|
|
91
|
+
const withAuthHandler = createWithStrictAuthHandler({
|
|
92
|
+
authService
|
|
93
|
+
});
|
|
94
|
+
const handler = withAuthHandler((auth) => async (args) => {
|
|
95
|
+
if (auth) {
|
|
96
|
+
return fn(auth)(args);
|
|
97
|
+
}
|
|
98
|
+
const respond = async (auth2, headers2 = new Headers()) => {
|
|
99
|
+
const result = await fn(auth2)(args);
|
|
100
|
+
return setHeader(toResponse(result), headers2);
|
|
101
|
+
};
|
|
102
|
+
const setHeader = (res, headers2) => {
|
|
103
|
+
headers2.forEach((value, key) => {
|
|
104
|
+
res.headers.append(key, value);
|
|
105
|
+
});
|
|
106
|
+
return res;
|
|
107
|
+
};
|
|
108
|
+
const tempUserToken = await tempUserCookieManager.parse(
|
|
109
|
+
args.request
|
|
110
|
+
);
|
|
111
|
+
if (tempUserToken) {
|
|
112
|
+
const tempUserPayload = await tempUserTokenManager.verify(tempUserToken);
|
|
113
|
+
if (tempUserPayload) {
|
|
114
|
+
return respond(tempUserPayload);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const user = await authService.authRepository.createUser({
|
|
118
|
+
id: (0, import_uuid.v4)(),
|
|
119
|
+
role: "temp",
|
|
120
|
+
name: "\uC775\uBA85"
|
|
121
|
+
});
|
|
122
|
+
const newTempUserToken = await tempUserTokenManager.sign({
|
|
123
|
+
userId: user.id,
|
|
124
|
+
name: user.name,
|
|
125
|
+
role: user.role
|
|
126
|
+
});
|
|
127
|
+
const headers = new Headers();
|
|
128
|
+
const setCookie = await tempUserCookieManager.serialize(newTempUserToken);
|
|
129
|
+
headers.append("Set-Cookie", setCookie);
|
|
130
|
+
const newTempUserPayload = tempUserTokenManager.decode(newTempUserToken);
|
|
131
|
+
return respond(newTempUserPayload, headers);
|
|
132
|
+
});
|
|
133
|
+
return handler;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
91
136
|
|
|
92
137
|
// src/auth/cookie_store.ts
|
|
93
138
|
var import_react_router = require("react-router");
|
|
@@ -120,5 +165,6 @@ var ReactRouterCookieManager = class {
|
|
|
120
165
|
// Annotate the CommonJS export names for ESM import in node:
|
|
121
166
|
0 && (module.exports = {
|
|
122
167
|
ReactRouterCookieManager,
|
|
123
|
-
createWithAuthHandler
|
|
168
|
+
createWithAuthHandler,
|
|
169
|
+
createWithStrictAuthHandler
|
|
124
170
|
});
|
package/dist/auth/index.mjs
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// src/auth/with_auth.ts
|
|
2
|
+
import { v4 } from "uuid";
|
|
2
3
|
var toResponse = (result) => {
|
|
3
4
|
if (result instanceof Response) {
|
|
4
5
|
return result;
|
|
5
6
|
}
|
|
6
7
|
return Response.json(result);
|
|
7
8
|
};
|
|
8
|
-
function
|
|
9
|
+
function createWithStrictAuthHandler({ authService }) {
|
|
9
10
|
return function(fn) {
|
|
10
11
|
const handler = async function(arg) {
|
|
11
12
|
const respond = async (auth, headers = new Headers()) => {
|
|
@@ -14,7 +15,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
14
15
|
};
|
|
15
16
|
const setHeader = (res, headers) => {
|
|
16
17
|
headers.forEach((value, key) => {
|
|
17
|
-
res.headers.
|
|
18
|
+
res.headers.append(key, value);
|
|
18
19
|
});
|
|
19
20
|
return res;
|
|
20
21
|
};
|
|
@@ -22,9 +23,7 @@ function createWithAuthHandler({ authService }) {
|
|
|
22
23
|
arg.request
|
|
23
24
|
);
|
|
24
25
|
if (accessToken) {
|
|
25
|
-
const payload = await authService.accessTokenManager.verify(
|
|
26
|
-
accessToken
|
|
27
|
-
);
|
|
26
|
+
const payload = await authService.accessTokenManager.verify(accessToken);
|
|
28
27
|
if (payload) {
|
|
29
28
|
return respond(payload);
|
|
30
29
|
}
|
|
@@ -34,23 +33,17 @@ function createWithAuthHandler({ authService }) {
|
|
|
34
33
|
);
|
|
35
34
|
if (refreshToken) {
|
|
36
35
|
try {
|
|
37
|
-
const newAccessToken = await authService.refreshAccessToken(
|
|
38
|
-
refreshToken
|
|
39
|
-
);
|
|
36
|
+
const newAccessToken = await authService.refreshAccessToken(refreshToken);
|
|
40
37
|
const setCookieHeader = await authService.getAccessTokenSetCookie(
|
|
41
38
|
newAccessToken
|
|
42
39
|
);
|
|
43
40
|
const headers = new Headers();
|
|
44
41
|
headers.append("Set-Cookie", setCookieHeader);
|
|
45
|
-
const payload = authService.accessTokenManager.decode(
|
|
46
|
-
newAccessToken
|
|
47
|
-
);
|
|
42
|
+
const payload = authService.accessTokenManager.decode(newAccessToken);
|
|
48
43
|
return respond(payload, headers);
|
|
49
44
|
} catch (e) {
|
|
50
45
|
console.log(e);
|
|
51
|
-
const setCookieHeader = await authService.getRefreshTokenSetCookie(
|
|
52
|
-
null
|
|
53
|
-
);
|
|
46
|
+
const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
|
|
54
47
|
const headers = new Headers();
|
|
55
48
|
headers.append("Set-Cookie", setCookieHeader);
|
|
56
49
|
return respond(void 0, headers);
|
|
@@ -61,6 +54,57 @@ function createWithAuthHandler({ authService }) {
|
|
|
61
54
|
return handler;
|
|
62
55
|
};
|
|
63
56
|
}
|
|
57
|
+
function createWithAuthHandler({
|
|
58
|
+
authService,
|
|
59
|
+
tempUserTokenManager,
|
|
60
|
+
tempUserCookieManager
|
|
61
|
+
}) {
|
|
62
|
+
return function(fn) {
|
|
63
|
+
const withAuthHandler = createWithStrictAuthHandler({
|
|
64
|
+
authService
|
|
65
|
+
});
|
|
66
|
+
const handler = withAuthHandler((auth) => async (args) => {
|
|
67
|
+
if (auth) {
|
|
68
|
+
return fn(auth)(args);
|
|
69
|
+
}
|
|
70
|
+
const respond = async (auth2, headers2 = new Headers()) => {
|
|
71
|
+
const result = await fn(auth2)(args);
|
|
72
|
+
return setHeader(toResponse(result), headers2);
|
|
73
|
+
};
|
|
74
|
+
const setHeader = (res, headers2) => {
|
|
75
|
+
headers2.forEach((value, key) => {
|
|
76
|
+
res.headers.append(key, value);
|
|
77
|
+
});
|
|
78
|
+
return res;
|
|
79
|
+
};
|
|
80
|
+
const tempUserToken = await tempUserCookieManager.parse(
|
|
81
|
+
args.request
|
|
82
|
+
);
|
|
83
|
+
if (tempUserToken) {
|
|
84
|
+
const tempUserPayload = await tempUserTokenManager.verify(tempUserToken);
|
|
85
|
+
if (tempUserPayload) {
|
|
86
|
+
return respond(tempUserPayload);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const user = await authService.authRepository.createUser({
|
|
90
|
+
id: v4(),
|
|
91
|
+
role: "temp",
|
|
92
|
+
name: "\uC775\uBA85"
|
|
93
|
+
});
|
|
94
|
+
const newTempUserToken = await tempUserTokenManager.sign({
|
|
95
|
+
userId: user.id,
|
|
96
|
+
name: user.name,
|
|
97
|
+
role: user.role
|
|
98
|
+
});
|
|
99
|
+
const headers = new Headers();
|
|
100
|
+
const setCookie = await tempUserCookieManager.serialize(newTempUserToken);
|
|
101
|
+
headers.append("Set-Cookie", setCookie);
|
|
102
|
+
const newTempUserPayload = tempUserTokenManager.decode(newTempUserToken);
|
|
103
|
+
return respond(newTempUserPayload, headers);
|
|
104
|
+
});
|
|
105
|
+
return handler;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
64
108
|
|
|
65
109
|
// src/auth/cookie_store.ts
|
|
66
110
|
import { createCookie } from "react-router";
|
|
@@ -92,5 +136,6 @@ var ReactRouterCookieManager = class {
|
|
|
92
136
|
};
|
|
93
137
|
export {
|
|
94
138
|
ReactRouterCookieManager,
|
|
95
|
-
createWithAuthHandler
|
|
139
|
+
createWithAuthHandler,
|
|
140
|
+
createWithStrictAuthHandler
|
|
96
141
|
};
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { AccessTokenPayload } from 'dn-react-toolkit/auth';
|
|
2
|
-
import { AuthService } from 'dn-react-toolkit/auth/server';
|
|
2
|
+
import { AuthService, JWTManager, CookieManager } from 'dn-react-toolkit/auth/server';
|
|
3
3
|
import { LoaderFunctionArgs, ActionFunctionArgs } from 'react-router';
|
|
4
4
|
|
|
5
5
|
type Handler<T extends LoaderFunctionArgs | ActionFunctionArgs> = (arg: T) => Promise<unknown> | unknown;
|
|
6
6
|
type InputFN = (auth?: AccessTokenPayload) => Handler<LoaderFunctionArgs> | Handler<ActionFunctionArgs>;
|
|
7
7
|
type WithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs> = (fn: InputFN) => Handler<T>;
|
|
8
|
-
declare function
|
|
8
|
+
declare function createWithStrictAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs>({ authService }: {
|
|
9
9
|
authService: AuthService;
|
|
10
10
|
}): <THandler extends Handler<T>>(fn: (auth?: AccessTokenPayload) => THandler) => THandler;
|
|
11
|
+
declare function createWithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs>({ authService, tempUserTokenManager, tempUserCookieManager, }: {
|
|
12
|
+
authService: AuthService;
|
|
13
|
+
tempUserTokenManager: JWTManager<AccessTokenPayload>;
|
|
14
|
+
tempUserCookieManager: CookieManager;
|
|
15
|
+
}): <THandler extends Handler<T>>(fn: (auth: AccessTokenPayload) => THandler) => THandler;
|
|
11
16
|
|
|
12
|
-
export { type WithAuthHandler, createWithAuthHandler };
|
|
17
|
+
export { type WithAuthHandler, createWithAuthHandler, createWithStrictAuthHandler };
|