Files
kt-backend/server.js
Mario Peters 01bd7aabf6 fix passenger
2025-06-20 17:54:55 +02:00

107 lines
3.7 KiB
JavaScript

'use strict'
const Hapi = require('@hapi/hapi')
const HAPIWebSocket = require('hapi-plugin-websocket')
const HAPIAuthBasic = require('@hapi/basic')
const { configureAuth } = require('./auth')
const { configureAccountRoutes } = require('./routes/account')
const { configureLoginRoutes } = require('./routes/login')
const { configureEncounterRoutes } = require('./routes/encounter')
const { configureMailRoutes } = require('./routes/mail')
const { configurePoolRoutes } = require('./routes/pool')
const { configureTournamentRoutes } = require('./routes/tournament')
const { configureGroupRoutes } = require('./routes/group')
const { configureParticipantRoutes } = require('./routes/participant')
const { configureTeamRoutes } = require('./routes/team')
const { configureRoutes } = require('./routes')
const { configureWsRoutes } = require('./routes/ws')
const { configurePdfRoutes } = require('./routes/pdf')
require('dotenv').config()
// const Bcrypt = require('bcrypt');
// Create a server with a host and port
const init = async () => {
const server = new Hapi.Server({
host: process.env.HOST,
port: process.env.PORT,
routes: {
cors: true,
validate: {
failAction: async (request, h, err) => {
if (process.env.NODE_ENV === 'production') {
// In prod, log a limited error message and throw the default Bad Request error.
console.error('ValidationError:', err.message)
// throw Boom.badRequest(`Invalid request payload input`)
} else {
// During development, log and respond with the full error.
console.error(err)
throw err
}
},
},
},
})
await configureAuth(server)
await configureAccountRoutes(server)
await configureLoginRoutes(server)
await configureEncounterRoutes(server)
await configureMailRoutes(server)
await configureTournamentRoutes(server)
await configureGroupRoutes(server)
await configureParticipantRoutes(server)
await configurePdfRoutes(server)
await configurePoolRoutes(server)
await configureTeamRoutes(server)
await configureWsRoutes(server)
await configureRoutes(server)
await server.register({
plugin: require('hapi-plugin-mysql'),
options: {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_DB,
connectionLimit: 10,
debug: false,
waitForConnections: true,
multipleStatements: true,
},
})
/* register HAPI plugins */
// /* register Basic authentication stategy */
// server.auth.strategy("basic", "basic", {
// validate: async (request, username, password, h) => {
// let isValid = false
// let credentials = null
// if (username === "foo" && password === "bar") {
// isValid = true
// credentials = { username }
// }
// return { isValid, credentials }
// }
// })
await server.register(HAPIWebSocket)
// await server.register(HAPIAuthBasic)
await server.start()
return server
}
// TODO: dieser Teil wird für tests benötigt, aber dann startet passenger nicht mehr.
// if (require.main === module) {
// Nur starten, wenn direkt ausgeführt (z.B. node server.js)
init()
.then((server) => {
console.log('Server running at:', server.info.uri)
})
.catch((error) => {
console.log(error)
})
// }
// module.exports = { init }