From d7125de883ac12800214eb66fe8706fd5903d94c Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 2 Oct 2015 20:46:02 -0400 Subject: [PATCH] Take note of backend telling us whether current user is a curator or not --- src/sessions.rkt | 7 ++++--- src/site.rkt | 15 +++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/sessions.rkt b/src/sessions.rkt index fea2895..7f074ce 100644 --- a/src/sessions.rkt +++ b/src/sessions.rkt @@ -20,7 +20,7 @@ (* 7 24 60 60)) ;; one week in seconds 1000)) ;; convert to milliseconds -(struct session (key expiry email password) #:prefab) +(struct session (key expiry email password curator?) #:prefab) (define sessions (make-persistent-state 'session-store (lambda () (make-hash)))) @@ -36,7 +36,7 @@ (when (and s (<= (session-expiry s) now)) (hash-remove! ss session-key)))) -(define (create-session! email password) +(define (create-session! email password #:curator? [curator? #f]) (expire-sessions!) (define session-key (bytes->string/utf-8 (random-bytes/base64 32))) (hash-set! (sessions) @@ -44,7 +44,8 @@ (session session-key (+ (current-inexact-milliseconds) session-lifetime) email - password)) + password + curator?)) session-key) (define (destroy-session! session-key) diff --git a/src/site.rkt b/src/site.rkt index 491e561..9dfec2f 100644 --- a/src/site.rkt +++ b/src/site.rkt @@ -331,6 +331,11 @@ 'passwd password 'code code))) +(define (authentication-success->curator? success) + (match success + [#t #f] ;; new user -- we can only assume they are *not* curators + [(hash-table ('curation curator?) _ ...) (if curator? #t #f)])) + (define (process-login-credentials request) (define-form-bindings request (email password)) (if (or (equal? (string-trim email) "") @@ -341,8 +346,9 @@ (login-form "Something went awry; please try again.")] [(or "emailed" #f) (summarise-code-emailing "Incorrect password, or nonexistent user." email)] - [else - (create-session! email password)]))) + [success + (create-session! email password + #:curator? (authentication-success->curator? success))]))) (define (register-form #:email [email ""] #:code [code ""] @@ -415,10 +421,11 @@ (retry "The code you entered was incorrect. Please try again.")] [(or "emailed" #f) (retry "Something went awry; you have been emailed another code. Please check your email.")] - [else + [success ;; The email and password combo we have been given is good to go. ;; Set a cookie and consider ourselves logged in. - (create-session! email password)])])) + (create-session! email password + #:curator? (authentication-success->curator? success))])])) (define (notify-of-emailing request) (define-form-bindings request (email_for_code))