@uxf/cms 2.5.0 → 2.6.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/README.md +3 -1
- package/api/index.d.ts +1 -1
- package/config/Container.d.ts +7 -0
- package/config/Container.js +4 -1
- package/deprecated/hoc/withAuthenticate.js +26 -17
- package/package.json +1 -1
- package/pages/GridPage/GridPage.js +21 -12
package/README.md
CHANGED
@@ -26,7 +26,9 @@ container
|
|
26
26
|
.register("router", Router<any>)
|
27
27
|
.register("service.error", ErrorService)
|
28
28
|
.register("service.notification", FlashMessagesService)
|
29
|
-
.register("useLoggedUser", UseLoggedUser)
|
29
|
+
.register("useLoggedUser", UseLoggedUser)
|
30
|
+
.register("api.getLoggedUser", GetLoggedUser)
|
31
|
+
.register("api.getUserConfig", GetUserConfig);
|
30
32
|
```
|
31
33
|
|
32
34
|
## Api
|
package/api/index.d.ts
CHANGED
package/config/Container.d.ts
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
import { ReactNode } from "react";
|
2
2
|
import { Router } from "@uxf/router";
|
3
|
+
import { NextPageContext } from "next";
|
4
|
+
import UserResponse from "../api";
|
3
5
|
export interface NotificationServiceInterface {
|
4
6
|
info: (message: ReactNode) => void;
|
5
7
|
success: (message: ReactNode) => void;
|
@@ -14,9 +16,13 @@ export interface LoggedUser {
|
|
14
16
|
roles: string[];
|
15
17
|
}
|
16
18
|
export declare type UseLoggedUser = () => LoggedUser;
|
19
|
+
export declare type GetLoggedUser = (ctx: NextPageContext) => Promise<UserResponse>;
|
20
|
+
export declare type GetUserConfig = (ctx: NextPageContext, name: string, defaultValue: any) => Promise<any>;
|
17
21
|
declare type ContainerStore = {
|
18
22
|
router: Router<any>;
|
19
23
|
useLoggedUser: UseLoggedUser;
|
24
|
+
"api.getLoggedUser": GetLoggedUser;
|
25
|
+
"api.getUserConfig": GetUserConfig;
|
20
26
|
"service.notification": NotificationServiceInterface;
|
21
27
|
"service.error": ErrorServiceInterface;
|
22
28
|
};
|
@@ -24,5 +30,6 @@ export declare class Container {
|
|
24
30
|
private store;
|
25
31
|
register<T extends keyof ContainerStore>(key: T, value: ContainerStore[T]): Container;
|
26
32
|
get<T extends keyof ContainerStore>(key: T): ContainerStore[T];
|
33
|
+
has(key: keyof ContainerStore): boolean;
|
27
34
|
}
|
28
35
|
export {};
|
package/config/Container.js
CHANGED
@@ -16,7 +16,10 @@ var Container = /** @class */ (function () {
|
|
16
16
|
}
|
17
17
|
return value;
|
18
18
|
};
|
19
|
+
Container.prototype.has = function (key) {
|
20
|
+
return !!this.store[key];
|
21
|
+
};
|
19
22
|
return Container;
|
20
23
|
}());
|
21
24
|
exports.Container = Container;
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9Db250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0NBO0lBQUE7UUFDWSxVQUFLLEdBQTRCLEVBQUUsQ0FBQztJQW9CaEQsQ0FBQztJQWxCVSw0QkFBUSxHQUFmLFVBQWdELEdBQU0sRUFBRSxLQUF3QjtRQUM1RSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sdUJBQUcsR0FBVixVQUEyQyxHQUFNO1FBQzdDLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQTZCLEdBQUcsT0FBSSxDQUFDLENBQUM7U0FDekQ7UUFFRCxPQUFPLEtBQVksQ0FBQztJQUN4QixDQUFDO0lBRU0sdUJBQUcsR0FBVixVQUFXLEdBQXlCO1FBQ2hDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNMLGdCQUFDO0FBQUQsQ0FBQyxBQXJCRCxJQXFCQztBQXJCWSw4QkFBUyJ9
|
@@ -71,6 +71,7 @@ var api_1 = require("../../api");
|
|
71
71
|
var user_1 = require("../redux/user");
|
72
72
|
var react_1 = __importDefault(require("react"));
|
73
73
|
var CmsAuthorizator_1 = __importDefault(require("../security/CmsAuthorizator"));
|
74
|
+
var config_1 = require("../../config");
|
74
75
|
// TODO component any
|
75
76
|
var withAuthenticate = function (config) {
|
76
77
|
return function (Component) {
|
@@ -83,30 +84,38 @@ var withAuthenticate = function (config) {
|
|
83
84
|
class_1.getInitialProps = function (ctx) {
|
84
85
|
var _a;
|
85
86
|
return __awaiter(this, void 0, void 0, function () {
|
86
|
-
var user, _b;
|
87
|
-
return __generator(this, function (
|
88
|
-
switch (
|
87
|
+
var user, _b, _c;
|
88
|
+
return __generator(this, function (_d) {
|
89
|
+
switch (_d.label) {
|
89
90
|
case 0:
|
90
91
|
user = ctx.reduxStore.getState().user.user;
|
91
|
-
if (!!user) return [3 /*break*/,
|
92
|
-
return [
|
92
|
+
if (!!user) return [3 /*break*/, 5];
|
93
|
+
if (!config_1.container.has("api.getLoggedUser")) return [3 /*break*/, 2];
|
94
|
+
return [4 /*yield*/, config_1.container.get("api.getLoggedUser")(ctx)];
|
93
95
|
case 1:
|
94
|
-
|
96
|
+
_b = _d.sent();
|
97
|
+
return [3 /*break*/, 4];
|
98
|
+
case 2: return [4 /*yield*/, (0, api_1.getLoggedUser)(ctx)];
|
99
|
+
case 3:
|
100
|
+
_b = _d.sent();
|
101
|
+
_d.label = 4;
|
102
|
+
case 4:
|
103
|
+
user = _b;
|
95
104
|
ctx.reduxStore.dispatch((0, user_1.onUserPersist)(user));
|
96
|
-
|
97
|
-
case
|
105
|
+
_d.label = 5;
|
106
|
+
case 5:
|
98
107
|
if (config.allowedRoles && !CmsAuthorizator_1.default.isGranted(config.allowedRoles, (_a = user === null || user === void 0 ? void 0 : user.roles) !== null && _a !== void 0 ? _a : [])) {
|
99
108
|
throw new UnauthorizedError_1.UnauthorizedError();
|
100
109
|
}
|
101
|
-
if (!(typeof Component.getInitialProps === "function")) return [3 /*break*/,
|
110
|
+
if (!(typeof Component.getInitialProps === "function")) return [3 /*break*/, 7];
|
102
111
|
return [4 /*yield*/, Component.getInitialProps(ctx)];
|
103
|
-
case
|
104
|
-
|
105
|
-
return [3 /*break*/,
|
106
|
-
case
|
107
|
-
|
108
|
-
|
109
|
-
case
|
112
|
+
case 6:
|
113
|
+
_c = _d.sent();
|
114
|
+
return [3 /*break*/, 8];
|
115
|
+
case 7:
|
116
|
+
_c = {};
|
117
|
+
_d.label = 8;
|
118
|
+
case 8: return [2 /*return*/, _c];
|
110
119
|
}
|
111
120
|
});
|
112
121
|
});
|
@@ -121,4 +130,4 @@ var withAuthenticate = function (config) {
|
|
121
130
|
};
|
122
131
|
}; // TODO!
|
123
132
|
exports.withAuthenticate = withAuthenticate;
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aEF1dGhlbnRpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXByZWNhdGVkL2hvYy93aXRoQXV0aGVudGljYXRlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9FQUFtRTtBQUNuRSxpQ0FBMEM7QUFDMUMsc0NBQThDO0FBRTlDLGdEQUEwQjtBQUUxQixnRkFBMEQ7QUFDMUQsdUNBQXlDO0FBTXpDLHFCQUFxQjtBQUNkLElBQU0sZ0JBQWdCLEdBQ3pCLFVBQXFELE1BQWU7SUFDcEUsT0FBQSxVQUFDLFNBQWM7O1FBQ1gsT0FBQTtnQkFBYywyQkFBc0I7Z0JBQXBDOztnQkFxQkEsQ0FBQztnQkFuQnVCLHVCQUFlLEdBQW5DLFVBQW9DLEdBQWdCOzs7Ozs7O29DQUM1QyxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3lDQUMzQyxDQUFDLElBQUksRUFBTCx3QkFBSzt5Q0FDRSxrQkFBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFsQyx3QkFBa0M7b0NBQ25DLHFCQUFNLGtCQUFTLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUE7O29DQUE3QyxLQUFBLFNBQTZDLENBQUE7O3dDQUM3QyxxQkFBTSxJQUFBLG1CQUFhLEVBQUMsR0FBRyxDQUFDLEVBQUE7O29DQUF4QixLQUFBLFNBQXdCLENBQUE7OztvQ0FGOUIsSUFBSSxLQUUwQixDQUFDO29DQUMvQixHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O29DQUdqRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyx5QkFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEtBQUssbUNBQUksRUFBRSxDQUFDLEVBQUU7d0NBQzNGLE1BQU0sSUFBSSxxQ0FBaUIsRUFBRSxDQUFDO3FDQUNqQzt5Q0FFTSxDQUFBLE9BQU8sU0FBUyxDQUFDLGVBQWUsS0FBSyxVQUFVLENBQUEsRUFBL0Msd0JBQStDO29DQUFHLHFCQUFNLFNBQVMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUE7O29DQUFwQyxLQUFBLFNBQW9DLENBQUE7OztvQ0FBRyxLQUFBLEVBQUUsQ0FBQTs7d0NBQWxHLDBCQUFtRzs7OztpQkFDdEc7Z0JBRU0sd0JBQU0sR0FBYjtvQkFDSSxPQUFPLDhCQUFDLFNBQVMsZUFBSyxJQUFJLENBQUMsS0FBSyxFQUFJLENBQUM7Z0JBQ3pDLENBQUM7Z0JBQ0wsY0FBQztZQUFELENBQUMsQUFyQkQsQ0FBYyxlQUFLLENBQUMsU0FBUztZQUNsQixjQUFXLEdBQUcscUJBQXNCO2NBb0J2QyxDQUFBO0tBQUE7QUF0QlosQ0FzQlksQ0FBQyxDQUFDLFFBQVE7QUF4QmIsUUFBQSxnQkFBZ0Isb0JBd0JaIn0=
|
package/package.json
CHANGED
@@ -85,6 +85,7 @@ var withAuthenticate_1 = require("../../deprecated/hoc/withAuthenticate");
|
|
85
85
|
var api_2 = require("../../lib/api");
|
86
86
|
var getInitialPropsHelper_1 = require("./getInitialPropsHelper");
|
87
87
|
var useHiddenColumns_1 = require("./useHiddenColumns");
|
88
|
+
var config_1 = require("../../config");
|
88
89
|
var axiosRequest = (0, api_2.createAxiosInstance)().axiosRequest;
|
89
90
|
var dataGridLoader = function (gridName, request) {
|
90
91
|
return axiosRequest(null, "/api/cms/datagrid/".concat(gridName), "get", null, request).then(function (r) { return r.data; });
|
@@ -117,30 +118,38 @@ var GridPage = function (config) {
|
|
117
118
|
return (react_1.default.createElement(GridPageComponent, __assign({}, props, { title: config.title, loader: config.loader, onEdit: config.onEdit, getEditUrl: config.getEditUrl, onAdd: config.onAdd, onRemove: config.onRemove, onOpen: config.onOpen, getOpenUrl: config.getOpenUrl, BodyCell: config.BodyCell, ActionCell: config.ActionCell, FilterInput: config.FilterInput, FilterListItem: config.FilterListItem, actionCellWidth: config.actionCellWidth, Layout: config.Layout, rowHeight: config.rowHeight, FullTextInputProps: config.FullTextInputProps, defaultConfig: config.defaultConfig })));
|
118
119
|
};
|
119
120
|
Component.getInitialProps = function (ctx) { return __awaiter(void 0, void 0, void 0, function () {
|
120
|
-
var entityAlias, initialHiddenColumns;
|
121
|
-
var
|
122
|
-
return __generator(this, function (
|
123
|
-
switch (
|
121
|
+
var entityAlias, initialHiddenColumns, _a;
|
122
|
+
var _b;
|
123
|
+
return __generator(this, function (_c) {
|
124
|
+
switch (_c.label) {
|
124
125
|
case 0:
|
125
126
|
entityAlias = typeof config.entityAlias === "function" ? config.entityAlias(ctx) : config.entityAlias;
|
126
|
-
|
127
|
+
if (!config_1.container.has("api.getUserConfig")) return [3 /*break*/, 2];
|
128
|
+
return [4 /*yield*/, config_1.container.get("api.getUserConfig")(ctx, "v1--hidden-columns--".concat(entityAlias), [])];
|
127
129
|
case 1:
|
128
|
-
|
129
|
-
|
130
|
+
_a = _c.sent();
|
131
|
+
return [3 /*break*/, 4];
|
132
|
+
case 2: return [4 /*yield*/, (0, api_1.userConfigGet)(ctx, "v1--hidden-columns--".concat(entityAlias), [])];
|
133
|
+
case 3:
|
134
|
+
_a = _c.sent();
|
135
|
+
_c.label = 4;
|
136
|
+
case 4:
|
137
|
+
initialHiddenColumns = _a;
|
138
|
+
_b = {
|
130
139
|
entityAlias: entityAlias,
|
131
140
|
initialHiddenColumns: initialHiddenColumns,
|
132
141
|
query: ctx.query
|
133
142
|
};
|
134
143
|
return [4 /*yield*/, (0, getInitialPropsHelper_1.loadEntityMetaSchema)(ctx, entityAlias)];
|
135
|
-
case
|
136
|
-
|
144
|
+
case 5:
|
145
|
+
_b.metaSchema = _c.sent();
|
137
146
|
return [4 /*yield*/, (0, getInitialPropsHelper_1.loadEntityGridSchema)(ctx, entityAlias)];
|
138
|
-
case
|
139
|
-
|
147
|
+
case 6: return [2 /*return*/, (_b.gridSchema = _c.sent(),
|
148
|
+
_b)];
|
140
149
|
}
|
141
150
|
});
|
142
151
|
}); };
|
143
152
|
return (0, withAuthenticate_1.withAuthenticate)({ allowedRoles: config.allowedRoles || ["ROLE_ROOT"] })(Component);
|
144
153
|
};
|
145
154
|
exports.GridPage = GridPage;
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JpZFBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvR3JpZFBhZ2UvR3JpZFBhZ2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUEwQztBQUMxQywwREFBb0M7QUFDcEMsMERBQW9DO0FBQ3BDLGtFQUE0QztBQUM1Qyw0Q0FBcUU7QUFDckUsc0NBQWlEO0FBRWpELHVEQUFpQztBQUNqQywwQ0FBb0I7QUFDcEIsNkNBQTJDO0FBQzNDLDJCQUF3QztBQUN4QyxpQ0FBMEM7QUFDMUMsMEVBQXlFO0FBQ3pFLHFDQUFvRDtBQUNwRCxpRUFBcUY7QUFFckYsdURBQXNEO0FBQ3RELHVDQUF5QztBQUVqQyxJQUFBLFlBQVksR0FBSyxJQUFBLHlCQUFtQixHQUFFLGFBQTFCLENBQTJCO0FBRXhDLElBQU0sY0FBYyxHQUFHLFVBQUMsUUFBZ0IsRUFBRSxPQUFnQjtJQUM3RCxPQUFPLFlBQVksQ0FBVyxJQUFJLEVBQUUsNEJBQXFCLFFBQVEsQ0FBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLElBQUksRUFBTixDQUFNLENBQUMsQ0FBQztBQUNuSCxDQUFDLENBQUM7QUFGVyxRQUFBLGNBQWMsa0JBRXpCO0FBRUYsSUFBTSxhQUFhLEdBQW9CLFVBQUMsS0FBSyxJQUFLLE9BQUEsa0RBQVMsS0FBSyxFQUFJLEVBQWxCLENBQWtCLENBQUM7QUFFckUsSUFBTSxpQkFBaUIsR0FBcUMsVUFBQyxLQUFLOztJQUUxRCxJQUFBLFVBQVUsR0FzQlYsS0FBSyxXQXRCSyxFQUNWLFdBQVcsR0FxQlgsS0FBSyxZQXJCTSxFQUNYLFVBQVUsR0FvQlYsS0FBSyxXQXBCSyxFQUNWLFVBQVUsR0Ft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
|