1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | (in-package #:gitbrn) (defmethod make-load-form ((template routes:uri-component-template) &optional env) (declare (ignore env)) `(make-instance ',(class-name (class-of template)) :spec ',(routes:template-data template))) (defparameter *server* (make-instance 'easy-routes:easy-routes-acceptor :port 3001 :address "0.0.0.0")) (defstruct user id username) (defvar *current-user* nil) (defmethod hunchentoot:handle-request ((hunchentoot:acceptor (eql *server*)) request) (let* ((*current-user* (get-current-user request))) (progn (call-next-method)))) (defun get-current-user (request) (let ((session (hunchentoot:cookie-in "session" request))) (let ((username (sqlite:execute-single *db* "select u.username, u.id from users u join sessions s on u.id = s.user_id where s.token = ?" session))) (if (null username) nil (make-user :username username :id "123"))))) (push (hunchentoot:create-folder-dispatcher-and-handler "/static/assets/" "/home/mcksp/proj/gitbrn/assets/") hunchentoot:*dispatch-table*) (defun start () (hunchentoot:start *server*)) (defun stop () (hunchentoot:stop *server*)) (defun main () (start) (sleep #xffffffff)) |