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