summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--handlers.rkt24
-rw-r--r--main.rkt2
2 files changed, 19 insertions, 7 deletions
diff --git a/handlers.rkt b/handlers.rkt
index 91781a0..c022c3c 100644
--- a/handlers.rkt
+++ b/handlers.rkt
@@ -1,29 +1,39 @@
#lang racket
-(provide app-dispatch)
+(provide secured-dispatch)
(require web-server/dispatch
web-server/http
web-server/formlets
+ web-server/http/basic-auth
"views.rkt"
"formlets.rkt"
"models/user.rkt"
"models/nutrient-measurement.rkt"
"models/nutrient-target.rkt"
- "models/crop-requirement.rkt"
"services/nnls.rkt")
+(define (wrap-basic-auth handler)
+ (lambda (req)
+ (match (request->basic-credentials req)
+ [(cons user pass)
+ ;; credentials found → continue to dispatcher
+ (handler req)]
+ [else
+ ;; no credentials → trigger auth challenge
+ (response
+ 401 #"Unauthorized" (current-seconds) TEXT/HTML-MIME-TYPE
+ (list
+ (make-basic-auth-header "Ferti Private Area"))
+ void)])))
+
(define-values (app-dispatch _)
- ;; Ferti dashboard
(dispatch-rules [("ferti") #:method "get" ferti]
- ;; Nutrient measurements
[("measurement" "new") #:method "get" new-measurement]
[("measurement" "create") #:method "post" create-measurement]
[("measurement" "destroy") #:method "post" destroy-measurement]
- ;; Nutrient targets
[("target" "new") #:method "get" new-target]
[("target" "create") #:method "post" create-target]
- ;; Index
[("") #:method "get" index]
[else fallback]))
@@ -66,3 +76,5 @@
(define (fallback _)
(response/xexpr #:preamble #"<!DOCTYPE html>" (fallback-page 404)))
+
+(define secured-dispatch (wrap-basic-auth app-dispatch))
diff --git a/main.rkt b/main.rkt
index 975be57..4bf74ff 100644
--- a/main.rkt
+++ b/main.rkt
@@ -16,4 +16,4 @@
(connect! #:path development-db-path)
(migrate-all!)
(seed-database!)
- (serve/dispatch app-dispatch)))
+ (serve/dispatch secured-dispatch)))
Copyright 2019--2026 Marius PETER