65 lines
2 KiB
JavaScript
65 lines
2 KiB
JavaScript
'use strict';
|
|
|
|
const routerFactory = require('../lib/router-async');
|
|
const passport = require('../lib/passport');
|
|
const clientHelpers = require('../lib/client-helpers');
|
|
const users = require('../models/users');
|
|
|
|
const files = require('../models/files');
|
|
const fileHelpers = require('../lib/file-helpers');
|
|
|
|
const templates = require('../models/templates');
|
|
|
|
const contextHelpers = require('../lib/context-helpers');
|
|
|
|
const { getTrustedUrl, getSandboxUrl, getPublicUrl } = require('../lib/urls');
|
|
const { AppType } = require('../../shared/app');
|
|
|
|
|
|
users.registerRestrictedAccessTokenMethod('grapesjs', async ({entityTypeId, entityId}) => {
|
|
if (entityTypeId === 'template') {
|
|
const tmpl = await templates.getById(contextHelpers.getAdminContext(), entityId, false);
|
|
|
|
if (tmpl.type === 'grapesjs') {
|
|
return {
|
|
permissions: {
|
|
'template': {
|
|
[entityId]: new Set(['viewFiles', 'manageFiles', 'view'])
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
function getRouter(appType) {
|
|
const router = routerFactory.create();
|
|
|
|
if (appType === AppType.SANDBOXED) {
|
|
router.getAsync('/editor', passport.csrfProtection, async (req, res) => {
|
|
const mailtrainConfig = await clientHelpers.getAnonymousConfig(req.context, appType);
|
|
|
|
res.render('grapesjs/root', {
|
|
layout: 'grapesjs/layout',
|
|
reactCsrfToken: req.csrfToken(),
|
|
mailtrainConfig: JSON.stringify(mailtrainConfig),
|
|
scriptFiles: [
|
|
getSandboxUrl('client/grapesjs-root.js')
|
|
],
|
|
publicPath: getSandboxUrl()
|
|
});
|
|
});
|
|
|
|
fileHelpers.installUploadHandler(router, '/upload/:type/:entityId', files.ReplacementBehavior.RENAME, null, 'file', resp => {
|
|
return {
|
|
data: resp.files.map( f => ({type: 'image', src: f.url}) )
|
|
};
|
|
});
|
|
|
|
}
|
|
|
|
return router;
|
|
}
|
|
|
|
module.exports.getRouter = getRouter;
|