diff of 552c2d39c1aabd38d5348581fd379910c3efe39a
552c2d39c1aabd38d5348581fd379910c3efe39a
diff --git a/src/packages/login-routes.lisp b/src/packages/login-routes.lisp
index c0f65dd..60eccdf 100644
--- a/src/packages/login-routes.lisp
+++ b/src/packages/login-routes.lisp
@@ -8,4 +8,5 @@
(:import-from :murja.middleware.db :@transaction)
(:import-from :easy-routes :defroute)
(:import-from :com.inuoe.jzon :parse :stringify)
- (:local-nicknames (:users :murja.model.user)))
+ (:local-nicknames (:users :murja.model.user)
+ (:settings :murja.model.settings)))
diff --git a/src/routes/login-routes.lisp b/src/routes/login-routes.lisp
index ccf2d3f..a106b5a 100644
--- a/src/routes/login-routes.lisp
+++ b/src/routes/login-routes.lisp
@@ -76,29 +76,30 @@
;; forms-based login
(defroute forms-post-login ("/api/login"
- :method :post
- :decorators (;; @test-now
- @transaction)) ()
- (let* ((form (lisp-fixup:formdata->hashmap (hunchentoot:raw-post-data :force-text t)))
- (username (gethash "username" form))
- (password (gethash "password" form))
- (user-row (users:get-user username (sha-512 password))))
- (if (and user-row
- (string= (users:user-username user-row) username))
- (let ((murja.middleware.auth:*user* user-row))
- (multiple-value-bind (session-key max-age) (get-session-key username)
- (if session-key
- (let ((murja.middleware.auth:*session-key* session-key))
-
- (set-session-value :logged-in-username username)
- (set-session-value :logged-in-user-id (users:user-id user-row))
-
- (set-session-cookies username session-key max-age)
- (log:info "~a logged in successfully~%" username))
- (progn
- (log:error "~a tried to log-in but get-session-key didn't return a session key. This happening signifies a bug" username)))))
+ :method :post
+ :decorators (;; @test-now
+ @transaction)) ()
+ (settings:with-cache
+ (let* ((form (lisp-fixup:formdata->hashmap (hunchentoot:raw-post-data :force-text t)))
+ (username (gethash "username" form))
+ (password (gethash "password" form))
+ (user-row (users:get-user username (sha-512 password))))
+ (if (and user-row
+ (string= (users:user-username user-row) username))
+ (let ((murja.middleware.auth:*user* user-row))
+ (multiple-value-bind (session-key max-age) (get-session-key username)
+ (if session-key
+ (let ((murja.middleware.auth:*session-key* session-key))
+
+ (set-session-value :logged-in-username username)
+ (set-session-value :logged-in-user-id (users:user-id user-row))
+
+ (set-session-cookies username session-key max-age)
+ (log:info "~a logged in successfully~%" username))
+ (progn
+ (log:error "~a tried to log-in but get-session-key didn't return a session key. This happening signifies a bug" username)))))
- (log:error "~a not authorized" username))
+ (log:error "~a not authorized" username))
- (let ((referer (hunchentoot:header-in* "referer")))
- (hunchentoot:redirect referer))))
+ (let ((referer (hunchentoot:header-in* "referer")))
+ (hunchentoot:redirect referer)))))