@@ -87,11 +87,17 @@ async fn main() -> anyhow::Result<()> {
87
87
"/api/onchain" ,
88
88
post ( onchain_handler) . route_layer ( middleware:: from_fn ( auth_middleware) ) ,
89
89
)
90
- . route ( "/api/lightning" , post ( lightning_handler) )
90
+ . route (
91
+ "/api/lightning" ,
92
+ post ( lightning_handler) . route_layer ( middleware:: from_fn ( auth_middleware) ) ,
93
+ )
91
94
. route ( "/api/lnurlw" , get ( lnurlw_handler) )
92
95
. route ( "/api/lnurlw/callback" , get ( lnurlw_callback_handler) )
93
96
. route ( "/api/bolt11" , post ( bolt11_handler) )
94
- . route ( "/api/channel" , post ( channel_handler) )
97
+ . route (
98
+ "/api/channel" ,
99
+ post ( channel_handler) . route_layer ( middleware:: from_fn ( auth_middleware) ) ,
100
+ )
95
101
. fallback ( fallback)
96
102
. layer ( Extension ( state. clone ( ) ) )
97
103
. layer (
@@ -274,6 +280,7 @@ async fn onchain_handler(
274
280
#[ axum:: debug_handler]
275
281
async fn lightning_handler (
276
282
Extension ( state) : Extension < AppState > ,
283
+ Extension ( user) : Extension < AuthUser > ,
277
284
headers : HeaderMap ,
278
285
Json ( payload) : Json < LightningRequest > ,
279
286
) -> Result < Json < LightningResponse > , AppError > {
@@ -283,11 +290,15 @@ async fn lightning_handler(
283
290
. and_then ( |x| HeaderValue :: to_str ( x) . ok ( ) )
284
291
. unwrap_or ( "Unknown" ) ;
285
292
286
- if state. payments . get_total_payments ( x_forwarded_for) . await > MAX_SEND_AMOUNT * 10 {
293
+ if state
294
+ . payments
295
+ . verify_payments ( x_forwarded_for, None , Some ( & user) )
296
+ . await
297
+ {
287
298
return Err ( AppError :: new ( "Too many payments" ) ) ;
288
299
}
289
300
290
- let payment_hash = pay_lightning ( & state, x_forwarded_for, & payload. bolt11 ) . await ?;
301
+ let payment_hash = pay_lightning ( & state, x_forwarded_for, Some ( & user ) , & payload. bolt11 ) . await ?;
291
302
292
303
Ok ( Json ( LightningResponse { payment_hash } ) )
293
304
}
@@ -329,7 +340,7 @@ async fn lnurlw_callback_handler(
329
340
return Err ( Json ( json ! ( { "status" : "ERROR" , "reason" : "Incorrect k1" } ) ) ) ;
330
341
}
331
342
332
- pay_lightning ( & state, x_forwarded_for, & payload. pr )
343
+ pay_lightning ( & state, x_forwarded_for, None , & payload. pr )
333
344
. await
334
345
. map_err ( |e| Json ( json ! ( { "status" : "ERROR" , "reason" : format!( "{e}" ) } ) ) ) ?;
335
346
Ok ( Json ( json ! ( { "status" : "OK" } ) ) )
@@ -351,6 +362,7 @@ async fn bolt11_handler(
351
362
#[ axum:: debug_handler]
352
363
async fn channel_handler (
353
364
Extension ( state) : Extension < AppState > ,
365
+ Extension ( user) : Extension < AuthUser > ,
354
366
headers : HeaderMap ,
355
367
Json ( payload) : Json < ChannelRequest > ,
356
368
) -> Result < Json < ChannelResponse > , AppError > {
@@ -360,11 +372,15 @@ async fn channel_handler(
360
372
. and_then ( |x| HeaderValue :: to_str ( x) . ok ( ) )
361
373
. unwrap_or ( "Unknown" ) ;
362
374
363
- if state. payments . get_total_payments ( x_forwarded_for) . await > MAX_SEND_AMOUNT * 10 {
375
+ if state
376
+ . payments
377
+ . verify_payments ( x_forwarded_for, None , Some ( & user) )
378
+ . await
379
+ {
364
380
return Err ( AppError :: new ( "Too many payments" ) ) ;
365
381
}
366
382
367
- let txid = open_channel ( & state, x_forwarded_for, payload) . await ?;
383
+ let txid = open_channel ( & state, x_forwarded_for, Some ( & user ) , payload) . await ?;
368
384
369
385
Ok ( Json ( ChannelResponse { txid } ) )
370
386
}
0 commit comments