Configure sessions and store them in databases
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -7,3 +7,4 @@ DerivedData/
 | 
				
			|||||||
.DS_Store
 | 
					.DS_Store
 | 
				
			||||||
file:*
 | 
					file:*
 | 
				
			||||||
Resources/config.json
 | 
					Resources/config.json
 | 
				
			||||||
 | 
					Resources/db.sqlite
 | 
				
			||||||
@@ -28,6 +28,33 @@
 | 
				
			|||||||
          "version": "4.2.1"
 | 
					          "version": "4.2.1"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "package": "fluent",
 | 
				
			||||||
 | 
					        "repositoryURL": "https://github.com/vapor/fluent.git",
 | 
				
			||||||
 | 
					        "state": {
 | 
				
			||||||
 | 
					          "branch": null,
 | 
				
			||||||
 | 
					          "revision": "e681c93df3201a2d8ceef15e8a9a0634578df233",
 | 
				
			||||||
 | 
					          "version": "4.0.0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "package": "fluent-kit",
 | 
				
			||||||
 | 
					        "repositoryURL": "https://github.com/vapor/fluent-kit.git",
 | 
				
			||||||
 | 
					        "state": {
 | 
				
			||||||
 | 
					          "branch": null,
 | 
				
			||||||
 | 
					          "revision": "31d96b547cc1f869f2885d932a8a9a7ae2103fc6",
 | 
				
			||||||
 | 
					          "version": "1.10.0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "package": "fluent-sqlite-driver",
 | 
				
			||||||
 | 
					        "repositoryURL": "https://github.com/vapor/fluent-sqlite-driver.git",
 | 
				
			||||||
 | 
					        "state": {
 | 
				
			||||||
 | 
					          "branch": null,
 | 
				
			||||||
 | 
					          "revision": "6f29f6f182c812075f09c7575c18ac5535c26824",
 | 
				
			||||||
 | 
					          "version": "4.0.1"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "package": "leaf",
 | 
					        "package": "leaf",
 | 
				
			||||||
        "repositoryURL": "https://github.com/vapor/leaf",
 | 
					        "repositoryURL": "https://github.com/vapor/leaf",
 | 
				
			||||||
@@ -64,6 +91,33 @@
 | 
				
			|||||||
          "version": "4.2.0"
 | 
					          "version": "4.2.0"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "package": "sql-kit",
 | 
				
			||||||
 | 
					        "repositoryURL": "https://github.com/vapor/sql-kit.git",
 | 
				
			||||||
 | 
					        "state": {
 | 
				
			||||||
 | 
					          "branch": null,
 | 
				
			||||||
 | 
					          "revision": "ea9928b7f4a801b175a00b982034d9c54ecb6167",
 | 
				
			||||||
 | 
					          "version": "3.7.0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "package": "sqlite-kit",
 | 
				
			||||||
 | 
					        "repositoryURL": "https://github.com/vapor/sqlite-kit.git",
 | 
				
			||||||
 | 
					        "state": {
 | 
				
			||||||
 | 
					          "branch": null,
 | 
				
			||||||
 | 
					          "revision": "2ec279b9c845cec254646834b66338551a024561",
 | 
				
			||||||
 | 
					          "version": "4.0.2"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "package": "sqlite-nio",
 | 
				
			||||||
 | 
					        "repositoryURL": "https://github.com/vapor/sqlite-nio.git",
 | 
				
			||||||
 | 
					        "state": {
 | 
				
			||||||
 | 
					          "branch": null,
 | 
				
			||||||
 | 
					          "revision": "6481dd0b01112d082dd7eb362782126e81964138",
 | 
				
			||||||
 | 
					          "version": "1.1.0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "package": "swift-backtrace",
 | 
					        "package": "swift-backtrace",
 | 
				
			||||||
        "repositoryURL": "https://github.com/swift-server/swift-backtrace.git",
 | 
					        "repositoryURL": "https://github.com/swift-server/swift-backtrace.git",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,9 @@ let package = Package(
 | 
				
			|||||||
        .package(url: "https://github.com/vapor/leaf-kit", .exact("1.0.0-tau.1.1")),
 | 
					        .package(url: "https://github.com/vapor/leaf-kit", .exact("1.0.0-tau.1.1")),
 | 
				
			||||||
        // Leaf Error Middleware for custom error pages
 | 
					        // Leaf Error Middleware for custom error pages
 | 
				
			||||||
        .package(name: "LeafErrorMiddleware", url: "https://github.com/brokenhandsio/leaf-error-middleware.git", from: "2.0.0-beta"),
 | 
					        .package(name: "LeafErrorMiddleware", url: "https://github.com/brokenhandsio/leaf-error-middleware.git", from: "2.0.0-beta"),
 | 
				
			||||||
        .package(url: "https://github.com/apple/swift-crypto.git", from: "1.1.2")
 | 
					        .package(url: "https://github.com/apple/swift-crypto.git", from: "1.1.2"),
 | 
				
			||||||
 | 
					        .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0"),
 | 
				
			||||||
 | 
					        .package(url: "https://github.com/vapor/fluent-sqlite-driver.git", from: "4.0.0")
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    targets: [
 | 
					    targets: [
 | 
				
			||||||
        .target(
 | 
					        .target(
 | 
				
			||||||
@@ -23,6 +25,8 @@ let package = Package(
 | 
				
			|||||||
                .product(name: "Vapor", package: "vapor"),
 | 
					                .product(name: "Vapor", package: "vapor"),
 | 
				
			||||||
                .product(name: "Leaf", package: "leaf"),
 | 
					                .product(name: "Leaf", package: "leaf"),
 | 
				
			||||||
                .product(name: "Crypto", package: "swift-crypto"),
 | 
					                .product(name: "Crypto", package: "swift-crypto"),
 | 
				
			||||||
 | 
					                .product(name: "Fluent", package: "fluent"),
 | 
				
			||||||
 | 
					                .product(name: "FluentSQLiteDriver", package: "fluent-sqlite-driver"),
 | 
				
			||||||
                "LeafErrorMiddleware"
 | 
					                "LeafErrorMiddleware"
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            swiftSettings: [
 | 
					            swiftSettings: [
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								Resources/db.sqlite
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Resources/db.sqlite
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -1,6 +1,8 @@
 | 
				
			|||||||
 | 
					import Fluent
 | 
				
			||||||
import Vapor
 | 
					import Vapor
 | 
				
			||||||
import Leaf
 | 
					import Leaf
 | 
				
			||||||
import LeafErrorMiddleware
 | 
					import LeafErrorMiddleware
 | 
				
			||||||
 | 
					import FluentSQLiteDriver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// configures your application
 | 
					// configures your application
 | 
				
			||||||
public func configure(_ app: Application) throws {
 | 
					public func configure(_ app: Application) throws {
 | 
				
			||||||
@@ -8,8 +10,15 @@ public func configure(_ app: Application) throws {
 | 
				
			|||||||
    // Serve files from /Public
 | 
					    // Serve files from /Public
 | 
				
			||||||
    app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))
 | 
					    app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    app.sessions.use(.fluent)
 | 
				
			||||||
 | 
					    app.sessions.configuration.cookieName = "statusboard-session"
 | 
				
			||||||
 | 
					    app.sessions.configuration.cookieFactory = { sessionID in
 | 
				
			||||||
 | 
					        .init(string: sessionID.string, expires: Date(timeIntervalSinceNow: 60*60*24*365), isSecure: true, isHTTPOnly: true, sameSite: HTTPCookies.SameSitePolicy.none)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    app.middleware.use(app.sessions.middleware)
 | 
					    app.middleware.use(app.sessions.middleware)
 | 
				
			||||||
    app.sessions.configuration.cookieName = "statusboard_session"
 | 
					
 | 
				
			||||||
 | 
					    app.databases.use(.sqlite(.file("\(app.directory.resourcesDirectory)/db.sqlite")), as: .sqlite)
 | 
				
			||||||
 | 
					    app.migrations.add(SessionRecord.migration)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Configure Leaf
 | 
					    // Configure Leaf
 | 
				
			||||||
    LeafOption.caching = app.environment.isRelease ? .default : .bypass
 | 
					    LeafOption.caching = app.environment.isRelease ? .default : .bypass
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user