sails-adminpanel
Advanced tools
Comparing version 2.0.1 to 2.1.0-st1
@@ -7,2 +7,3 @@ # Custom links | ||
- `global` or `inline` actions in `actions` property of `list` view | ||
- `tools` property to create link like instance submenu | ||
@@ -17,2 +18,11 @@ ## Action buttons | ||
model: 'Page', | ||
tools: [ | ||
{ | ||
id: "0", | ||
link: "/", | ||
title: "Some new action", | ||
icon: "ok", | ||
accessRightsToken: "someLinkToken" | ||
} | ||
], | ||
navbar: { | ||
@@ -19,0 +29,0 @@ additionalLinks: [ |
@@ -141,32 +141,34 @@ "use strict"; | ||
let menus = []; | ||
Object.entries(MenuHelper.config.instances).forEach(function ([key, val]) { | ||
if (val.tools && val.tools.length > 0 && val.tools[0].id !== "overview") { | ||
val.tools.unshift({ | ||
id: "overview", | ||
if (MenuHelper.config.instances) { | ||
Object.entries(MenuHelper.config.instances).forEach(function ([key, val]) { | ||
if (val.tools && val.tools.length > 0 && val.tools[0].id !== "overview") { | ||
val.tools.unshift({ | ||
id: "overview", | ||
link: MenuHelper.config.routePrefix + '/' + key, | ||
title: 'Overview', | ||
icon: "" | ||
}); | ||
} | ||
menus.push({ | ||
link: MenuHelper.config.routePrefix + '/' + key, | ||
title: 'Overview', | ||
icon: "" | ||
title: val.title, | ||
icon: val.icon || null, | ||
actions: val.tools || null, | ||
id: val.title.replace(" ", "_"), | ||
instanceName: key | ||
}); | ||
} | ||
menus.push({ | ||
link: MenuHelper.config.routePrefix + '/' + key, | ||
title: val.title, | ||
icon: val.icon || null, | ||
actions: val.tools || null, | ||
id: val.title.replace(" ", "_"), | ||
instanceName: key | ||
}); | ||
}); | ||
if (MenuHelper.config.navbar.additionalLinks && MenuHelper.config.navbar.additionalLinks.length > 0) { | ||
MenuHelper.config.navbar.additionalLinks.forEach(function (additionalLink) { | ||
if (!additionalLink.link || !additionalLink.title || additionalLink.disabled) { | ||
return; | ||
} | ||
menus.push({ | ||
link: additionalLink.link, | ||
title: additionalLink.title, | ||
id: additionalLink.id || additionalLink.title.replace(" ", "_"), | ||
icon: additionalLink.icon || null | ||
if (MenuHelper.config.navbar.additionalLinks && MenuHelper.config.navbar.additionalLinks.length > 0) { | ||
MenuHelper.config.navbar.additionalLinks.forEach(function (additionalLink) { | ||
if (!additionalLink.link || !additionalLink.title || additionalLink.disabled) { | ||
return; | ||
} | ||
menus.push({ | ||
link: additionalLink.link, | ||
title: additionalLink.title, | ||
id: additionalLink.id || additionalLink.title.replace(" ", "_"), | ||
icon: additionalLink.icon || null | ||
}); | ||
}); | ||
}); | ||
} | ||
} | ||
@@ -173,0 +175,0 @@ return menus; |
@@ -160,32 +160,34 @@ /** | ||
let menus = []; | ||
Object.entries<InstanceConfig>(MenuHelper.config.instances).forEach(function([key, val]) { | ||
if (val.tools && val.tools.length > 0 && val.tools[0].id !== "overview") { | ||
val.tools.unshift({ | ||
id: "overview", | ||
link: MenuHelper.config.routePrefix + '/' + key, | ||
title: 'Overview', | ||
icon: "" | ||
}) | ||
} | ||
menus.push({ | ||
link: MenuHelper.config.routePrefix + '/' + key, | ||
title: val.title, | ||
icon: val.icon || null, | ||
actions: val.tools || null, | ||
id: val.title.replace(" ","_"), | ||
instanceName: key | ||
}); | ||
}); | ||
if (MenuHelper.config.navbar.additionalLinks && MenuHelper.config.navbar.additionalLinks.length > 0) { | ||
MenuHelper.config.navbar.additionalLinks.forEach(function(additionalLink) { | ||
if (!additionalLink.link || !additionalLink.title || additionalLink.disabled) { | ||
return; | ||
if (MenuHelper.config.instances) { | ||
Object.entries<InstanceConfig>(MenuHelper.config.instances).forEach(function([key, val]) { | ||
if (val.tools && val.tools.length > 0 && val.tools[0].id !== "overview") { | ||
val.tools.unshift({ | ||
id: "overview", | ||
link: MenuHelper.config.routePrefix + '/' + key, | ||
title: 'Overview', | ||
icon: "" | ||
}) | ||
} | ||
menus.push({ | ||
link: additionalLink.link, | ||
title: additionalLink.title, | ||
id: additionalLink.id || additionalLink.title.replace(" ","_"), | ||
icon: additionalLink.icon || null | ||
link: MenuHelper.config.routePrefix + '/' + key, | ||
title: val.title, | ||
icon: val.icon || null, | ||
actions: val.tools || null, | ||
id: val.title.replace(" ","_"), | ||
instanceName: key | ||
}); | ||
}); | ||
if (MenuHelper.config.navbar.additionalLinks && MenuHelper.config.navbar.additionalLinks.length > 0) { | ||
MenuHelper.config.navbar.additionalLinks.forEach(function(additionalLink) { | ||
if (!additionalLink.link || !additionalLink.title || additionalLink.disabled) { | ||
return; | ||
} | ||
menus.push({ | ||
link: additionalLink.link, | ||
title: additionalLink.title, | ||
id: additionalLink.id || additionalLink.title.replace(" ","_"), | ||
icon: additionalLink.icon || null | ||
}); | ||
}); | ||
} | ||
} | ||
@@ -192,0 +194,0 @@ |
@@ -36,3 +36,3 @@ import * as path from "path"; | ||
} | ||
} | ||
} | ||
} |
@@ -64,2 +64,14 @@ export interface AdminpanelConfig { | ||
/** | ||
* Generator | ||
* */ | ||
generator?: { | ||
path: string | ||
forms?: { | ||
[key:string]: Fields | ||
} | ||
wizards?: { | ||
[key:string]: Fields | ||
} | ||
} | ||
/** | ||
* Prime administrator login credentials | ||
@@ -66,0 +78,0 @@ * */ |
@@ -7,2 +7,3 @@ "use strict"; | ||
const bindDev_1 = require("./bindDev"); | ||
const bindForms_1 = require("./bindForms"); | ||
async function default_1() { | ||
@@ -24,5 +25,7 @@ // Binding list of function for rendering | ||
await (0, bindAuthorization_1.default)(); | ||
// binding forms from files | ||
(0, bindForms_1.default)(); | ||
if (sails.hooks.i18n && sails.hooks.i18n.appendLocale) { | ||
sails.after(["hook:i18n:loaded"], async () => { | ||
await (0, bindTranslations_1.default)(); | ||
(0, bindTranslations_1.default)(); | ||
}); | ||
@@ -29,0 +32,0 @@ } |
@@ -5,2 +5,3 @@ import bindTranslations from "./bindTranslations"; | ||
import bindDev from "./bindDev"; | ||
import bindForms from "./bindForms"; | ||
@@ -29,5 +30,8 @@ export default async function () { | ||
// binding forms from files | ||
bindForms(); | ||
if (sails.hooks.i18n && sails.hooks.i18n.appendLocale) { | ||
sails.after(["hook:i18n:loaded"], async () => { | ||
await bindTranslations(); | ||
bindTranslations(); | ||
}) | ||
@@ -34,0 +38,0 @@ } else { |
@@ -5,19 +5,39 @@ "use strict"; | ||
function bindAccessRights() { | ||
let instances = sails.config.adminpanel.instances; | ||
for (let key of Object.keys(instances)) { | ||
let department = `Section ${key}`; | ||
// create | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `create-${key}-instance`, name: "Create", | ||
description: "Access to creating record in database", department: department }); | ||
// read | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `read-${key}-instance`, name: "Read", | ||
description: "Access to reading records in database", department: department }); | ||
// update | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `update-${key}-instance`, name: "Update", | ||
description: "Access to updating records in database", department: department }); | ||
// delete | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `delete-${key}-instance`, name: "Delete", | ||
description: "Access to deleting records in database", department: department }); | ||
if (sails.config.adminpanel.instances) { | ||
let instances = sails.config.adminpanel.instances; | ||
for (let key of Object.keys(instances)) { | ||
let department = `Section ${key}`; | ||
// create | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `create-${key}-instance`, name: "Create", | ||
description: "Access to creating record in database", department: department }); | ||
// read | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `read-${key}-instance`, name: "Read", | ||
description: "Access to reading records in database", department: department }); | ||
// update | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `update-${key}-instance`, name: "Update", | ||
description: "Access to updating records in database", department: department }); | ||
// delete | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `delete-${key}-instance`, name: "Delete", | ||
description: "Access to deleting records in database", department: department }); | ||
} | ||
} | ||
if (sails.config.adminpanel.generator && sails.config.adminpanel.generator.forms) { | ||
let forms = sails.config.adminpanel.generator.forms; | ||
for (let key of Object.keys(forms)) { | ||
let department = `Form ${key}`; | ||
// create | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `create-${key}-form`, name: "Create", | ||
description: "Access to creating form in database", department: department }); | ||
// read | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `read-${key}-form`, name: "Read", | ||
description: "Access to reading form in database", department: department }); | ||
// update | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `update-${key}-form`, name: "Update", | ||
description: "Access to updating form in database", department: department }); | ||
// delete | ||
accessRightsHelper_1.AccessRightsHelper.registerToken({ id: `delete-${key}-form`, name: "Delete", | ||
description: "Access to deleting form in database", department: department }); | ||
} | ||
} | ||
} | ||
exports.default = bindAccessRights; |
import {AccessRightsHelper} from "../helper/accessRightsHelper"; | ||
export default function bindAccessRights() { | ||
let instances = sails.config.adminpanel.instances; | ||
for (let key of Object.keys(instances)) { | ||
let department = `Section ${key}`; | ||
if (sails.config.adminpanel.instances) { | ||
let instances = sails.config.adminpanel.instances; | ||
for (let key of Object.keys(instances)) { | ||
let department = `Section ${key}`; | ||
// create | ||
AccessRightsHelper.registerToken({id: `create-${key}-instance`, name: "Create", | ||
description: "Access to creating record in database", department: department}); | ||
// create | ||
AccessRightsHelper.registerToken({id: `create-${key}-instance`, name: "Create", | ||
description: "Access to creating record in database", department: department}); | ||
// read | ||
AccessRightsHelper.registerToken({id: `read-${key}-instance`, name: "Read", | ||
description: "Access to reading records in database", department: department}); | ||
// read | ||
AccessRightsHelper.registerToken({id: `read-${key}-instance`, name: "Read", | ||
description: "Access to reading records in database", department: department}); | ||
// update | ||
AccessRightsHelper.registerToken({id: `update-${key}-instance`, name: "Update", | ||
description: "Access to updating records in database", department: department}); | ||
// update | ||
AccessRightsHelper.registerToken({id: `update-${key}-instance`, name: "Update", | ||
description: "Access to updating records in database", department: department}); | ||
// delete | ||
AccessRightsHelper.registerToken({id: `delete-${key}-instance`, name: "Delete", | ||
description: "Access to deleting records in database", department: department}); | ||
// delete | ||
AccessRightsHelper.registerToken({id: `delete-${key}-instance`, name: "Delete", | ||
description: "Access to deleting records in database", department: department}); | ||
} | ||
} | ||
if (sails.config.adminpanel.generator && sails.config.adminpanel.generator.forms) { | ||
let forms = sails.config.adminpanel.generator.forms; | ||
for (let key of Object.keys(forms)) { | ||
let department = `Form ${key}`; | ||
// create | ||
AccessRightsHelper.registerToken({id: `create-${key}-form`, name: "Create", | ||
description: "Access to creating form in database", department: department}); | ||
// read | ||
AccessRightsHelper.registerToken({id: `read-${key}-form`, name: "Read", | ||
description: "Access to reading form in database", department: department}); | ||
// update | ||
AccessRightsHelper.registerToken({id: `update-${key}-form`, name: "Update", | ||
description: "Access to updating form in database", department: department}); | ||
// delete | ||
AccessRightsHelper.registerToken({id: `delete-${key}-form`, name: "Delete", | ||
description: "Access to deleting form in database", department: department}); | ||
} | ||
} | ||
} |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
function bindDev(adminpanelConfig) { | ||
Object.keys(sails.models).forEach((modelname) => { | ||
let modelName = sails.models[modelname].globalId; | ||
adminpanelConfig.instances[`dev-${modelName}`] = { | ||
title: `dev-${modelName}`, | ||
model: modelName, | ||
icon: "cube" | ||
}; | ||
}); | ||
if (adminpanelConfig.instances) { | ||
Object.keys(sails.models).forEach((modelname) => { | ||
let modelName = sails.models[modelname].globalId; | ||
adminpanelConfig.instances[`dev-${modelName}`] = { | ||
title: `dev-${modelName}`, | ||
model: modelName, | ||
icon: "cube" | ||
}; | ||
}); | ||
} | ||
} | ||
exports.default = bindDev; |
export default function bindDev(adminpanelConfig) { | ||
Object.keys(sails.models).forEach((modelname) => { | ||
let modelName = sails.models[modelname].globalId; | ||
adminpanelConfig.instances[`dev-${modelName}`] = { | ||
title: `dev-${modelName}`, | ||
model: modelName, | ||
icon: "cube" | ||
}; | ||
}); | ||
} | ||
if (adminpanelConfig.instances) { | ||
Object.keys(sails.models).forEach((modelname) => { | ||
let modelName = sails.models[modelname].globalId; | ||
adminpanelConfig.instances[`dev-${modelName}`] = { | ||
title: `dev-${modelName}`, | ||
model: modelName, | ||
icon: "cube" | ||
}; | ||
}); | ||
} | ||
} |
@@ -12,2 +12,3 @@ "use strict"; | ||
const upload_1 = require("../controllers/upload"); | ||
const form_1 = require("../controllers/form"); | ||
function bindRoutes() { | ||
@@ -27,23 +28,25 @@ let _bindPolicies = require('../lib/bindPolicies').default(); | ||
sails.router.bind(baseRoute, _bindPolicies(policies, list_1.default)); | ||
for (let instance of Object.keys(config.instances)) { | ||
/** | ||
* Create new record | ||
*/ | ||
if (config.instances[instance].add && config.instances[instance].add.controller) { | ||
let controller = require(config.instances[instance].add.controller); | ||
sails.router.bind(`${config.routePrefix}/${instance}/add`, _bindPolicies(policies, controller.default)); | ||
if (config.instances) { | ||
for (let instance of Object.keys(config.instances)) { | ||
/** | ||
* Create new record | ||
*/ | ||
if (config.instances[instance].add && config.instances[instance].add.controller) { | ||
let controller = require(config.instances[instance].add.controller); | ||
sails.router.bind(`${config.routePrefix}/${instance}/add`, _bindPolicies(policies, controller.default)); | ||
} | ||
else { | ||
sails.router.bind(`${config.routePrefix}/${instance}/add`, _bindPolicies(policies, add_1.default)); | ||
} | ||
/** | ||
* Edit existing record | ||
*/ | ||
if (config.instances[instance].edit && config.instances[instance].edit.controller) { | ||
let controller = require(config.instances[instance].edit.controller); | ||
sails.router.bind(`${config.routePrefix}/${instance}/edit/:id`, _bindPolicies(policies, controller.default)); | ||
} | ||
else { | ||
sails.router.bind(`${config.routePrefix}/${instance}/edit/:id`, _bindPolicies(policies, edit_1.default)); | ||
} | ||
} | ||
else { | ||
sails.router.bind(`${config.routePrefix}/${instance}/add`, _bindPolicies(policies, add_1.default)); | ||
} | ||
/** | ||
* Edit existing record | ||
*/ | ||
if (config.instances[instance].edit && config.instances[instance].edit.controller) { | ||
let controller = require(config.instances[instance].edit.controller); | ||
sails.router.bind(`${config.routePrefix}/${instance}/edit/:id`, _bindPolicies(policies, controller.default)); | ||
} | ||
else { | ||
sails.router.bind(`${config.routePrefix}/${instance}/edit/:id`, _bindPolicies(policies, edit_1.default)); | ||
} | ||
} | ||
@@ -67,2 +70,6 @@ /** | ||
*/ | ||
/** | ||
* Edit form | ||
* */ | ||
sails.router.bind(`${config.routePrefix}/form/:slug`, _bindPolicies(policies, form_1.default)); | ||
if (Boolean(config.dashboard)) { | ||
@@ -69,0 +76,0 @@ sails.router.bind(config.routePrefix, _bindPolicies(policies, dashboard_1.default)); |
@@ -10,2 +10,3 @@ import _dashboard from "../controllers/dashboard"; | ||
import _upload from "../controllers/upload"; | ||
import _form from "../controllers/form" | ||
@@ -31,21 +32,23 @@ export default function bindRoutes() { | ||
for (let instance of Object.keys(config.instances)) { | ||
/** | ||
* Create new record | ||
*/ | ||
if (config.instances[instance].add && config.instances[instance].add.controller) { | ||
let controller = require(config.instances[instance].add.controller); | ||
sails.router.bind(`${config.routePrefix}/${instance}/add`, _bindPolicies(policies, controller.default)); | ||
} else { | ||
sails.router.bind(`${config.routePrefix}/${instance}/add`, _bindPolicies(policies, _add)); | ||
} | ||
if (config.instances) { | ||
for (let instance of Object.keys(config.instances)) { | ||
/** | ||
* Create new record | ||
*/ | ||
if (config.instances[instance].add && config.instances[instance].add.controller) { | ||
let controller = require(config.instances[instance].add.controller); | ||
sails.router.bind(`${config.routePrefix}/${instance}/add`, _bindPolicies(policies, controller.default)); | ||
} else { | ||
sails.router.bind(`${config.routePrefix}/${instance}/add`, _bindPolicies(policies, _add)); | ||
} | ||
/** | ||
* Edit existing record | ||
*/ | ||
if (config.instances[instance].edit && config.instances[instance].edit.controller) { | ||
let controller = require(config.instances[instance].edit.controller); | ||
sails.router.bind(`${config.routePrefix}/${instance}/edit/:id`, _bindPolicies(policies, controller.default)); | ||
} else { | ||
sails.router.bind(`${config.routePrefix}/${instance}/edit/:id`, _bindPolicies(policies, _edit)); | ||
/** | ||
* Edit existing record | ||
*/ | ||
if (config.instances[instance].edit && config.instances[instance].edit.controller) { | ||
let controller = require(config.instances[instance].edit.controller); | ||
sails.router.bind(`${config.routePrefix}/${instance}/edit/:id`, _bindPolicies(policies, controller.default)); | ||
} else { | ||
sails.router.bind(`${config.routePrefix}/${instance}/edit/:id`, _bindPolicies(policies, _edit)); | ||
} | ||
} | ||
@@ -73,2 +76,7 @@ } | ||
/** | ||
* Edit form | ||
* */ | ||
sails.router.bind(`${config.routePrefix}/form/:slug`, _bindPolicies(policies, _form)); | ||
if (Boolean(config.dashboard)) { | ||
@@ -75,0 +83,0 @@ sails.router.bind(config.routePrefix, _bindPolicies(policies, _dashboard)); |
@@ -1,1 +0,1 @@ | ||
export default function bindTranslations(): Promise<void>; | ||
export default function bindTranslations(): void; |
@@ -5,3 +5,3 @@ "use strict"; | ||
const fs = require("fs"); | ||
async function bindTranslations() { | ||
function bindTranslations() { | ||
// load adminpanel translations | ||
@@ -8,0 +8,0 @@ translationHelper_1.TranslationHelper.loadTranslations(`${sails.config.adminpanel.rootPath}/translations`); |
import {TranslationHelper} from "../helper/translationHelper"; | ||
import * as fs from "fs"; | ||
export default async function bindTranslations() { | ||
export default function bindTranslations() { | ||
// load adminpanel translations | ||
@@ -6,0 +6,0 @@ TranslationHelper.loadTranslations(`${sails.config.adminpanel.rootPath}/translations`); |
@@ -81,5 +81,9 @@ "use strict"; | ||
locales: ['en', 'ru'], | ||
path: `${process.cwd()}/config/locales/adminpanel`, | ||
path: `config/locales/adminpanel`, | ||
defaultLocale: 'en' | ||
}, | ||
generator: { | ||
path: `.tmp/forms`, | ||
forms: {} | ||
}, | ||
/** | ||
@@ -86,0 +90,0 @@ * List of sections in head |
@@ -87,6 +87,11 @@ import {AdminpanelConfig} from "../interfaces/adminpanelConfig"; | ||
locales: ['en', 'ru'], | ||
path: `${process.cwd()}/config/locales/adminpanel`, | ||
path: `config/locales/adminpanel`, | ||
defaultLocale: 'en' | ||
}, | ||
generator: { | ||
path: `.tmp/forms`, | ||
forms: {} | ||
}, | ||
/** | ||
@@ -93,0 +98,0 @@ * List of sections in head |
@@ -57,3 +57,3 @@ { | ||
}, | ||
"version": "2.0.1" | ||
"version": "2.1.0-st1" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Unpublished package
Supply chain riskPackage version was not found on the registry. It may exist on a different registry and need to be configured to pull from that registry.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Unpopular package
QualityThis package is not very popular.
Found 1 instance in 1 package
10228945
1007
111650
0
2
17
1