s6-0day/source/Sources/App/configure.swift

45 lines
1.6 KiB
Swift
Raw Normal View History

2022-11-18 09:06:38 +01:00
import Fluent
import FluentPostgresDriver
import Vapor
import NIOSSL
// configures your application
public func configure(_ app: Application) throws {
// uncomment to serve files from /Public folder
app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))
app.databases.use(.postgres(hostname: "db", username: "vapor", password: "vapor", database: "vapor"), as: .psql)
app.migrations.add(CreateUser())
app.migrations.add(CreatePosts())
app.migrations.add(CreateMessage())
// this makes it so session cookies are issued
app.middleware.use(app.sessions.middleware)
app.sessions.use(.memory)
app.passwords.use(.bcrypt(cost: 4))
try app.autoMigrate().wait()
try app.http.server.configuration.tlsConfiguration = .makeServerConfiguration(
certificateChain: NIOSSLCertificate.fromPEMFile("/certificates/fullchain.pem").map { .certificate($0) },
privateKey: .file("/certificates/privkey.pem")
)
// CORS policy
let corsConfiguration = CORSMiddleware.Configuration(
allowedOrigin: .originBased,
allowedMethods: [.GET, .POST, .PUT, .OPTIONS, .DELETE, .PATCH],
allowedHeaders: [.accept, .authorization, .contentType, .origin, .xRequestedWith, .userAgent, .accessControlAllowOrigin],
allowCredentials: true
)
let cors = CORSMiddleware(configuration: corsConfiguration)
// cors middleware should come before default error middleware using `at: .beginning`
app.middleware.use(cors, at: .beginning)
// register routes
try routes(app)
}