44 lines
1.6 KiB
Common Lisp
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!"))))
|