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) }