const Objection = require('objection'); const Schmervice = require('@hapipal/schmervice'); const Schwifty = require('@hapipal/schwifty'); const Jwt = require('@hapi/jwt'); const JwtStrategy = require('../auth/strategies/jwt') const UserModel = require('../models/user'); const UserCurrentRoute = require('../routes/user/current'); const UserLoginRoute = require('../routes/user/login'); const UserService = require('../services/user'); const DisplayService = require('../services/display'); module.exports = { name: 'user-plugin', version: '1.0.0', register: async (server, options) => { await server.register(Jwt) await server.register(Schwifty) await server.registerModel(UserModel) const mainApp = server.registrations['main-app-plugin'] const jwtOptions = JwtStrategy(mainApp.options) server.auth.strategy('default_jwt', 'jwt', jwtOptions) server.auth.default('default_jwt') // Bind to global context // So we can use Objection transactions server.bind({ transaction: (fn) => Objection.transaction(server.knex(), fn) }) await server.register(Schmervice) server.registerService(UserService) server.registerService(DisplayService) await server.route(UserCurrentRoute) await server.route(UserLoginRoute) } }