src/session.lisp
(defpackage murja.session
(:use :cl)
(:export :set-session-value :get-session-value)
(:import-from :murja.session.db :assert-ownership :set-session-val* :get-session-val*)
(:import-from :murja.middleware.auth :*user* :*session-key*))
(in-package :murja.session)
(defun set-session-value (key val)
(assert *user*)
(assert *session-key*)
(let ((user-id (gethash "id" *user*)))
(assert-ownership user-id *session-key*)
(set-session-val* *session-key* (str:downcase (symbol-name key)) val)
(setf (hunchentoot:session-value key) val)))
(defun get-session-value (key)
(assert *user*)
(assert *session-key*)
(let* ((user-id (gethash "id" *user*))
(res (coerce (get-session-val* (murja.session.db:now) user-id key) 'list)))
(when res
(gethash "val" (first res)))))