cl-deck-builder2/old/hermetic.lisp
2024-01-21 02:35:35 -05:00

44 lines
1.6 KiB
Common Lisp

;;;; 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!"))))