summaryrefslogtreecommitdiffstats
path: root/main.scm
diff options
context:
space:
mode:
Diffstat (limited to 'main.scm')
-rw-r--r--main.scm20
1 files changed, 16 insertions, 4 deletions
diff --git a/main.scm b/main.scm
index a57d8c2..f163267 100644
--- a/main.scm
+++ b/main.scm
@@ -112,13 +112,25 @@
(define (parent-id p) (fifth p))
(define (children-count p) (sixth p))
-(define users (alist->hash-table `(("example" . ,(crypt "pw")))))
-
(define apikeys (make-hash-table))
+(define (get-pw-hash-from-db user-id)
+ (let ([pw-hash-row (condition-case (first-row db
+ "SELECT pw_hash
+ FROM users
+ WHERE user_id = ?
+ LIMIT 1"
+ user-id)
+ [(exn sqlite3) #f])])
+ (and pw-hash-row
+ (list? pw-hash-row)
+ (not (sql-null? (car pw-hash-row)))
+ (car pw-hash-row))
+ ))
+
(define (login username password)
- (let ([pw-hash-in-db (hash-table-ref/default users username #f)])
- (and password (string=? (crypt password pw-hash-in-db) pw-hash-in-db)
+ (let ([pw-hash-in-db (get-pw-hash-from-db username)])
+ (and password pw-hash-in-db (string=? (crypt password pw-hash-in-db) pw-hash-in-db)
(let ([apikey (number->string (pseudo-random-integer 340282366920938463463374607431768211455))])
(hash-table-set! apikeys apikey username)
apikey))))