58 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.8 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('ckeditor', async ({entityTypeId, entityId}) => {
 | |
|     if (entityTypeId === 'template') {
 | |
|         const tmpl = await templates.getById(contextHelpers.getAdminContext(), entityId, false);
 | |
| 
 | |
|         if (tmpl.type === 'ckeditor4') {
 | |
|             return {
 | |
|                 permissions: {
 | |
|                     'template': {
 | |
|                         [entityId]: new Set(['manageFiles', 'view'])
 | |
|                     }
 | |
|                 }
 | |
|             };
 | |
|         }
 | |
|     }
 | |
| });
 | |
| 
 | |
| 
 | |
| async 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('ckeditor/root', {
 | |
|                 layout: 'ckeditor/layout',
 | |
|                 reactCsrfToken: req.csrfToken(),
 | |
|                 mailtrainConfig: JSON.stringify(mailtrainConfig),
 | |
|                 scriptFiles: [
 | |
|                     getSandboxUrl('client/ckeditor-root.js')
 | |
|                 ],
 | |
|                 publicPath: getSandboxUrl()
 | |
|             });
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     return router;
 | |
| }
 | |
| 
 | |
| module.exports.getRouter = getRouter;
 |