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.
		
		
		
		
		
			
		
			
				
					59 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					59 lines
				
				2.6 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||
|  | exports.buildAuthenticatedRouter = void 0; | ||
|  | const tslib_1 = require("tslib"); | ||
|  | const logout_handler_1 = require("./authentication/logout.handler"); | ||
|  | const buildRouter_1 = require("./buildRouter"); | ||
|  | const login_handler_1 = require("./authentication/login.handler"); | ||
|  | const protected_routes_handler_1 = require("./authentication/protected-routes.handler"); | ||
|  | const cookie_1 = tslib_1.__importDefault(require("@fastify/cookie")); | ||
|  | const formbody_1 = tslib_1.__importDefault(require("@fastify/formbody")); | ||
|  | const session_1 = tslib_1.__importDefault(require("@fastify/session")); | ||
|  | /** | ||
|  |  * @typedef {Function} Authenticate | ||
|  |  * @memberof module:@adminjs/fastify | ||
|  |  * @description | ||
|  |  * function taking 2 arguments email and password | ||
|  |  * @param {string} [email]         email given in the form | ||
|  |  * @param {string} [password]      password given in the form | ||
|  |  * @return {CurrentAdmin | null}      returns current admin or null | ||
|  |  */ | ||
|  | /** | ||
|  |  * Builds the Express Router which is protected by a session auth | ||
|  |  * | ||
|  |  * Normally fastify-session holds session in memory, which is | ||
|  |  * not optimized for production usage and, in development, it causes | ||
|  |  * logging out after every page refresh (if you use nodemon). | ||
|  |  * @static | ||
|  |  * @memberof module:@adminjs/fastify | ||
|  |  * @example | ||
|  |  * const ADMIN = { | ||
|  |  *   email: 'test@example.com', | ||
|  |  *   password: 'password', | ||
|  |  * } | ||
|  |  * | ||
|  |  * AdminJSFastify.buildAuthenticatedRouter(adminJs, { | ||
|  |  *   authenticate: async (email, password) => { | ||
|  |  *     if (ADMIN.password === password && ADMIN.email === email) { | ||
|  |  *       return ADMIN | ||
|  |  *     } | ||
|  |  *     return null | ||
|  |  *   }, | ||
|  |  *   cookieName: 'adminjs', | ||
|  |  *   cookiePassword: 'somePassword', | ||
|  |  * }, [router]) | ||
|  |  */ | ||
|  | const buildAuthenticatedRouter = async (admin, auth, fastifyApp, sessionOptions) => { | ||
|  |     var _a, _b; | ||
|  |     await fastifyApp.register(cookie_1.default, { | ||
|  |         secret: auth.cookiePassword, | ||
|  |     }); | ||
|  |     await fastifyApp.register(session_1.default, Object.assign({ secret: auth.cookiePassword, cookieName: (_a = auth.cookieName) !== null && _a !== void 0 ? _a : 'adminjs', cookie: (_b = sessionOptions === null || sessionOptions === void 0 ? void 0 : sessionOptions.cookie) !== null && _b !== void 0 ? _b : { secure: false } }, (sessionOptions !== null && sessionOptions !== void 0 ? sessionOptions : {}))); | ||
|  |     await fastifyApp.register(formbody_1.default); | ||
|  |     await (0, buildRouter_1.buildRouter)(admin, fastifyApp); | ||
|  |     (0, protected_routes_handler_1.withProtectedRoutesHandler)(fastifyApp, admin); | ||
|  |     (0, login_handler_1.withLogin)(fastifyApp, admin, auth); | ||
|  |     (0, logout_handler_1.withLogout)(fastifyApp, admin); | ||
|  | }; | ||
|  | exports.buildAuthenticatedRouter = buildAuthenticatedRouter; |