You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					79 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					79 lines
				
				2.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								exports.name = void 0;
							 | 
						||
| 
								 | 
							
								/* eslint-disable max-len */
							 | 
						||
| 
								 | 
							
								// import { buildAuthenticatedRouter } from './buildAuthenticatedRouter';
							 | 
						||
| 
								 | 
							
								const buildRouter_1 = require("./buildRouter");
							 | 
						||
| 
								 | 
							
								const buildAuthenticatedRouter_1 = require("./buildAuthenticatedRouter");
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @module @adminjs/fastify
							 | 
						||
| 
								 | 
							
								 * @subcategory Plugins
							 | 
						||
| 
								 | 
							
								 * @section modules
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @classdesc
							 | 
						||
| 
								 | 
							
								 * Plugin that allows you to add AdminJS to Fastify applications.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ## Installation
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```sh
							 | 
						||
| 
								 | 
							
								 * npm install @adminjs/fastify
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ## Usage
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 * const AdminJSFastify = require('@adminjs/fastify')
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * It exposes 2 methods that create an Express Router, which can be attached
							 | 
						||
| 
								 | 
							
								 * to a given url in the API. Each method takes a pre-configured instance of {@link AdminJS}.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * - {@link module:@adminjs/fastify.buildRouter AdminJSExpress.buildRouter(admin, [predefinedRouter])}
							 | 
						||
| 
								 | 
							
								 * - {@link module:@adminjs/fastify.buildAuthenticatedRouter AdminJSExpress.buildAuthenticatedRouter(admin, auth, [predefinedRouter], sessionOptions)}
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * If you want to use a router you have already created - not a problem. Just pass it
							 | 
						||
| 
								 | 
							
								 * as a `predefinedRouter` parameter.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * You may want to use this option when you want to include
							 | 
						||
| 
								 | 
							
								 * some custom auth middleware for you AdminJS routes.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ## Example without an authentication
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 * const AdminJS = require('adminjs')
							 | 
						||
| 
								 | 
							
								 * const AdminJSFastify = require('@adminjs/fastify')
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * const fastify = require('fastify')()
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * const AdminJS = new AdminJS({
							 | 
						||
| 
								 | 
							
								 *   databases: [],
							 | 
						||
| 
								 | 
							
								 *   rootPath: '/admin',
							 | 
						||
| 
								 | 
							
								 * })
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * AdminJSFastify.buildRouter(AdminJS)
							 | 
						||
| 
								 | 
							
								 * app.listen(8080, () => console.log('AdminJS is under localhost:8080/admin'))
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ## Using build in authentication
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * To protect the routes with a session authentication, you can use predefined
							 | 
						||
| 
								 | 
							
								 * {@link module:@adminjs/fastify.buildAuthenticatedRouter} method.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Note! To use authentication in production environment, there is a need to configure
							 | 
						||
| 
								 | 
							
								 * @fastify/session for production build. It can be achieved by passing options to
							 | 
						||
| 
								 | 
							
								 * `sessionOptions` parameter.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ## Adding custom authentication
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Where `req.session.admin` is {@link AdminJS#CurrentAdmin},
							 | 
						||
| 
								 | 
							
								 * meaning that it should have at least an email property.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Plugin name
							 | 
						||
| 
								 | 
							
								 * @static
							 | 
						||
| 
								 | 
							
								 * @memberof module:@adminjs/fastify
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								exports.name = 'AdminJSFastify';
							 | 
						||
| 
								 | 
							
								module.exports = { name: exports.name, buildRouter: buildRouter_1.buildRouter, buildAuthenticatedRouter: buildAuthenticatedRouter_1.buildAuthenticatedRouter };
							 | 
						||
| 
								 | 
							
								exports.default = { name: exports.name, buildRouter: buildRouter_1.buildRouter, buildAuthenticatedRouter: buildAuthenticatedRouter_1.buildAuthenticatedRouter };
							 |