[Racket] Ferti hydroponic nutrient solver, redux.
Parameterize authentication credentials.
authentication.rkt
@@ -1,27 +1,33 @@
1
1
#lang racket
2
2
3
Removed:
(provide make-auth-dispatch)
3
Added:
(provide authentication-credentials-defined?
4
Added:
make-auth-dispatch)
4
5
5
6
(require web-server/http
6
7
web-server/http/basic-auth)
7
8
8
Removed:
(define ferti-user
9
Removed:
(or (getenv "FERTI_USER") (error 'authentication "FERTI_USER environment variable is not set")))
10
Removed:
(define ferti-pass
11
Removed:
(or (getenv "FERTI_PASS") (error 'authentication "FERTI_PASS environment variable is not set")))
9
Added:
(define ferti-user (make-parameter (getenv "FERTI_USER")))
10
Added:
(define ferti-pass (make-parameter (getenv "FERTI_PASS")))
12
11
12
Added:
(define (authentication-credentials-defined?)
13
Added:
(and (ferti-user) (ferti-pass)))
14
Added:
13
15
(define (make-auth-dispatch handler)
14
Removed:
(lambda (req)
15
Removed:
(if (authorized? req)
16
Removed:
(handler req)
17
Removed:
(unauthorized-response))))
16
Added:
(if (authentication-credentials-defined?)
17
Added:
(lambda (req)
18
Added:
(if (authorized? req)
19
Added:
(handler req)
20
Added:
(unauthorized-response)))
21
Added:
(error
22
Added:
'authentication
23
Added:
"Undefined authentication credentials (FERTI_USER and FERTI_PASS environment variables)")))
18
24
19
25
(define (authorized? req)
20
26
(match (request->basic-credentials req)
21
27
[(cons user-b pass-b)
22
28
(define user (bytes->string/utf-8 user-b))
23
29
(define pass (bytes->string/utf-8 pass-b))
24
Removed:
(and (string=? user ferti-user) (string=? pass ferti-pass))]
30
Added:
(and (string=? user (ferti-user)) (string=? pass (ferti-pass)))]
25
31
[_ #f]))
26
32
27
33
(define (unauthorized-response)