45 lines
1.6 KiB
Swift
45 lines
1.6 KiB
Swift
|
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)
|
||
|
}
|