UNPKG

jscas-server

Version:

An implementation of Apereo's CAS protocol

54 lines (44 loc) 1.49 kB
'use strict' const UidGenerator = require('uid-generator') const fp = require('fastify-plugin') const uidgen = new UidGenerator() const hookIdSym = Symbol('jscas-hook-id') function registerAuthenticator (authenticator) { this.jscasPlugins.auth.push(authenticator) return this } function registerAttributesResolver (resolver) { this.jscasPlugins.attributesResolver = resolver } function registerHook (hookName, fn) { if (!this.jscasHooks[hookName]) return this fn[hookIdSym] = uidgen.generateSync() this.jscasHooks[hookName].push(fn) return this } function registerMiscPlugin (obj) { this.jscasPlugins.misc.push(obj) return this } function registerServiceRegistry (registry) { this.jscasPlugins.serviceRegistry = registry return this } function registerTheme (theme) { this.jscasPlugins.theme = theme return this } function registerTicketRegistry (registry) { this.jscasPlugins.ticketRegistry = registry return this } module.exports = fp(function pluginApiPlugin (instance, opts, next) { instance.decorate('registerAuthenticator', registerAuthenticator) instance.decorate('registerAttributesResolver', registerAttributesResolver) instance.decorate('registerHook', registerHook) instance.decorate('registerMiscPlugin', registerMiscPlugin) instance.decorate('registerServiceRegistry', registerServiceRegistry) instance.decorate('registerTheme', registerTheme) instance.decorate('registerTicketRegistry', registerTicketRegistry) next() })