mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 09:56:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| 'use strict';
 | |
| 
 | |
| /**
 | |
|  * Module dependencies
 | |
|  */
 | |
| 
 | |
| // Public node modules.
 | |
| const _ = require('lodash');
 | |
| const path = require('path');
 | |
| const swaggerUi = require('swagger-ui-dist');
 | |
| const koaStatic = require('koa-static');
 | |
| 
 | |
| // Variables.
 | |
| const initialRoutes = [];
 | |
| 
 | |
| module.exports = strapi => {
 | |
|   return {
 | |
|     beforeInitialize() {
 | |
|       strapi.config.middleware.load.before.push('documentation');
 | |
| 
 | |
|       initialRoutes.push(
 | |
|         ..._.cloneDeep(strapi.plugins.documentation.config.routes)
 | |
|       );
 | |
|     },
 | |
| 
 | |
|     initialize() {
 | |
|       // Find the plugins routes.
 | |
|       strapi.plugins.documentation.config.routes = strapi.plugins.documentation.config.routes.map(
 | |
|         (route, index) => {
 | |
|           if (route.handler === 'Documentation.getInfos') {
 | |
|             return route;
 | |
|           }
 | |
| 
 | |
|           if (
 | |
|             route.handler === 'Documentation.index' ||
 | |
|             route.path === '/login'
 | |
|           ) {
 | |
|             route.config.policies = initialRoutes[index].config.policies;
 | |
|           }
 | |
| 
 | |
|           // Set prefix to empty to be able to customise it.
 | |
|           if (
 | |
|             _.get(strapi.plugins, [
 | |
|               'documentation',
 | |
|               'config',
 | |
|               'x-strapi-config',
 | |
|               'path',
 | |
|             ])
 | |
|           ) {
 | |
|             route.config.prefix = '';
 | |
|             route.path = `/${strapi.plugins.documentation.config['x-strapi-config'].path}${route.path}`.replace(
 | |
|               '//',
 | |
|               '/'
 | |
|             );
 | |
|           }
 | |
| 
 | |
|           return route;
 | |
|         }
 | |
|       );
 | |
| 
 | |
|       strapi.router.get('/plugins/documentation/*', async (ctx, next) => {
 | |
|         ctx.url = path.basename(ctx.url);
 | |
| 
 | |
|         return await koaStatic(swaggerUi.getAbsoluteFSPath(), {
 | |
|           maxage: strapi.config.middleware.settings.public.maxAge,
 | |
|           defer: true,
 | |
|         })(ctx, next);
 | |
|       });
 | |
|     },
 | |
|   };
 | |
| };
 | 
