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 AuthModel = require('../models/authentication') const UserCurrentRoute = require('../routes/user/current') const UserProfileCreateRoute = require('../routes/user/create-profile') const UserProfilesListRoute = require('../routes/user/list-profiles') const UserLoginRoute = require('../routes/user/login') const UserSignupRoute = require('../routes/user/signup') const UserEmailRoute = require('../routes/user/email.js') const UserVerifyEmailRoute = require('../routes/user/verifyemail.js') const UserPassword = require('../routes/user/authentication') const UserService = require('../services/user') const DisplayService = require('../services/display') const HealthService = require('../services/health') 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) await server.registerModel(AuthModel) 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) server.registerService(HealthService) await server.route(UserCurrentRoute) await server.route(UserLoginRoute) await server.route(UserSignupRoute) await server.route(UserProfileCreateRoute) await server.route(UserProfilesListRoute) await server.route(UserEmailRoute) await server.route(UserVerifyEmailRoute) await server.route(UserPassword) }, }