feat: Adds reset password views and view routes.

This commit is contained in:
2025-01-27 09:01:23 -05:00
parent 8a79ab0b02
commit f3ffdbf41b
10 changed files with 155 additions and 9 deletions

View File

@@ -3,11 +3,13 @@ import Foundation
@preconcurrency import URLRouting
public extension SiteRoute {
// swiftlint:disable type_body_length
enum View: Sendable, Equatable {
case employee(SiteRoute.View.EmployeeRoute)
case login(SiteRoute.View.LoginRoute)
case purchaseOrder(SiteRoute.View.PurchaseOrderRoute)
case resetPassword(SiteRoute.View.ResetPasswordRoute)
case user(SiteRoute.View.UserRoute)
case vendor(SiteRoute.View.VendorRoute)
case vendorBranch(SiteRoute.View.VendorBranchRoute)
@@ -16,6 +18,7 @@ public extension SiteRoute {
Route(.case(Self.employee)) { SiteRoute.View.EmployeeRoute.router }
Route(.case(Self.login)) { SiteRoute.View.LoginRoute.router }
Route(.case(Self.purchaseOrder)) { SiteRoute.View.PurchaseOrderRoute.router }
Route(.case(Self.resetPassword)) { SiteRoute.View.ResetPasswordRoute.router }
Route(.case(Self.user)) { SiteRoute.View.UserRoute.router }
Route(.case(Self.vendor)) { SiteRoute.View.VendorRoute.router }
Route(.case(Self.vendorBranch)) { SiteRoute.View.VendorBranchRoute.router }
@@ -238,6 +241,31 @@ public extension SiteRoute {
}
}
public enum ResetPasswordRoute: Sendable, Equatable {
case index(id: User.ID)
case submit(id: User.ID, request: User.ResetPassword)
static let rootPath = "reset-password"
public static let router = OneOf {
Route(.case(Self.index(id:))) {
Path { rootPath; User.ID.parser() }
Method.get
}
Route(.case(Self.submit(id:request:))) {
Path { rootPath; User.ID.parser() }
Method.patch
Body {
FormData {
Field("password", .string)
Field("confirmPassword", .string)
}
.map(.memberwise(User.ResetPassword.init))
}
}
}
}
public enum SelectContext: String, Codable, Equatable, Sendable, CaseIterable {
case purchaseOrderForm
case purchaseOrderSearch
@@ -375,4 +403,5 @@ public extension SiteRoute {
}
}
}
// swiftlint:enable type_body_length
}