- ;; if sessions doesn't exist, then project is not session enabled
- (when sessions
- (cond
- ((null key)
- (make-websession req ent method))
- (t
- (maphash
- (lambda (k v)
- (declare (ignore k))
- (when (equal key (websession-key v))
- (setf (websession-lastref v) (get-universal-time))
- (return-from ensure-websession v)))
- sessions)
- (make-websession req ent method))))))
-
-
-(defun make-websession (req ent method)
- (let* ((key (random-string :length 24 :set :lower-alphanumeric))
- (sess (make-instance 'websession
- :key key
- :lastref (get-universal-time)
- :lifetime (lifetime (session-master (entity-project ent)))
- :method method))
- (hash (sessions (session-master (entity-project ent)))))
+ (maphash
+ (lambda (k v)
+ (declare (ignore k))
+ (when (equal key (websession-key v))
+ (setf (websession-lastref v) (get-universal-time))
+ (return-from find-websession v)))
+ sessions)
+ nil))
+
+(defun is-session-enabled (ent)
+ (not (null (sessions (session-master (entity-project ent))))))
+
+
+(defun make-websession (req ent)
+ (let* ((key (random-string :length +length-session-id+
+ :set :lower-alphanumeric))
+ (sess (make-instance 'websession
+ :key key
+ :lastref (get-universal-time)
+ :lifetime (lifetime (session-master (entity-project ent)))
+ :method :try-cookie))
+ (hash (sessions (session-master (entity-project ent)))))