;;;; src/web/hermetic.lisp ;;;; ;;;; demo quick reference ;;;; (in-package #:cl-deck-builder2.web) (defroute ("/hermetic" :method :GET) () (if (hermetic:logged-in-p) (progn (flash :messages (format nil "Welcome, ~A!" (hermetic:user-name))) (render-with-env #P"/user/index.html")) (render-with-env #P"/user/login.html"))) (defroute ("/hermetic/login" :method :POST) (&key _parsed) (let ((username (query-param "username" _parsed)) (password (query-param "password" _parsed))) (handler-case (ratify:with-parsed-forms ((:string username) (:string password)) (let ((params (list :|username| username :|password| password))) (login params (cl-markup:html5 (:h1 "You are logged in")) (cl-markup:html5 (:h1 "Wrong password :c")) (cl-markup:html5 (:h1 "No such username " params))))) (ratify:combined-error (e) (flash :errors e) (redirect "/hermetic"))))) (defroute ("/hermetic/logout" :method :GET) () (logout (cl-markup:html5 (:h1 "You are logged out")) (cl-markup:html5 (:h1 "You are not logged in.")))) (defroute ("/hermetic/users-only" :method :GET) () (auth (:user) (cl-markup:html5 (:h1 "If you are seeing this, you are a user.")))) (defroute ("/hermetic/admins-only" :method :GET) () (hermetic:auth (:admin) (cl-markup:html5 (:h1 "If you are seeing this, you are an admin.")) (cl-markup:html5 (:h1 "Custom auth denied page. You are not authorized!"))))