adminizer 4.1.0-build.11 → 4.1.0-build.13
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/controllers/add.js +2 -2
- package/controllers/addGroup.js +2 -2
- package/controllers/addUser.js +2 -2
- package/controllers/catalog/Catalog.js +2 -2
- package/controllers/catalog/FrontentCatalogAdapter.js +1 -1
- package/controllers/ckeditorUpload.js +2 -2
- package/controllers/dashboard.js +1 -1
- package/controllers/edit.js +2 -2
- package/controllers/editGroup.js +2 -2
- package/controllers/editUser.js +2 -2
- package/controllers/form.js +2 -2
- package/controllers/getAllWidgets.js +3 -3
- package/controllers/list.js +2 -2
- package/controllers/login.js +20 -9
- package/controllers/media-manager/mediaManagerApi.js +2 -2
- package/controllers/navigation/edit.js +1 -1
- package/controllers/processInstallFinalize.js +2 -2
- package/controllers/processInstallStep.d.ts +0 -1
- package/controllers/processInstallStep.js +122 -132
- package/controllers/remove.js +2 -2
- package/controllers/timezones.js +1 -1
- package/controllers/view.js +2 -2
- package/controllers/welcome.js +1 -1
- package/controllers/widgets/Action.js +2 -2
- package/controllers/widgets/Custom.js +2 -2
- package/controllers/widgets/Info.js +2 -2
- package/controllers/widgets/switch.js +2 -2
- package/controllers/widgetsDB.js +3 -3
- package/helpers/accessRightsHelper.d.ts +3 -2
- package/helpers/accessRightsHelper.js +1 -1
- package/helpers/inertiaActionsHelper.js +1 -1
- package/helpers/inertiaAddHelper.d.ts +1 -1
- package/helpers/inertiaGroupHelper.d.ts +4 -2
- package/helpers/inertiaGroupHelper.js +1 -1
- package/helpers/inertiaListHelper.js +5 -5
- package/helpers/inertiaMenuHelper.js +1 -1
- package/helpers/inertiaUserHelper.d.ts +3 -1
- package/helpers/inertiaUserHelper.js +1 -1
- package/interfaces/adminpanelConfig.d.ts +4 -2
- package/interfaces/global.d.ts +5 -26
- package/lib/Adminizer.d.ts +1 -0
- package/lib/Adminizer.js +3 -1
- package/lib/catalog/Navigation.js +6 -6
- package/lib/installStepper/installStepper.js +5 -5
- package/lib/v4/DataAccessor.d.ts +2 -1
- package/lib/v4/DataAccessor.js +1 -1
- package/lib/v4/helper/jwt.d.ts +10 -0
- package/lib/v4/helper/jwt.js +18 -0
- package/lib/widgets/widgetHandler.d.ts +2 -1
- package/models/GroupAP.d.ts +1 -1
- package/models/UserAP.d.ts +6 -4
- package/models/UserAP.js +2 -2
- package/package.json +8 -5
- package/policies/checkAuth.js +4 -3
- package/policies/setLocale.js +2 -2
- package/system/Router.js +8 -8
- package/system/bindAuthorization.js +1 -2
- package/system/bindInertia.js +8 -8
- package/system/bindInstallStepper.js +1 -1
- package/system/bindReqFunctions.js +16 -0
package/controllers/add.js
CHANGED
|
@@ -14,10 +14,10 @@ export default async function add(req, res) {
|
|
|
14
14
|
return req.Inertia.redirect(`${req.adminizer.config.routePrefix}/${entity.uri}`);
|
|
15
15
|
}
|
|
16
16
|
if (req.adminizer.config.auth.enable) {
|
|
17
|
-
if (!req.
|
|
17
|
+
if (!req.user) {
|
|
18
18
|
return req.Inertia.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
19
19
|
}
|
|
20
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`create-${entity.name}-model`, req.
|
|
20
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`create-${entity.name}-model`, req.user)) {
|
|
21
21
|
return res.sendStatus(403);
|
|
22
22
|
}
|
|
23
23
|
}
|
package/controllers/addGroup.js
CHANGED
|
@@ -4,10 +4,10 @@ import { inertiaGroupHelper } from "../helpers/inertiaGroupHelper";
|
|
|
4
4
|
export default async function addGroup(req, res) {
|
|
5
5
|
let entity = ControllerHelper.findEntityObject(req);
|
|
6
6
|
if (req.adminizer.config.auth.enable) {
|
|
7
|
-
if (!req.
|
|
7
|
+
if (!req.user) {
|
|
8
8
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
9
9
|
}
|
|
10
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`create-${entity.name}-model`, req.
|
|
10
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`create-${entity.name}-model`, req.user)) {
|
|
11
11
|
return res.sendStatus(403);
|
|
12
12
|
}
|
|
13
13
|
}
|
package/controllers/addUser.js
CHANGED
|
@@ -5,10 +5,10 @@ import { inertiaUserHelper } from "../helpers/inertiaUserHelper";
|
|
|
5
5
|
export default async function (req, res) {
|
|
6
6
|
let entity = ControllerHelper.findEntityObject(req);
|
|
7
7
|
if (req.adminizer.config.auth.enable) {
|
|
8
|
-
if (!req.
|
|
8
|
+
if (!req.user) {
|
|
9
9
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
10
10
|
}
|
|
11
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`create-${entity.name}-model`, req.
|
|
11
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`create-${entity.name}-model`, req.user)) {
|
|
12
12
|
return res.sendStatus(403);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -6,10 +6,10 @@ export async function catalogController(req, res) {
|
|
|
6
6
|
let id = req.params.id ? req.params.id : '';
|
|
7
7
|
const postfix = id ? `${slug}-${id}` : `${slug}`;
|
|
8
8
|
if (req.adminizer.config.auth.enable) {
|
|
9
|
-
if (!req.
|
|
9
|
+
if (!req.user) {
|
|
10
10
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
11
11
|
}
|
|
12
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`catalog-${postfix}`, req.
|
|
12
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`catalog-${postfix}`, req.user)) {
|
|
13
13
|
return res.sendStatus(403);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -38,7 +38,7 @@ export class VueCatalog {
|
|
|
38
38
|
obj[actionHandler.name] = "";
|
|
39
39
|
}
|
|
40
40
|
let messages = obj;
|
|
41
|
-
req.i18n.setLocale(req.
|
|
41
|
+
req.i18n.setLocale(req.user.locale);
|
|
42
42
|
let outMessages = {};
|
|
43
43
|
for (const mess of Object.keys(messages)) {
|
|
44
44
|
outMessages[mess] = req.i18n.__(mess);
|
|
@@ -4,7 +4,7 @@ import { Adminizer } from "../lib/Adminizer";
|
|
|
4
4
|
export default function upload(req, res) {
|
|
5
5
|
let entity = ControllerHelper.findEntityObject(req);
|
|
6
6
|
if (req.adminizer.config.auth.enable) {
|
|
7
|
-
if (!req.
|
|
7
|
+
if (!req.user) {
|
|
8
8
|
res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
@@ -13,7 +13,7 @@ export default function upload(req, res) {
|
|
|
13
13
|
`create-${entity.name}-model`,
|
|
14
14
|
`update-${entity.name}-form`,
|
|
15
15
|
`create-${entity.name}-form`
|
|
16
|
-
], req.
|
|
16
|
+
], req.user)) {
|
|
17
17
|
res.sendStatus(403);
|
|
18
18
|
return;
|
|
19
19
|
}
|
package/controllers/dashboard.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default function (req, res) {
|
|
2
|
-
if (req.adminizer.config.auth.enable && !req.
|
|
2
|
+
if (req.adminizer.config.auth.enable && !req.user) {
|
|
3
3
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
4
4
|
}
|
|
5
5
|
return req.Inertia.render({
|
package/controllers/edit.js
CHANGED
|
@@ -19,10 +19,10 @@ export default async function edit(req, res) {
|
|
|
19
19
|
return res.redirect(`${req.adminizer.config.routePrefix}/${entity.uri}`);
|
|
20
20
|
}
|
|
21
21
|
if (req.adminizer.config.auth.enable) {
|
|
22
|
-
if (!req.
|
|
22
|
+
if (!req.user) {
|
|
23
23
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
24
24
|
}
|
|
25
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`update-${entity.name}-model`, req.
|
|
25
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`update-${entity.name}-model`, req.user)) {
|
|
26
26
|
return res.sendStatus(403);
|
|
27
27
|
}
|
|
28
28
|
}
|
package/controllers/editGroup.js
CHANGED
|
@@ -4,10 +4,10 @@ import { inertiaGroupHelper } from "../helpers/inertiaGroupHelper";
|
|
|
4
4
|
export default async function editGroup(req, res) {
|
|
5
5
|
let entity = ControllerHelper.findEntityObject(req);
|
|
6
6
|
if (req.adminizer.config.auth.enable) {
|
|
7
|
-
if (!req.
|
|
7
|
+
if (!req.user) {
|
|
8
8
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
9
9
|
}
|
|
10
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`update-${entity.name}-model`, req.
|
|
10
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`update-${entity.name}-model`, req.user)) {
|
|
11
11
|
return res.sendStatus(403);
|
|
12
12
|
}
|
|
13
13
|
}
|
package/controllers/editUser.js
CHANGED
|
@@ -5,10 +5,10 @@ import { inertiaUserHelper } from "../helpers/inertiaUserHelper";
|
|
|
5
5
|
export default async function (req, res) {
|
|
6
6
|
let entity = ControllerHelper.findEntityObject(req);
|
|
7
7
|
if (req.adminizer.config.auth.enable) {
|
|
8
|
-
if (!req.
|
|
8
|
+
if (!req.user) {
|
|
9
9
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
10
10
|
}
|
|
11
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`update-${entity.name}-model`, req.
|
|
11
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`update-${entity.name}-model`, req.user)) {
|
|
12
12
|
return res.sendStatus(403);
|
|
13
13
|
}
|
|
14
14
|
}
|
package/controllers/form.js
CHANGED
|
@@ -8,10 +8,10 @@ export default async function form(req, res) {
|
|
|
8
8
|
return res.status(404).send({ error: 'Not Found' });
|
|
9
9
|
}
|
|
10
10
|
if (req.adminizer.config.auth.enable) {
|
|
11
|
-
if (!req.
|
|
11
|
+
if (!req.user) {
|
|
12
12
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
13
13
|
}
|
|
14
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`update-${slug}-form`, req.
|
|
14
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`update-${slug}-form`, req.user)) {
|
|
15
15
|
return res.sendStatus(403);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
export default async function getAllWidgets(req, res) {
|
|
2
2
|
if (req.adminizer.config.auth.enable) {
|
|
3
|
-
if (!req.
|
|
3
|
+
if (!req.user) {
|
|
4
4
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
5
5
|
}
|
|
6
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`widgets`, req.
|
|
6
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`widgets`, req.user)) {
|
|
7
7
|
return res.sendStatus(403);
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
if (req.method.toUpperCase() === 'GET') {
|
|
11
11
|
try {
|
|
12
|
-
return res.json({ widgets: await req.adminizer.widgetHandler.getAll(req.
|
|
12
|
+
return res.json({ widgets: await req.adminizer.widgetHandler.getAll(req.user) });
|
|
13
13
|
}
|
|
14
14
|
catch (e) {
|
|
15
15
|
return res.status(500).send({ error: e.message || 'Internal Server Error' });
|
package/controllers/list.js
CHANGED
|
@@ -9,10 +9,10 @@ export default async function list(req, res) {
|
|
|
9
9
|
return res.status(404).send({ error: 'Not Found' });
|
|
10
10
|
}
|
|
11
11
|
if (req.adminizer.config.auth.enable) {
|
|
12
|
-
if (!req.
|
|
12
|
+
if (!req.user) {
|
|
13
13
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
14
14
|
}
|
|
15
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`read-${entity.name}-model`, req.
|
|
15
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`read-${entity.name}-model`, req.user)) {
|
|
16
16
|
return res.sendStatus(403);
|
|
17
17
|
}
|
|
18
18
|
}
|
package/controllers/login.js
CHANGED
|
@@ -2,6 +2,8 @@ import { POWCaptcha } from "../lib/v4/POWCaptcha";
|
|
|
2
2
|
import passwordHash from "password-hash";
|
|
3
3
|
import { inertiaLoginHelper } from "../helpers/inertiaAutHelper";
|
|
4
4
|
import { Adminizer } from "../lib/Adminizer";
|
|
5
|
+
import { signUser } from "../lib/v4/helper/jwt";
|
|
6
|
+
import { serialize } from "cookie";
|
|
5
7
|
export default async function login(req, res) {
|
|
6
8
|
const powCaptcha = new POWCaptcha();
|
|
7
9
|
if (req.originalUrl.indexOf("login") >= 0) {
|
|
@@ -24,9 +26,8 @@ export default async function login(req, res) {
|
|
|
24
26
|
if (!user) {
|
|
25
27
|
return res.sendStatus(404);
|
|
26
28
|
}
|
|
27
|
-
if (req.
|
|
28
|
-
req.session.
|
|
29
|
-
req.session.UserAP = user;
|
|
29
|
+
if (req.user.isAdministrator) {
|
|
30
|
+
req.session.userPretended = user;
|
|
30
31
|
// return res.sendStatus(200);
|
|
31
32
|
return req.Inertia.redirect(`${req.adminizer.config.routePrefix}`);
|
|
32
33
|
}
|
|
@@ -45,13 +46,18 @@ export default async function login(req, res) {
|
|
|
45
46
|
//Here we use the captchaSolution key to output messages unrelated to the form fields.
|
|
46
47
|
return inertiaAdminMessage(req, "Profile is not confirmed, please contact to administrator", 'captchaSolution');
|
|
47
48
|
}
|
|
48
|
-
// TODO: Add salt
|
|
49
49
|
if (passwordHash.verify(login + password + process.env.AP_PASSWORD_SALT, user.passwordHashed)) {
|
|
50
50
|
if (user.expires && Date.now() > Date.parse(user.expires)) {
|
|
51
51
|
//Here we use the captchaSolution key to output messages unrelated to the form fields.
|
|
52
52
|
return inertiaAdminMessage(req, "Profile expired, contact the administrator", 'captchaSolution');
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
const token = signUser(user, req.adminizer.jwtSecret);
|
|
55
|
+
res.setHeader('Set-Cookie', serialize('adminizer_jwt', token, {
|
|
56
|
+
httpOnly: true,
|
|
57
|
+
sameSite: 'lax',
|
|
58
|
+
path: '/',
|
|
59
|
+
maxAge: 60 * 60 * 24 * 7 * 2,
|
|
60
|
+
}));
|
|
55
61
|
return req.Inertia.redirect(`${req.adminizer.config.routePrefix}`);
|
|
56
62
|
}
|
|
57
63
|
else {
|
|
@@ -73,12 +79,17 @@ export default async function login(req, res) {
|
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
else if (req.originalUrl.indexOf("logout") >= 0) {
|
|
76
|
-
if (req.session.
|
|
77
|
-
|
|
78
|
-
req.session.adminPretender = {};
|
|
82
|
+
if (req.session.userPretended && req.session.userPretended.id && req.user && req.user.id) {
|
|
83
|
+
delete (req.session.userPretended);
|
|
79
84
|
return req.Inertia.redirect(`${req.adminizer.config.routePrefix}/`);
|
|
80
85
|
}
|
|
81
|
-
req.
|
|
86
|
+
req.user = undefined;
|
|
87
|
+
res.setHeader('Set-Cookie', serialize('adminizer_jwt', '', {
|
|
88
|
+
httpOnly: true,
|
|
89
|
+
sameSite: 'lax',
|
|
90
|
+
path: '/',
|
|
91
|
+
expires: new Date(0),
|
|
92
|
+
}));
|
|
82
93
|
req.Inertia.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
83
94
|
}
|
|
84
95
|
return res.status(404);
|
|
@@ -4,10 +4,10 @@ export async function mediaManagerController(req, res) {
|
|
|
4
4
|
const method = req.method.toUpperCase();
|
|
5
5
|
let id = req.params.id ? req.params.id : '';
|
|
6
6
|
if (req.adminizer.config.auth.enable) {
|
|
7
|
-
if (!req.
|
|
7
|
+
if (!req.user) {
|
|
8
8
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
9
9
|
}
|
|
10
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`catalog-${id}`, req.
|
|
10
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`catalog-${id}`, req.user)) {
|
|
11
11
|
return res.sendStatus(403);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -2,7 +2,7 @@ import { ControllerHelper } from "../../helpers/controllerHelper";
|
|
|
2
2
|
import { DataAccessor } from "../../lib/v4/DataAccessor";
|
|
3
3
|
export default async function edit(req, res) {
|
|
4
4
|
if (req.adminizer.config.auth.enable) {
|
|
5
|
-
if (!req.
|
|
5
|
+
if (!req.user) {
|
|
6
6
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
7
7
|
}
|
|
8
8
|
}
|
|
@@ -3,10 +3,10 @@ import { Adminizer } from "../lib/Adminizer";
|
|
|
3
3
|
let installStepper = InstallStepper.getInstance();
|
|
4
4
|
export default async function processInstallFinalize(req, res) {
|
|
5
5
|
if (req.adminizer.config.auth.enable) {
|
|
6
|
-
if (!req.
|
|
6
|
+
if (!req.user) {
|
|
7
7
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
8
8
|
}
|
|
9
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`process-install-step`, req.
|
|
9
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`process-install-step`, req.user)) {
|
|
10
10
|
return res.sendStatus(403);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function processInstallStep(req: ReqType, res: ResType): Promise<void>;
|
|
@@ -1,132 +1,122 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
catch (err) {
|
|
128
|
-
Adminizer.logger.error(`Failed to upload file: ${fieldName}`, err);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return uploadedFiles;
|
|
132
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
// import {InstallStepper} from "../lib/installStepper/installStepper";
|
|
3
|
+
// import * as path from "path";
|
|
4
|
+
// import {Adminizer} from "../lib/Adminizer";
|
|
5
|
+
// export default async function processInstallStep(req: ReqType, res: ResType): Promise<void> {
|
|
6
|
+
// if (req.adminizer.config.auth.enable) {
|
|
7
|
+
// if (!req.user) {
|
|
8
|
+
// res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
9
|
+
// return
|
|
10
|
+
// } else if (!req.adminizer.accessRightsHelper.hasPermission(`process-install-step`, req.user)) {
|
|
11
|
+
// res.sendStatus(403);
|
|
12
|
+
// return
|
|
13
|
+
// }
|
|
14
|
+
// }
|
|
15
|
+
// if (req.method.toUpperCase() === 'GET') {
|
|
16
|
+
// Adminizer.log.debug("GET REQUEST TO PROCESS INSTALL STEP")
|
|
17
|
+
// let installStepper = InstallStepper.getStepper(req.params.id);
|
|
18
|
+
// if (!installStepper) {
|
|
19
|
+
// res.redirect(`${req.adminizer.config.routePrefix}/`);
|
|
20
|
+
// return
|
|
21
|
+
// }
|
|
22
|
+
// if (installStepper.hasUnprocessedSteps() || installStepper.hasUnfinalizedSteps()) {
|
|
23
|
+
// let renderData = installStepper.render(req);
|
|
24
|
+
// let renderer = renderData.currentStep.renderer;
|
|
25
|
+
// // run onInit method before showing step to user
|
|
26
|
+
// try {
|
|
27
|
+
// await renderData.currentStep.onInit();
|
|
28
|
+
// } catch (e) {
|
|
29
|
+
// console.log("ERROR IN PROCESS INSTALL STEP", e)
|
|
30
|
+
// res.viewAdmin(`installer/error`, {error: e, stepperId: installStepper.id});
|
|
31
|
+
// return
|
|
32
|
+
// }
|
|
33
|
+
// res.viewAdmin(`installer/${renderer}`, {...renderData, stepperId: installStepper.id});
|
|
34
|
+
// return
|
|
35
|
+
// } else {
|
|
36
|
+
// res.redirect(`${req.adminizer.config.routePrefix}/`);
|
|
37
|
+
// return
|
|
38
|
+
// }
|
|
39
|
+
// }
|
|
40
|
+
// if (req.method.toUpperCase() === 'POST') {
|
|
41
|
+
// try {
|
|
42
|
+
// Adminizer.log.debug("POST REQUEST TO PROCESS INSTALL STEP", JSON.stringify(req.body, null, 2))
|
|
43
|
+
// let installStepper = InstallStepper.getStepper(req.params.id);
|
|
44
|
+
// const currentStepId = req.body.currentStepId;
|
|
45
|
+
// const filesCounter = req.body.filesCounter;
|
|
46
|
+
// // upload files before processing other fields (filesCounter > 0 means that req contains files)
|
|
47
|
+
// const uploadedFiles = await handleFileUploads(req, currentStepId, filesCounter);
|
|
48
|
+
// if (req.body.action === 'next') {
|
|
49
|
+
// const inputData = JSON.parse(req.body.inputData);
|
|
50
|
+
// if (uploadedFiles.length) {
|
|
51
|
+
// inputData.uploadedFiles = uploadedFiles;
|
|
52
|
+
// }
|
|
53
|
+
// // trying to process step
|
|
54
|
+
// await installStepper.processStep(currentStepId, inputData);
|
|
55
|
+
// } else if (req.body.action === 'skip') {
|
|
56
|
+
// // trying to skip step
|
|
57
|
+
// await installStepper.skipStep(currentStepId);
|
|
58
|
+
// } else {
|
|
59
|
+
// res.status(400).send("Invalid action parameter");
|
|
60
|
+
// return
|
|
61
|
+
// }
|
|
62
|
+
// // go back to stepper if there are more unprocessed steps, otherwise go back to /admin
|
|
63
|
+
// if (installStepper.hasUnprocessedSteps()) {
|
|
64
|
+
// res.redirect(`${req.adminizer.config.routePrefix}/install/${installStepper.id}`);
|
|
65
|
+
// return
|
|
66
|
+
// } else {
|
|
67
|
+
// res.redirect(`${req.adminizer.config.routePrefix}/`);
|
|
68
|
+
// return
|
|
69
|
+
// }
|
|
70
|
+
// } catch (error) {
|
|
71
|
+
// Adminizer.log.error("Error processing step:", error);
|
|
72
|
+
// res.status(500).send("Error processing step");
|
|
73
|
+
// return
|
|
74
|
+
// }
|
|
75
|
+
// }
|
|
76
|
+
// if (req.method.toUpperCase() === 'DELETE') {
|
|
77
|
+
// Adminizer.log.debug("DELETE REQUEST TO PROCESS INSTALL STEP", req.body)
|
|
78
|
+
// try {
|
|
79
|
+
// InstallStepper.deleteStepper(req.params.id);
|
|
80
|
+
// res.status(200).send("OK")
|
|
81
|
+
// return
|
|
82
|
+
// } catch (e) {
|
|
83
|
+
// res.status(403).send(e);
|
|
84
|
+
// return
|
|
85
|
+
// }
|
|
86
|
+
// }
|
|
87
|
+
// res.status(500).send("Invalid request method")
|
|
88
|
+
// return
|
|
89
|
+
// };
|
|
90
|
+
// async function handleFileUploads(req: ReqType, currentStepId: string | number, filesCounter: number): Promise<string[]> {
|
|
91
|
+
// const uploadedFiles: string[] = [];
|
|
92
|
+
// for (let i = 0; i < filesCounter; i++) {
|
|
93
|
+
// const fieldName = `files_${i}`;
|
|
94
|
+
// const uploadMiddleware = req.upload({
|
|
95
|
+
// destination: "installStepper/uploadedImages",
|
|
96
|
+
// filename: (file) => {
|
|
97
|
+
// const extension = path.extname(file.originalname);
|
|
98
|
+
// const baseName = path.basename(file.originalname, extension);
|
|
99
|
+
// return `${currentStepId}_${baseName}_${Date.now()}${extension}`;
|
|
100
|
+
// },
|
|
101
|
+
// }).single(fieldName);
|
|
102
|
+
// try {
|
|
103
|
+
// await new Promise<void>((resolve, reject) => {
|
|
104
|
+
// uploadMiddleware(req, null, (err) => {
|
|
105
|
+
// if (err) {
|
|
106
|
+
// Adminizer.logger.error(`Error uploading file: ${fieldName}`, err);
|
|
107
|
+
// reject(err);
|
|
108
|
+
// } else {
|
|
109
|
+
// const uploadedFile = (req.file as Express.Multer.File)?.path;
|
|
110
|
+
// if (uploadedFile) {
|
|
111
|
+
// uploadedFiles.push(uploadedFile);
|
|
112
|
+
// }
|
|
113
|
+
// resolve();
|
|
114
|
+
// }
|
|
115
|
+
// });
|
|
116
|
+
// });
|
|
117
|
+
// } catch (err) {
|
|
118
|
+
// Adminizer.logger.error(`Failed to upload file: ${fieldName}`, err);
|
|
119
|
+
// }
|
|
120
|
+
// }
|
|
121
|
+
// return uploadedFiles;
|
|
122
|
+
// }
|
package/controllers/remove.js
CHANGED
|
@@ -18,10 +18,10 @@ export default async function remove(req, res) {
|
|
|
18
18
|
return res.redirect(`${req.adminizer.config.routePrefix}/${entity.uri}`);
|
|
19
19
|
}
|
|
20
20
|
if (req.adminizer.config.auth.enable) {
|
|
21
|
-
if (!req.
|
|
21
|
+
if (!req.user) {
|
|
22
22
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
23
23
|
}
|
|
24
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`delete-${entity.name}-model`, req.
|
|
24
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`delete-${entity.name}-model`, req.user)) {
|
|
25
25
|
return res.sendStatus(403);
|
|
26
26
|
}
|
|
27
27
|
}
|
package/controllers/timezones.js
CHANGED
package/controllers/view.js
CHANGED
|
@@ -18,10 +18,10 @@ export default async function view(req, res) {
|
|
|
18
18
|
return res.status(404).send({ error: 'Not Found' });
|
|
19
19
|
}
|
|
20
20
|
if (req.adminizer.config.auth.enable) {
|
|
21
|
-
if (!req.
|
|
21
|
+
if (!req.user) {
|
|
22
22
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
23
23
|
}
|
|
24
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`read-${entity.name}-model`, req.
|
|
24
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`read-${entity.name}-model`, req.user)) {
|
|
25
25
|
return res.sendStatus(403);
|
|
26
26
|
}
|
|
27
27
|
}
|
package/controllers/welcome.js
CHANGED
|
@@ -4,10 +4,10 @@ export async function widgetActionController(req, res) {
|
|
|
4
4
|
return res.status(404).send({ error: 'Not Found' });
|
|
5
5
|
}
|
|
6
6
|
if (req.adminizer.config.auth.enable) {
|
|
7
|
-
if (!req.
|
|
7
|
+
if (!req.user) {
|
|
8
8
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
9
9
|
}
|
|
10
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`widget-${widgetId}`, req.
|
|
10
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`widget-${widgetId}`, req.user)) {
|
|
11
11
|
return res.sendStatus(403);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -4,10 +4,10 @@ export async function widgetCustomController(req, res) {
|
|
|
4
4
|
return res.status(404).send({ error: 'Not Found' });
|
|
5
5
|
}
|
|
6
6
|
if (req.adminizer.config.auth.enable) {
|
|
7
|
-
if (!req.
|
|
7
|
+
if (!req.user) {
|
|
8
8
|
return res.redirect(`${req.adminizer.config.routePrefix}/model/userap/login`);
|
|
9
9
|
}
|
|
10
|
-
else if (!req.adminizer.accessRightsHelper.hasPermission(`widget-${widgetId}`, req.
|
|
10
|
+
else if (!req.adminizer.accessRightsHelper.hasPermission(`widget-${widgetId}`, req.user)) {
|
|
11
11
|
return res.sendStatus(403);
|
|
12
12
|
}
|
|
13
13
|
}
|