feat: Removes old tests, fixes authentication middleware not working, view routes updated to not have delete routes and uses api routes for delete methods.

This commit is contained in:
2025-01-24 10:55:59 -05:00
parent aa60f69758
commit 90c6058d56
37 changed files with 146 additions and 564 deletions

View File

@@ -1,20 +1,23 @@
import DatabaseClientLive
import Dependencies
import Vapor
import ViewControllerLive
// Taken from discussions page on `swift-dependencies`.
// TODO: Pass dependencies to set into this middleware.
struct DependenciesMiddleware: AsyncMiddleware {
private let values: DependencyValues.Continuation
private let database: DatabaseClient
private let viewController: ViewController
init(
database: DatabaseClient
database: DatabaseClient,
viewController: ViewController = .liveValue
) {
self.values = withEscapedDependencies { $0 }
self.database = database
self.viewController = viewController
}
func respond(to request: Request, chainingTo next: any AsyncResponder) async throws -> Response {
@@ -22,6 +25,7 @@ struct DependenciesMiddleware: AsyncMiddleware {
try await withDependencies {
$0.database = database
$0.dateFormatter = .liveValue
$0.viewController = viewController
} operation: {
try await next.respond(to: request)
}

View File

@@ -0,0 +1,51 @@
import DatabaseClientLive
import Dependencies
import Elementary
import SharedModels
import Vapor
private let viewProtectedMiddleware: [any Middleware] = [
UserPasswordAuthenticator(),
UserSessionAuthenticator(),
User.redirectMiddleware { req in
"/login?next=\(req.url.string)"
}
]
extension SharedModels.ViewRoute {
var middleware: [any Middleware]? {
switch self {
// case .index: return viewProtectedMiddleware
case let .employee(route): return route.middleware
case .login: return nil
case let .purchaseOrder(route): return route.middleware
case let .user(route): return route.middleware
case let .vendor(route): return route.middleware
case let .vendorBranch(route): return route.middleware
}
}
}
extension SharedModels.ViewRoute.EmployeeRoute {
var middleware: [any Middleware]? { viewProtectedMiddleware }
}
extension SharedModels.ViewRoute.PurchaseOrderRoute {
var middleware: [any Middleware]? { viewProtectedMiddleware }
}
extension SharedModels.ViewRoute.UserRoute {
var middleware: [any Middleware]? {
viewProtectedMiddleware
}
}
extension SharedModels.ViewRoute.VendorRoute {
var middleware: [any Middleware]? { viewProtectedMiddleware }
}
extension SharedModels.ViewRoute.VendorBranchRoute {
var middleware: [any Middleware]? { viewProtectedMiddleware }
}