feat: Initial purchase order views, login seems to be broken though.
This commit is contained in:
@@ -2,6 +2,7 @@ import DatabaseClientLive
|
||||
import Dependencies
|
||||
import Elementary
|
||||
import Fluent
|
||||
import SharedModels
|
||||
import Vapor
|
||||
import VaporElementary
|
||||
|
||||
@@ -10,7 +11,7 @@ func routes(_ app: Application) throws {
|
||||
try app.register(collection: UserViewController())
|
||||
try app.register(collection: VendorViewController())
|
||||
try app.register(collection: EmployeeViewController())
|
||||
// try app.register(collection: ViewController())
|
||||
try app.register(collection: PurchaseOrderViewController())
|
||||
|
||||
app.get { _ in
|
||||
HTMLResponse {
|
||||
@@ -22,20 +23,37 @@ func routes(_ app: Application) throws {
|
||||
}
|
||||
}
|
||||
|
||||
app.get("login") { _ in
|
||||
HTMLResponse {
|
||||
app.get("login") { req in
|
||||
let context = try req.query.decode(LoginContext.self)
|
||||
return await req.render {
|
||||
MainPage(displayNav: false, route: .login) {
|
||||
UserForm(context: .login(next: nil))
|
||||
UserForm(context: .login(next: context.next))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// app.get("users") { _ in
|
||||
// HTMLResponse {
|
||||
// // UserIndex()
|
||||
// MainPage(displayNav: false, route: .users) {
|
||||
// UserTable()
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
app.post("login") { req in
|
||||
@Dependency(\.database.users) var users
|
||||
let loginForm = try req.content.decode(User.Login.self)
|
||||
let token = try await users.login(loginForm)
|
||||
let user = try await users.get(token.userID)!
|
||||
req.session.authenticate(user)
|
||||
return try await PurchaseOrderViewController().index(req: req)
|
||||
}
|
||||
|
||||
let protected = app.grouped(UserPasswordAuthenticator(), UserSessionAuthenticator())
|
||||
|
||||
protected.get("me") { req in
|
||||
let user = try req.auth.require(User.self)
|
||||
|
||||
return HTMLResponse {
|
||||
MainPage(displayNav: false, route: .purchaseOrders) {
|
||||
h1 { "You are logged in as: \(user.username)" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private struct LoginContext: Content {
|
||||
let next: String?
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user