Files
vapor-po/Sources/App/Controllers/ViewController.swift

52 lines
1.3 KiB
Swift

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