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 MembershipService = require('../services/membership') 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) }, }