Skip to content

Commit 07ff367

Browse files
committed
Use bearer token
1 parent e105a93 commit 07ff367

File tree

2 files changed

+26
-26
lines changed

2 files changed

+26
-26
lines changed

Sources/Grodt/Application/routes.swift

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,35 +49,33 @@ func routes(_ app: Application) async throws {
4949
app.middleware.use(app.sessions.middleware)
5050
app.middleware.use(globalRateLimiter)
5151

52-
try app.group("") { routeBuilder in
53-
try routeBuilder
54-
.grouped(loginRateLimiter)
55-
.register(collection: UserController(dtoMapper: loginResponseDTOMapper))
56-
}
57-
5852
let tokenAuthMiddleware = UserToken.authenticator()
5953
let guardAuthMiddleware = User.guardMiddleware()
6054

61-
let protected = app.grouped([tokenAuthMiddleware, guardAuthMiddleware])
62-
try protected.group("api") { routeBuilder in
63-
try routeBuilder.register(collection:
64-
PortfoliosController(
65-
portfolioRepository: PostgresPortfolioRepository(database: app.db),
66-
currencyRepository: PostgresCurrencyRepository(database: app.db),
67-
historicalPortfolioPerformanceUpdater: portfolioPerformanceUpdater,
68-
dataMapper: portfolioDTOMapper)
55+
try app.group("api") { api in
56+
// Public routes
57+
try api
58+
.grouped(loginRateLimiter)
59+
.register(collection: UserController(dtoMapper: loginResponseDTOMapper))
60+
61+
// Protected routes
62+
let protected = api.grouped([tokenAuthMiddleware, guardAuthMiddleware])
63+
try protected.register(collection:
64+
PortfoliosController(
65+
portfolioRepository: PostgresPortfolioRepository(database: app.db),
66+
currencyRepository: PostgresCurrencyRepository(database: app.db),
67+
historicalPortfolioPerformanceUpdater: portfolioPerformanceUpdater,
68+
dataMapper: portfolioDTOMapper)
6969
)
7070

7171
let transactionController = TransactionsController(transactionsRepository: PostgresTransactionRepository(database: app.db),
72-
currencyRepository: PostgresCurrencyRepository(database: app.db),
73-
dataMapper: transactionDTOMapper)
74-
72+
currencyRepository: PostgresCurrencyRepository(database: app.db),
73+
dataMapper: transactionDTOMapper)
7574
transactionController.delegate = transactionChangedHandler
76-
try routeBuilder.register(collection: transactionController)
77-
78-
try routeBuilder.register(collection: tickersController)
79-
try routeBuilder.register(collection: investmentsController)
80-
try routeBuilder.register(collection: accountController)
75+
try protected.register(collection: transactionController)
76+
try protected.register(collection: tickersController)
77+
try protected.register(collection: investmentsController)
78+
try protected.register(collection: accountController)
8179
}
8280

8381
if app.environment != .testing {

Sources/Grodt/Controllers/UserController.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ struct UserController: RouteCollection {
1010

1111
func boot(routes: Vapor.RoutesBuilder) throws {
1212
let passwordProtected = routes.grouped(User.authenticator())
13-
passwordProtected.post("login") { req async throws -> LoginResponseDTO in
13+
passwordProtected.post("login") { req async throws -> Response in
1414
let user = try req.auth.require(User.self)
1515
let token = try user.generateToken()
1616
try await token.save(on: req.db)
17-
return dtoMapper.response(from: token)
17+
18+
let response = Response(status: .ok)
19+
response.headers.add(name: .authorization, value: "Bearer \(token.value)")
20+
21+
return response
1822
}
1923
}
2024
}
21-
22-
extension LoginResponseDTO: Content { }

0 commit comments

Comments
 (0)