adminizer 4.3.0-build.99 → 4.3.1
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/assets/add-9NSjG6Jx.js +1 -0
- package/assets/add-form-uUiOWEy_.js +1 -0
- package/assets/add-group-Db0HkA1m.js +1 -0
- package/assets/add-group-form-DMz0_Oo9.js +1 -0
- package/assets/add-user-BMklpOqf.js +1 -0
- package/assets/{add-user-form-DrclnTOd.js → add-user-form-izlXhv2-.js} +1 -1
- package/assets/{app-D8oqdt8J.css → app-BJd5vD4i.css} +1 -1
- package/assets/app-layout-DcgYmhNb.js +1 -0
- package/assets/{app-shell-CHEYhVco.js → app-shell-C8Cnr5Hy.js} +1 -1
- package/assets/app-sidebar-HwvXNZzk.js +1 -0
- package/assets/app-sidebar-header-C8TTx8yd.js +1 -0
- package/assets/app.js +5 -5
- package/assets/{breadcrumbs-C439DWrC.js → breadcrumbs-DSMzNYiS.js} +1 -1
- package/assets/catalog-C2INmTwI.js +6 -0
- package/assets/catalog-D4n6dpGl.css +1 -0
- package/assets/{dashboard-Bi5KeZu2.js → dashboard-DwFL6nqn.js} +1 -1
- package/assets/{date-picker-DbJ8nHp5.js → date-picker-kW3wZQr_.js} +1 -1
- package/assets/{del-modal-_b3CSNHb.js → del-modal-DyIWFflP.js} +1 -1
- package/assets/{field-renderer-4obZ_jUo.js → field-renderer-BNQVfOir.js} +3 -3
- package/assets/form-CAIoGuhZ.js +1 -0
- package/assets/form-NUd-JZJN.js +1 -0
- package/assets/{geo-json-CadjdhwW.js → geo-json-YeWQOYnT.js} +1 -1
- package/assets/{home-BUoDaWe0.js → home-CteDT1us.js} +2 -2
- package/assets/{icon-DM49pZW3.js → icon-DpkedrXG.js} +1 -1
- package/assets/{init-user-DNrB8Xt5.js → init-user-DaOvt0vG.js} +1 -1
- package/assets/{input-error--IOnWghB.js → input-error-CmXZF6xy.js} +1 -1
- package/assets/list-CXQmJbH8.js +1 -0
- package/assets/{list-table-BKxxQkCW.js → list-table-BPpHDVPf.js} +4 -4
- package/assets/{login-6Xb8bcPq.js → login-DR6fvKtm.js} +1 -1
- package/assets/manifest.json +82 -82
- package/assets/{material-icon-BedgD2NE.js → material-icon-DwkE6wKL.js} +1 -1
- package/assets/media-manager-DYOfUh8F.js +14 -0
- package/assets/{module-B4-7WkY5.js → module-BIUqcf4-.js} +1 -1
- package/assets/{nav-footer-BwkQkwow.js → nav-footer-B85HLj-j.js} +1 -1
- package/assets/{nav-main-9Eb_A0rf.js → nav-main-BqKm87JZ.js} +1 -1
- package/assets/nav-user-DuCZNsZX.js +1 -0
- package/assets/notification-BQTjxH2H.js +27 -0
- package/assets/pagination-render-io0M2m2O.js +1 -0
- package/assets/{register-BIyjCy8M.js → register-hJD1ETdf.js} +1 -1
- package/assets/{tabs-BK_5wdPA.js → tabs-BhkFoerH.js} +1 -1
- package/assets/{theme-switcher-CKiJbMkh.js → theme-switcher-cgyA7_cO.js} +1 -1
- package/assets/{toast-editor-BZM5RHph.js → toast-editor-DwRk6WqT.js} +1 -1
- package/assets/{user-info-CcYdmjMZ.js → user-info-BGQvqBmO.js} +1 -1
- package/assets/{user-menu-content-DbUk8ZeY.js → user-menu-content-BDm88xaM.js} +1 -1
- package/assets/welcome-ks57d2us.js +1 -0
- package/controllers/add.js +8 -8
- package/controllers/addGroup.js +3 -3
- package/controllers/addUser.js +3 -3
- package/controllers/catalog/Catalog.js +22 -21
- package/controllers/catalog/FrontendCatalogAdapter.d.ts +82 -0
- package/controllers/catalog/FrontendCatalogAdapter.js +228 -0
- package/controllers/catalog/FrontentCatalogAdapter.d.ts +4 -4
- package/controllers/catalog/FrontentCatalogAdapter.js +28 -10
- package/controllers/ckeditorUpload.js +1 -1
- package/controllers/edit.js +21 -12
- package/controllers/editGroup.js +3 -3
- package/controllers/editUser.js +3 -3
- package/controllers/form.js +12 -10
- package/controllers/initUser.js +2 -2
- package/controllers/list.js +5 -5
- package/controllers/login.js +7 -4
- package/controllers/media-manager/ThumbController.js +2 -2
- package/controllers/media-manager/mediaManagerAdapter.js +2 -2
- package/controllers/media-manager/mediaManagerApi.js +2 -3
- package/controllers/navigation/edit.js +2 -2
- package/controllers/notifications/NotificationController.d.ts +1 -1
- package/controllers/notifications/NotificationController.js +6 -5
- package/controllers/register.js +1 -1
- package/controllers/remove.js +4 -4
- package/controllers/view.js +13 -11
- package/helpers/accessRightsHelper.js +1 -1
- package/helpers/controllerHelper.js +1 -1
- package/helpers/fieldsHelper.js +3 -3
- package/helpers/formHelper.js +1 -1
- package/helpers/inertiaAddHelper.js +3 -4
- package/helpers/inertiaFromHelper.js +2 -3
- package/helpers/inertiaListHelper.js +1 -1
- package/helpers/menuHelper.js +1 -1
- package/helpers/translationHelper.js +2 -2
- package/index.d.ts +5 -0
- package/index.js +31 -26
- package/interfaces/adminpanelConfig.d.ts +12 -0
- package/lib/Adminizer.d.ts +4 -3
- package/lib/Adminizer.js +41 -47
- package/lib/DataAccessor.js +3 -3
- package/lib/I18n.js +1 -1
- package/lib/PolicyManager.js +1 -1
- package/lib/catalog/AbstractCatalog.d.ts +6 -4
- package/lib/catalog/AbstractCatalog.js +5 -4
- package/lib/catalog/Navigation.d.ts +9 -7
- package/lib/catalog/Navigation.js +71 -42
- package/lib/controls/codeEditor/MonacoEditor.js +1 -1
- package/lib/controls/geojsoneditor/GeoEditor.js +1 -1
- package/lib/controls/jsoneditor/JsonEditor.js +1 -1
- package/lib/controls/markdown/ToastUiEditor.js +1 -1
- package/lib/controls/table/Handsontable.js +1 -1
- package/lib/controls/wysiwyg/CKeditor.js +1 -1
- package/lib/inertia/inertiaAdapter.js +31 -13
- package/lib/media-manager/AbstractMediaManager.d.ts +5 -3
- package/lib/media-manager/DefaultMediaManager.d.ts +3 -3
- package/lib/media-manager/DefaultMediaManager.js +21 -16
- package/lib/media-manager/Items.js +7 -6
- package/lib/media-manager/MediaManagerHandler.d.ts +3 -3
- package/lib/media-manager/MediaManagerHandler.js +4 -4
- package/lib/media-manager/Thumb.d.ts +2 -1
- package/lib/media-manager/Thumb.js +3 -4
- package/lib/media-manager/helpers/MediaManagerHelper.d.ts +7 -2
- package/lib/media-manager/helpers/MediaManagerHelper.js +12 -8
- package/lib/model/AbstractModel.js +1 -1
- package/lib/model/ModelHandler.js +1 -1
- package/lib/model/adapter/sequelize.js +1 -1
- package/lib/model/adapter/waterline.js +7 -1
- package/lib/notifications/AbstractNotificationService.js +1 -1
- package/lib/notifications/GeneralNotificationService.js +2 -2
- package/lib/notifications/NotificationHandler.js +1 -1
- package/lib/notifications/SystemNotificationService.js +2 -2
- package/lib/requestProcessor.js +2 -2
- package/lib/widgets/abstractAction.js +1 -1
- package/lib/widgets/abstractInfo.js +1 -1
- package/lib/widgets/abstractLink.js +1 -1
- package/lib/widgets/abstractSwitch.js +1 -1
- package/migrations/index.js +1 -1
- package/migrations/umzugExports.js +1 -1
- package/package.json +4 -2
- package/system/Router.js +31 -29
- package/system/bindAccessRights.js +7 -0
- package/system/bindAuthorization.js +4 -4
- package/system/bindControls.js +6 -6
- package/system/bindCors.d.ts +2 -0
- package/system/bindCors.js +41 -0
- package/system/bindDashboardWidgets.js +1 -1
- package/system/bindForms.js +1 -1
- package/system/bindInertia.js +4 -4
- package/system/bindMediaManager.js +2 -3
- package/system/bindModels.js +1 -1
- package/system/bindNavigation.d.ts +1 -1
- package/system/bindNavigation.js +34 -36
- package/system/bindNotifications.js +7 -7
- package/system/bindReqFunctions.js +7 -4
- package/system/bindTranslations.js +2 -2
- package/system/defaults.js +10 -2
- package/translations/ru.json +121 -120
- package/ui/components/handsontable.js +6 -3
- package/ui/lib/utils.d.ts +1 -0
- package/ui/lib/utils.js +16 -0
- package/assets/add-1E1UsMVZ.js +0 -1
- package/assets/add-form-CGa9QbwE.js +0 -1
- package/assets/add-group-7yAK6uFY.js +0 -1
- package/assets/add-group-form-BNmpvW8K.js +0 -1
- package/assets/add-user-NoYkTfZi.js +0 -1
- package/assets/app-layout-i2zN9Rn-.js +0 -1
- package/assets/app-sidebar-DeF8WNmW.js +0 -1
- package/assets/app-sidebar-header-DdM1EOrb.js +0 -1
- package/assets/catalog-B9hdop59.js +0 -6
- package/assets/catalog-C71LuRag.css +0 -1
- package/assets/form-Bte5kzjB.js +0 -1
- package/assets/form-oUlsuu7h.js +0 -1
- package/assets/list-C04Krl_W.js +0 -1
- package/assets/media-manager-UQT6RhI8.js +0 -14
- package/assets/nav-user-CRAfyE-x.js +0 -1
- package/assets/notification-ma2x7vka.js +0 -27
- package/assets/pagination-render-D3UyVAlr.js +0 -1
- package/assets/welcome-cWh1qnl_.js +0 -1
package/controllers/form.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { FormHelper } from "../helpers/formHelper";
|
|
2
|
-
import { Adminizer } from "../lib/Adminizer";
|
|
3
|
-
import inertiaFormHelper from "../helpers/inertiaFromHelper";
|
|
4
|
-
import { getRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper";
|
|
5
|
-
import { MediaManagerHandler } from "../lib/media-manager/MediaManagerHandler";
|
|
1
|
+
import { FormHelper } from "../helpers/formHelper.js";
|
|
2
|
+
import { Adminizer } from "../lib/Adminizer.js";
|
|
3
|
+
import inertiaFormHelper from "../helpers/inertiaFromHelper.js";
|
|
4
|
+
import { getRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper.js";
|
|
6
5
|
export default async function form(req, res) {
|
|
7
6
|
let slug = req.params.slug;
|
|
8
7
|
// Check slug
|
|
@@ -45,8 +44,9 @@ export default async function form(req, res) {
|
|
|
45
44
|
}
|
|
46
45
|
if (form[key].type === "mediamanager") {
|
|
47
46
|
let options = form[key].options;
|
|
48
|
-
let mediaManager =
|
|
49
|
-
|
|
47
|
+
let mediaManager = req.adminizer.mediaManagerHandler.get(options?.id ?? "default");
|
|
48
|
+
if (req.body[key])
|
|
49
|
+
await mediaManager.setRelations(req.body[key], `${slug}_${key}`, 0, key);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
for (let field of Object.keys(req.body)) {
|
|
@@ -62,9 +62,11 @@ export default async function form(req, res) {
|
|
|
62
62
|
for (let key of Object.keys(form)) {
|
|
63
63
|
try {
|
|
64
64
|
if (form[key].type === 'mediamanager') {
|
|
65
|
-
form[key].value = await getRelationsMediaManager({
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
form[key].value = await getRelationsMediaManager(req.adminizer, {
|
|
66
|
+
mediaManagerId: form[key].options?.id ?? "default",
|
|
67
|
+
model: `${slug}_${key}`,
|
|
68
|
+
widgetName: key,
|
|
69
|
+
modelId: 0
|
|
68
70
|
});
|
|
69
71
|
}
|
|
70
72
|
else {
|
package/controllers/initUser.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Adminizer } from "../lib/Adminizer";
|
|
1
|
+
import { Adminizer } from "../lib/Adminizer.js";
|
|
2
2
|
import { generate } from "password-hash";
|
|
3
|
-
import { inertiaInitUserHelper } from "../helpers/inertiaAutHelper";
|
|
3
|
+
import { inertiaInitUserHelper } from "../helpers/inertiaAutHelper.js";
|
|
4
4
|
export default async function initUser(req, res) {
|
|
5
5
|
if (!req.adminizer.config.auth.enable) {
|
|
6
6
|
return res.redirect(`${req.adminizer.config.routePrefix}/`);
|
package/controllers/list.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ControllerHelper } from "../helpers/controllerHelper";
|
|
2
|
-
import { DataAccessor } from "../lib/DataAccessor";
|
|
3
|
-
import { NodeTable } from "../lib/datatable/NodeTable";
|
|
4
|
-
import { Adminizer } from "../lib/Adminizer";
|
|
5
|
-
import { inertiaListHelper } from "../helpers/inertiaListHelper";
|
|
1
|
+
import { ControllerHelper } from "../helpers/controllerHelper.js";
|
|
2
|
+
import { DataAccessor } from "../lib/DataAccessor.js";
|
|
3
|
+
import { NodeTable } from "../lib/datatable/NodeTable.js";
|
|
4
|
+
import { Adminizer } from "../lib/Adminizer.js";
|
|
5
|
+
import { inertiaListHelper } from "../helpers/inertiaListHelper.js";
|
|
6
6
|
export default async function list(req, res) {
|
|
7
7
|
let entity = ControllerHelper.findEntityObject(req);
|
|
8
8
|
if (!entity.model) {
|
package/controllers/login.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { POWCaptcha } from "../lib/POWCaptcha";
|
|
1
|
+
import { POWCaptcha } from "../lib/POWCaptcha.js";
|
|
2
2
|
import passwordHash from "password-hash";
|
|
3
|
-
import { inertiaLoginHelper } from "../helpers/inertiaAutHelper";
|
|
4
|
-
import { Adminizer } from "../lib/Adminizer";
|
|
5
|
-
import { signUser } from "../lib/helper/jwt";
|
|
3
|
+
import { inertiaLoginHelper } from "../helpers/inertiaAutHelper.js";
|
|
4
|
+
import { Adminizer } from "../lib/Adminizer.js";
|
|
5
|
+
import { signUser } from "../lib/helper/jwt.js";
|
|
6
6
|
import { serialize } from "cookie";
|
|
7
7
|
export default async function login(req, res) {
|
|
8
8
|
const powCaptcha = new POWCaptcha();
|
|
@@ -53,6 +53,9 @@ export default async function login(req, res) {
|
|
|
53
53
|
//Here we use the captchaSolution key to output messages unrelated to the form fields.
|
|
54
54
|
return inertiaAdminMessage(req, "Profile expired, contact the administrator", 'captchaSolution');
|
|
55
55
|
}
|
|
56
|
+
if (!req.adminizer.accessRightsHelper.hasPermission('access-to-adminpanel', user)) {
|
|
57
|
+
return inertiaAdminMessage(req, "The user is not allowed to enter, please contact the administrator", 'captchaSolution');
|
|
58
|
+
}
|
|
56
59
|
const token = signUser(user, req.adminizer.jwtSecret);
|
|
57
60
|
res.setHeader('Set-Cookie', serialize('adminizer_jwt', token, {
|
|
58
61
|
httpOnly: true,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { MediaManagerThumb } from "../../lib/media-manager/Thumb";
|
|
1
|
+
import { MediaManagerThumb } from "../../lib/media-manager/Thumb.js";
|
|
2
2
|
export async function thumbController(req, res) {
|
|
3
3
|
const method = req.method.toUpperCase();
|
|
4
4
|
const id = req.query.id;
|
|
5
5
|
const managerId = req.query.managerId;
|
|
6
6
|
if (method === 'GET') {
|
|
7
7
|
res.setHeader('Content-Type', 'image/webp');
|
|
8
|
-
res.send(await MediaManagerThumb.getThumb(id, managerId));
|
|
8
|
+
res.send(await MediaManagerThumb.getThumb(id, managerId, req.adminizer));
|
|
9
9
|
}
|
|
10
10
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { randomFileName } from "../../lib/media-manager/helpers/MediaManagerHelper";
|
|
1
|
+
import { randomFileName } from "../../lib/media-manager/helpers/MediaManagerHelper.js";
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import multer from 'multer';
|
|
4
4
|
export class MediaManagerAdapter {
|
|
@@ -106,7 +106,7 @@ export class MediaManagerAdapter {
|
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
checkDirectory() {
|
|
109
|
-
const outputDir = `${this.manager.fileStoragePath}/${this.manager.urlPathPrefix}`;
|
|
109
|
+
const outputDir = `${process.cwd()}/${this.manager.fileStoragePath}/${this.manager.urlPathPrefix}`;
|
|
110
110
|
if (!fs.existsSync(outputDir)) {
|
|
111
111
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
112
112
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MediaManagerAdapter } from "./mediaManagerAdapter";
|
|
1
|
+
import { MediaManagerAdapter } from "./mediaManagerAdapter.js";
|
|
3
2
|
export async function mediaManagerController(req, res) {
|
|
4
3
|
const method = req.method.toUpperCase();
|
|
5
4
|
let id = req.params.id ? req.params.id : '';
|
|
@@ -16,7 +15,7 @@ export async function mediaManagerController(req, res) {
|
|
|
16
15
|
if (!id) {
|
|
17
16
|
return res.sendStatus(404);
|
|
18
17
|
}
|
|
19
|
-
const _manager =
|
|
18
|
+
const _manager = req.adminizer.mediaManagerHandler.get(id);
|
|
20
19
|
const manager = new MediaManagerAdapter(_manager);
|
|
21
20
|
if (method === 'GET') {
|
|
22
21
|
if (req.query._method === 'getLocales') {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ControllerHelper } from "../../helpers/controllerHelper";
|
|
2
|
-
import { DataAccessor } from "../../lib/DataAccessor";
|
|
1
|
+
import { ControllerHelper } from "../../helpers/controllerHelper.js";
|
|
2
|
+
import { DataAccessor } from "../../lib/DataAccessor.js";
|
|
3
3
|
export default async function edit(req, res) {
|
|
4
4
|
if (req.adminizer.config.auth.enable) {
|
|
5
5
|
if (!req.user) {
|
|
@@ -3,7 +3,7 @@ export declare class NotificationController {
|
|
|
3
3
|
static viewAll(req: ReqType, res: ResType): Promise<import("express").Response<any, Record<string, any>>>;
|
|
4
4
|
static getNotificationClasses(req: ReqType, res: ResType): Promise<ResType>;
|
|
5
5
|
static getNotificationsStream(req: ReqType, res: ResType): Promise<void>;
|
|
6
|
-
static getNotificationsByClass(req: ReqType, res: ResType): Promise<
|
|
6
|
+
static getNotificationsByClass(req: ReqType, res: ResType): Promise<ResType>;
|
|
7
7
|
static getUserNotifications(req: ReqType, res: ResType): Promise<void>;
|
|
8
8
|
static markAsRead(req: ReqType, res: ResType): Promise<void>;
|
|
9
9
|
static markAllAsRead(req: ReqType, res: ResType): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Adminizer } from '../../lib/Adminizer';
|
|
1
|
+
import { Adminizer } from '../../lib/Adminizer.js';
|
|
2
2
|
export class NotificationController {
|
|
3
3
|
static async search(req, res) {
|
|
4
4
|
NotificationController.checkNotifPermission(req, res);
|
|
@@ -143,16 +143,17 @@ export class NotificationController {
|
|
|
143
143
|
// Проверяем права доступа
|
|
144
144
|
const hasPermission = req.adminizer.accessRightsHelper.hasPermission(`notification-${notificationClass}`, req.user);
|
|
145
145
|
if (!hasPermission) {
|
|
146
|
-
res.status(403).json({ error: 'Forbidden' });
|
|
147
|
-
return;
|
|
146
|
+
return res.status(403).json({ error: 'Forbidden' });
|
|
148
147
|
}
|
|
149
148
|
const service = req.adminizer.notificationHandler.getService(notificationClass);
|
|
149
|
+
if (!service)
|
|
150
|
+
return res.json({});
|
|
150
151
|
const notifications = await service.getNotifications(req.user?.id, Number(limit), Number(skip), unreadOnly === 'true');
|
|
151
|
-
res.json(notifications);
|
|
152
|
+
return res.json(notifications);
|
|
152
153
|
}
|
|
153
154
|
catch (error) {
|
|
154
155
|
Adminizer.log.error('Error getting notifications:', error);
|
|
155
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
156
|
+
return res.status(500).json({ error: 'Internal server error' });
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
159
|
// API для получения всех уведомлений пользователя
|
package/controllers/register.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { generate } from "password-hash";
|
|
2
|
-
import { inertiaRegisterHelper } from "../helpers/inertiaAutHelper";
|
|
2
|
+
import { inertiaRegisterHelper } from "../helpers/inertiaAutHelper.js";
|
|
3
3
|
export default async function register(req, res) {
|
|
4
4
|
if (!req.adminizer.config.auth.enable || req.adminizer.config.registration?.enable !== true) {
|
|
5
5
|
return res.redirect(`${req.adminizer.config.routePrefix}/`);
|
package/controllers/remove.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ControllerHelper } from "../helpers/controllerHelper";
|
|
2
|
-
import { deleteRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper";
|
|
3
|
-
import { DataAccessor } from "../lib/DataAccessor";
|
|
4
|
-
import { Adminizer } from "../lib/Adminizer";
|
|
1
|
+
import { ControllerHelper } from "../helpers/controllerHelper.js";
|
|
2
|
+
import { deleteRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper.js";
|
|
3
|
+
import { DataAccessor } from "../lib/DataAccessor.js";
|
|
4
|
+
import { Adminizer } from "../lib/Adminizer.js";
|
|
5
5
|
export default async function remove(req, res) {
|
|
6
6
|
// Checking id of the record
|
|
7
7
|
if (!req.params.id) {
|
package/controllers/view.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ControllerHelper } from "../helpers/controllerHelper";
|
|
2
|
-
import { DataAccessor } from "../lib/DataAccessor";
|
|
3
|
-
import { Adminizer } from "../lib/Adminizer";
|
|
4
|
-
import { inertiaUserHelper } from "../helpers/inertiaUserHelper";
|
|
5
|
-
import { inertiaGroupHelper } from "../helpers/inertiaGroupHelper";
|
|
6
|
-
import inertiaAddHelper from "../helpers/inertiaAddHelper";
|
|
7
|
-
import { FieldsHelper } from "../helpers/fieldsHelper";
|
|
8
|
-
import { getRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper";
|
|
1
|
+
import { ControllerHelper } from "../helpers/controllerHelper.js";
|
|
2
|
+
import { DataAccessor } from "../lib/DataAccessor.js";
|
|
3
|
+
import { Adminizer } from "../lib/Adminizer.js";
|
|
4
|
+
import { inertiaUserHelper } from "../helpers/inertiaUserHelper.js";
|
|
5
|
+
import { inertiaGroupHelper } from "../helpers/inertiaGroupHelper.js";
|
|
6
|
+
import inertiaAddHelper from "../helpers/inertiaAddHelper.js";
|
|
7
|
+
import { FieldsHelper } from "../helpers/fieldsHelper.js";
|
|
8
|
+
import { getRelationsMediaManager } from "../lib/media-manager/helpers/MediaManagerHelper.js";
|
|
9
9
|
export default async function view(req, res) {
|
|
10
10
|
// Check id
|
|
11
11
|
if (!req.params.id) {
|
|
@@ -86,9 +86,11 @@ export default async function view(req, res) {
|
|
|
86
86
|
for (const field of Object.keys(fields)) {
|
|
87
87
|
let fieldConfigConfig = fields[field].config;
|
|
88
88
|
if (fieldConfigConfig.type === 'mediamanager') {
|
|
89
|
-
record[field] = await getRelationsMediaManager({
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
record[field] = await getRelationsMediaManager(req.adminizer, {
|
|
90
|
+
mediaManagerId: fieldConfigConfig.options?.id ?? "default",
|
|
91
|
+
model: entity.model.modelname,
|
|
92
|
+
widgetName: field,
|
|
93
|
+
modelId: req.params.id
|
|
92
94
|
});
|
|
93
95
|
}
|
|
94
96
|
}
|
package/helpers/fieldsHelper.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { DataAccessor } from "../lib/DataAccessor";
|
|
2
|
-
import { Adminizer } from "../lib/Adminizer";
|
|
3
|
-
import { isObject } from "./JsUtils";
|
|
1
|
+
import { DataAccessor } from "../lib/DataAccessor.js";
|
|
2
|
+
import { Adminizer } from "../lib/Adminizer.js";
|
|
3
|
+
import { isObject } from "./JsUtils.js";
|
|
4
4
|
export class FieldsHelper {
|
|
5
5
|
/**
|
|
6
6
|
* Load list of records for all associations into `fields`
|
package/helpers/formHelper.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import inertiaActionsHelper from "./inertiaActionsHelper";
|
|
1
|
+
import inertiaActionsHelper from "./inertiaActionsHelper.js";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import { isObject } from "./JsUtils";
|
|
4
|
-
import { MediaManagerHandler } from "../lib/media-manager/MediaManagerHandler";
|
|
3
|
+
import { isObject } from "./JsUtils.js";
|
|
5
4
|
export default function inertiaAddHelper(req, entity, fields, record, view = false) {
|
|
6
5
|
const actionType = 'add';
|
|
7
6
|
let props = {
|
|
@@ -107,7 +106,7 @@ export default function inertiaAddHelper(req, entity, fields, record, view = fal
|
|
|
107
106
|
if (type === 'mediamanager') {
|
|
108
107
|
const mConfig = field.config;
|
|
109
108
|
const mOptions = mConfig?.options;
|
|
110
|
-
const mediaManager =
|
|
109
|
+
const mediaManager = req.adminizer.mediaManagerHandler.get(mOptions.id || 'default');
|
|
111
110
|
if (!mediaManager) {
|
|
112
111
|
options = {};
|
|
113
112
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { inputText, setSelectMany, getControlsOptions } from "./inertiaAddHelper";
|
|
2
|
-
import { MediaManagerHandler } from "../lib/media-manager/MediaManagerHandler";
|
|
1
|
+
import { inputText, setSelectMany, getControlsOptions } from "./inertiaAddHelper.js";
|
|
3
2
|
export default function inertiaFormHelper(req, postLink, formData) {
|
|
4
3
|
let props = {
|
|
5
4
|
fields: [],
|
|
@@ -74,7 +73,7 @@ export default function inertiaFormHelper(req, postLink, formData) {
|
|
|
74
73
|
}
|
|
75
74
|
if (type === 'mediamanager') {
|
|
76
75
|
const mOptions = field.options;
|
|
77
|
-
const mediaManager =
|
|
76
|
+
const mediaManager = req.adminizer.mediaManagerHandler.get(mOptions.id || 'default');
|
|
78
77
|
if (!mediaManager) {
|
|
79
78
|
options = {};
|
|
80
79
|
}
|
package/helpers/menuHelper.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as path from "path";
|
|
2
2
|
import * as fs from "fs";
|
|
3
|
-
import { Adminizer } from "../lib/Adminizer";
|
|
4
|
-
import { I18n } from "../lib/I18n";
|
|
3
|
+
import { Adminizer } from "../lib/Adminizer.js";
|
|
4
|
+
import { I18n } from "../lib/I18n.js";
|
|
5
5
|
export class TranslationHelper {
|
|
6
6
|
static loadTranslations(adminizer, translationsPath) {
|
|
7
7
|
let translationsConfig = adminizer.config.translation;
|
package/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from "./interfaces/MaaterialIcons";
|
|
|
17
17
|
export * from "./lib/model/AbstractModel";
|
|
18
18
|
export * from "./lib/model/adapter/waterline";
|
|
19
19
|
export * from "./lib/model/adapter/sequelize";
|
|
20
|
+
export * from "./lib/media-manager/AbstractMediaManager";
|
|
20
21
|
export * from "./lib/Adminizer";
|
|
21
22
|
export * from "./models/GroupAP";
|
|
22
23
|
export * from "./models/UserAP";
|
|
@@ -25,3 +26,7 @@ export * from "./models/MediaManagerAssociationsAP";
|
|
|
25
26
|
export * from "./models/MediaManagerMetaAP";
|
|
26
27
|
export * from "./models/NavigationAP";
|
|
27
28
|
export * from "./migrations";
|
|
29
|
+
export * from "./system/bindNavigation";
|
|
30
|
+
export * from "./lib/helper/jwt";
|
|
31
|
+
export * from "./lib/notifications/AbstractNotificationService";
|
|
32
|
+
export * from "./lib/POWCaptcha";
|
package/index.js
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
|
-
export * from "./helpers/configHelper";
|
|
2
|
-
export * from "./helpers/accessRightsHelper";
|
|
3
|
-
export * from "./lib/widgets/abstractAction";
|
|
4
|
-
export * from "./lib/widgets/abstractInfo";
|
|
5
|
-
export * from "./lib/widgets/abstractCustom";
|
|
6
|
-
export * from "./lib/widgets/abstractLink";
|
|
7
|
-
export * from "./lib/widgets/abstractWidgetBase";
|
|
8
|
-
export * from "./lib/widgets/abstractSwitch";
|
|
9
|
-
export * from "./lib/widgets/widgetHandler";
|
|
10
|
-
export * from "./lib/catalog/AbstractCatalog";
|
|
11
|
-
export * from "./lib/catalog/Navigation";
|
|
12
|
-
export * from "./lib/catalog/CatalogHandler";
|
|
13
|
-
export * from "./lib/media-manager/MediaManagerHandler";
|
|
14
|
-
export * from "./interfaces/adminpanelConfig";
|
|
15
|
-
export * from "./interfaces/types";
|
|
16
|
-
export * from "./interfaces/MaaterialIcons";
|
|
17
|
-
export * from "./lib/model/AbstractModel";
|
|
18
|
-
export * from "./lib/model/adapter/waterline";
|
|
19
|
-
export * from "./lib/model/adapter/sequelize";
|
|
20
|
-
export * from "./lib/
|
|
21
|
-
export * from "./
|
|
22
|
-
export * from "./models/
|
|
23
|
-
export * from "./models/
|
|
24
|
-
export * from "./models/
|
|
25
|
-
export * from "./models/
|
|
26
|
-
export * from "./models/
|
|
1
|
+
export * from "./helpers/configHelper.js";
|
|
2
|
+
export * from "./helpers/accessRightsHelper.js";
|
|
3
|
+
export * from "./lib/widgets/abstractAction.js";
|
|
4
|
+
export * from "./lib/widgets/abstractInfo.js";
|
|
5
|
+
export * from "./lib/widgets/abstractCustom.js";
|
|
6
|
+
export * from "./lib/widgets/abstractLink.js";
|
|
7
|
+
export * from "./lib/widgets/abstractWidgetBase.js";
|
|
8
|
+
export * from "./lib/widgets/abstractSwitch.js";
|
|
9
|
+
export * from "./lib/widgets/widgetHandler.js";
|
|
10
|
+
export * from "./lib/catalog/AbstractCatalog.js";
|
|
11
|
+
export * from "./lib/catalog/Navigation.js";
|
|
12
|
+
export * from "./lib/catalog/CatalogHandler.js";
|
|
13
|
+
export * from "./lib/media-manager/MediaManagerHandler.js";
|
|
14
|
+
export * from "./interfaces/adminpanelConfig.js";
|
|
15
|
+
export * from "./interfaces/types.js";
|
|
16
|
+
export * from "./interfaces/MaaterialIcons.js";
|
|
17
|
+
export * from "./lib/model/AbstractModel.js";
|
|
18
|
+
export * from "./lib/model/adapter/waterline.js";
|
|
19
|
+
export * from "./lib/model/adapter/sequelize.js";
|
|
20
|
+
export * from "./lib/media-manager/AbstractMediaManager.js";
|
|
21
|
+
export * from "./lib/Adminizer.js";
|
|
22
|
+
export * from "./models/GroupAP.js";
|
|
23
|
+
export * from "./models/UserAP.js";
|
|
24
|
+
export * from "./models/MediaManagerAP.js";
|
|
25
|
+
export * from "./models/MediaManagerAssociationsAP.js";
|
|
26
|
+
export * from "./models/MediaManagerMetaAP.js";
|
|
27
|
+
export * from "./models/NavigationAP.js";
|
|
27
28
|
export * from "./migrations";
|
|
29
|
+
export * from "./system/bindNavigation.js";
|
|
30
|
+
export * from "./lib/helper/jwt.js";
|
|
31
|
+
export * from "./lib/notifications/AbstractNotificationService.js";
|
|
32
|
+
export * from "./lib/POWCaptcha.js";
|
|
@@ -190,6 +190,15 @@ export interface AdminpanelConfig {
|
|
|
190
190
|
};
|
|
191
191
|
notifications?: {
|
|
192
192
|
enabled: boolean;
|
|
193
|
+
enableGeneral?: boolean;
|
|
194
|
+
};
|
|
195
|
+
cors?: {
|
|
196
|
+
enabled: boolean;
|
|
197
|
+
origin: string[] | string;
|
|
198
|
+
path: string;
|
|
199
|
+
credentials?: boolean;
|
|
200
|
+
methods?: string[];
|
|
201
|
+
allowedHeaders?: string[];
|
|
193
202
|
};
|
|
194
203
|
}
|
|
195
204
|
export interface ModelConfig {
|
|
@@ -347,6 +356,8 @@ export interface TuiEditorFieldConfig extends BaseFieldConfig {
|
|
|
347
356
|
export interface MediaManagerOptionsField {
|
|
348
357
|
id: 'default' | string;
|
|
349
358
|
group: string;
|
|
359
|
+
accept: string[];
|
|
360
|
+
initTab?: 'tile-image' | 'table-video' | 'table-text' | 'table-application' | 'table-all' | 'tile-all';
|
|
350
361
|
config?: Record<string, any>;
|
|
351
362
|
}
|
|
352
363
|
interface RangeType {
|
|
@@ -452,6 +463,7 @@ export interface NavigationConfig {
|
|
|
452
463
|
groupField: {
|
|
453
464
|
name: string;
|
|
454
465
|
required: boolean;
|
|
466
|
+
label: string;
|
|
455
467
|
}[];
|
|
456
468
|
allowContentInGroup?: boolean;
|
|
457
469
|
items: NavigationItemTypeConfig[];
|
package/lib/Adminizer.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ import { ControlsHandler } from "./controls/ControlsHandler";
|
|
|
14
14
|
import { CatalogHandler } from "./catalog/CatalogHandler";
|
|
15
15
|
import { NotificationHandler } from './notifications/NotificationHandler';
|
|
16
16
|
import { INotification } from "../interfaces/types";
|
|
17
|
+
import { MediaManagerHandler } from "./media-manager/MediaManagerHandler";
|
|
18
|
+
import { StorageServices } from "./catalog/Navigation";
|
|
17
19
|
export declare class Adminizer {
|
|
18
20
|
/**
|
|
19
21
|
* If you convey this default Middleware, it will add it to the very top of the router,
|
|
@@ -34,6 +36,8 @@ export declare class Adminizer {
|
|
|
34
36
|
vite: ViteDevServer;
|
|
35
37
|
controlsHandler: ControlsHandler;
|
|
36
38
|
catalogHandler: CatalogHandler;
|
|
39
|
+
mediaManagerHandler: MediaManagerHandler;
|
|
40
|
+
storageServices: StorageServices;
|
|
37
41
|
jwtSecret: string;
|
|
38
42
|
static logger: winston.Logger;
|
|
39
43
|
constructor(ormAdapters: AbstractAdapter[]);
|
|
@@ -46,9 +50,6 @@ export declare class Adminizer {
|
|
|
46
50
|
init(config: AdminpanelConfig): Promise<void>;
|
|
47
51
|
sendNotification(notification: Omit<INotification, 'id' | 'createdAt' | 'icon'>): Promise<boolean>;
|
|
48
52
|
logSystemEvent(title: string, message: string, metadata?: any): Promise<boolean>;
|
|
49
|
-
logSystemCreatedEvent(title: string, message: string, metadata?: any): Promise<boolean>;
|
|
50
|
-
logSystemUpdatedEvent(title: string, message: string, metadata?: any): Promise<boolean>;
|
|
51
|
-
logSystemDeletedEvent(title: string, message: string, metadata?: any): Promise<boolean>;
|
|
52
53
|
get emitter(): EventEmitter;
|
|
53
54
|
getOrmAdapter(ormType: string): AbstractAdapter;
|
|
54
55
|
static get log(): {
|
package/lib/Adminizer.js
CHANGED
|
@@ -3,33 +3,35 @@ import cookieParser from 'cookie-parser';
|
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
import winston from "winston";
|
|
5
5
|
import EventEmitter from 'events';
|
|
6
|
-
import PolicyManager from "./PolicyManager";
|
|
7
|
-
import Router from "./../system/Router";
|
|
8
|
-
import bindAssets from "../system/bindAssets";
|
|
9
|
-
import bindDev from "../system/bindDev";
|
|
10
|
-
import bindDashboardWidgets from "../system/bindDashboardWidgets";
|
|
11
|
-
import bindNavigation from "../system/bindNavigation";
|
|
12
|
-
import bindMediaManager from "../system/bindMediaManager";
|
|
13
|
-
import bindAccessRights from "../system/bindAccessRights";
|
|
14
|
-
import bindAuthorization from "../system/bindAuthorization";
|
|
15
|
-
import bindModels from "../system/bindModels";
|
|
16
|
-
import bindForms from "../system/bindForms";
|
|
17
|
-
import bindTranslations from "../system/bindTranslations";
|
|
18
|
-
import { ModelHandler } from "./model/ModelHandler";
|
|
19
|
-
import { WidgetHandler } from "./widgets/widgetHandler";
|
|
20
|
-
import { AccessRightsHelper } from "../helpers/accessRightsHelper";
|
|
21
|
-
import bindReqFunctions from "../system/bindReqFunctions";
|
|
22
|
-
import { ConfigHelper } from "../helpers/configHelper";
|
|
23
|
-
import { I18n } from "./I18n";
|
|
24
|
-
import { getDefaultConfig } from "../system/defaults";
|
|
25
|
-
import bindExpressUtils from "../system/bindExpressUtils";
|
|
26
|
-
import { bindInertia } from "../system/bindInertia";
|
|
27
|
-
import { MenuHelper } from "../helpers/menuHelper";
|
|
28
|
-
import { bindControls } from "../system/bindControls";
|
|
29
|
-
import { ControlsHandler } from "./controls/ControlsHandler";
|
|
30
|
-
import { CatalogHandler } from "./catalog/CatalogHandler";
|
|
6
|
+
import PolicyManager from "./PolicyManager.js";
|
|
7
|
+
import Router from "./../system/Router.js";
|
|
8
|
+
import bindAssets from "../system/bindAssets.js";
|
|
9
|
+
import bindDev from "../system/bindDev.js";
|
|
10
|
+
import bindDashboardWidgets from "../system/bindDashboardWidgets.js";
|
|
11
|
+
import { bindNavigation } from "../system/bindNavigation.js";
|
|
12
|
+
import bindMediaManager from "../system/bindMediaManager.js";
|
|
13
|
+
import bindAccessRights from "../system/bindAccessRights.js";
|
|
14
|
+
import bindAuthorization from "../system/bindAuthorization.js";
|
|
15
|
+
import bindModels from "../system/bindModels.js";
|
|
16
|
+
import bindForms from "../system/bindForms.js";
|
|
17
|
+
import bindTranslations from "../system/bindTranslations.js";
|
|
18
|
+
import { ModelHandler } from "./model/ModelHandler.js";
|
|
19
|
+
import { WidgetHandler } from "./widgets/widgetHandler.js";
|
|
20
|
+
import { AccessRightsHelper } from "../helpers/accessRightsHelper.js";
|
|
21
|
+
import bindReqFunctions from "../system/bindReqFunctions.js";
|
|
22
|
+
import { ConfigHelper } from "../helpers/configHelper.js";
|
|
23
|
+
import { I18n } from "./I18n.js";
|
|
24
|
+
import { getDefaultConfig } from "../system/defaults.js";
|
|
25
|
+
import bindExpressUtils from "../system/bindExpressUtils.js";
|
|
26
|
+
import { bindInertia } from "../system/bindInertia.js";
|
|
27
|
+
import { MenuHelper } from "../helpers/menuHelper.js";
|
|
28
|
+
import { bindControls } from "../system/bindControls.js";
|
|
29
|
+
import { ControlsHandler } from "./controls/ControlsHandler.js";
|
|
30
|
+
import { CatalogHandler } from "./catalog/CatalogHandler.js";
|
|
31
31
|
import { v4 as uuid } from "uuid";
|
|
32
|
-
import { bindNotifications } from "../system/bindNotifications";
|
|
32
|
+
import { bindNotifications } from "../system/bindNotifications.js";
|
|
33
|
+
import { MediaManagerHandler } from "./media-manager/MediaManagerHandler.js";
|
|
34
|
+
import { bindCors } from "../system/bindCors.js";
|
|
33
35
|
export class Adminizer {
|
|
34
36
|
// Preconfigures
|
|
35
37
|
/**
|
|
@@ -52,6 +54,8 @@ export class Adminizer {
|
|
|
52
54
|
vite;
|
|
53
55
|
controlsHandler;
|
|
54
56
|
catalogHandler;
|
|
57
|
+
mediaManagerHandler;
|
|
58
|
+
storageServices;
|
|
55
59
|
// Constants
|
|
56
60
|
jwtSecret = process.env.JWT_SECRET ?? uuid();
|
|
57
61
|
static logger = winston.createLogger({
|
|
@@ -147,16 +151,9 @@ export class Adminizer {
|
|
|
147
151
|
chalk.blue('\nAccess your app at http://localhost:3000'));
|
|
148
152
|
}
|
|
149
153
|
async init(config) {
|
|
150
|
-
// set cookie parser
|
|
151
|
-
this.app.use(cookieParser());
|
|
152
154
|
if (!config || Object.keys(config).length === 0) {
|
|
153
155
|
Adminizer.log.warn(`Adminizer init > Adminizer config is emtpy`);
|
|
154
156
|
}
|
|
155
|
-
// Set vite middleware
|
|
156
|
-
const isViteDev = process.env.VITE_ENV === "dev";
|
|
157
|
-
if (isViteDev)
|
|
158
|
-
await this.viteMiddleware();
|
|
159
|
-
this.emitter.emit('adminizer:init');
|
|
160
157
|
if (this.config && Object.keys(this.config).length > 0) {
|
|
161
158
|
throw new Error("Config has already been initialized");
|
|
162
159
|
}
|
|
@@ -181,6 +178,15 @@ export class Adminizer {
|
|
|
181
178
|
set: configForms.set ?? defaultForms.set
|
|
182
179
|
}
|
|
183
180
|
};
|
|
181
|
+
// Bind cors
|
|
182
|
+
bindCors(this);
|
|
183
|
+
// set cookie parser
|
|
184
|
+
this.app.use(cookieParser());
|
|
185
|
+
// Set vite middleware
|
|
186
|
+
const isViteDev = process.env.VITE_ENV === "dev";
|
|
187
|
+
if (isViteDev)
|
|
188
|
+
await this.viteMiddleware();
|
|
189
|
+
this.emitter.emit('adminizer:init');
|
|
184
190
|
this.modelHandler = new ModelHandler();
|
|
185
191
|
// TODO: 'hot reload' unbind models & unbind forms
|
|
186
192
|
await bindModels(this);
|
|
@@ -195,6 +201,7 @@ export class Adminizer {
|
|
|
195
201
|
this.menuHelper = new MenuHelper(this.config);
|
|
196
202
|
this.widgetHandler = new WidgetHandler(this);
|
|
197
203
|
this.catalogHandler = new CatalogHandler();
|
|
204
|
+
this.mediaManagerHandler = new MediaManagerHandler();
|
|
198
205
|
bindExpressUtils(this.app);
|
|
199
206
|
bindReqFunctions(this);
|
|
200
207
|
// Bind assets
|
|
@@ -205,7 +212,7 @@ export class Adminizer {
|
|
|
205
212
|
}
|
|
206
213
|
}
|
|
207
214
|
await bindDashboardWidgets(this);
|
|
208
|
-
bindNavigation(this);
|
|
215
|
+
await bindNavigation(this);
|
|
209
216
|
bindMediaManager(this);
|
|
210
217
|
await bindAccessRights(this);
|
|
211
218
|
if (I18n.appendLocale) {
|
|
@@ -250,19 +257,6 @@ export class Adminizer {
|
|
|
250
257
|
return Promise.resolve(false);
|
|
251
258
|
}
|
|
252
259
|
}
|
|
253
|
-
// Хелпер для CRUD системных событий
|
|
254
|
-
async logSystemCreatedEvent(title, message, metadata) {
|
|
255
|
-
const systemNotificationService = this.notificationHandler.getService('system');
|
|
256
|
-
return systemNotificationService.logCreatedEvent(title, message, metadata);
|
|
257
|
-
}
|
|
258
|
-
async logSystemUpdatedEvent(title, message, metadata) {
|
|
259
|
-
const systemNotificationService = this.notificationHandler.getService('system');
|
|
260
|
-
return systemNotificationService.logUpdatedEvent(title, message, metadata);
|
|
261
|
-
}
|
|
262
|
-
async logSystemDeletedEvent(title, message, metadata) {
|
|
263
|
-
const systemNotificationService = this.notificationHandler.getService('system');
|
|
264
|
-
return systemNotificationService.logDeletedEvent(title, message, metadata);
|
|
265
|
-
}
|
|
266
260
|
get emitter() {
|
|
267
261
|
return this._emitter;
|
|
268
262
|
}
|
package/lib/DataAccessor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ControllerHelper } from "../helpers/controllerHelper";
|
|
2
|
-
import { Adminizer } from "./Adminizer";
|
|
3
|
-
import { isObject } from "../helpers/JsUtils";
|
|
1
|
+
import { ControllerHelper } from "../helpers/controllerHelper.js";
|
|
2
|
+
import { Adminizer } from "./Adminizer.js";
|
|
3
|
+
import { isObject } from "../helpers/JsUtils.js";
|
|
4
4
|
export class DataAccessor {
|
|
5
5
|
adminizer;
|
|
6
6
|
user;
|