703fc701 |
(in-package :whitespace)
(define-view dark-css (params)
(colors:let-palette (make-instance 'colors:palette)
(eval '(get-theme-css))))
(define-view light-css (params)
(colors:let-palette (colors:invert-palette (make-instance 'colors:palette))
(eval '(get-theme-css))))
(define-view css (colorscheme)
(string-case:string-case (colorscheme :default "")
("light" (view 'light-css colorscheme))
("dark" (view 'dark-css colorscheme))))
(define-view userinfo (params)
(declare (ignore params))
(ningle:with-context-variables (session)
(cl-oid-connect:require-login
(cl-oid-connect::with-endpoints (gethash :endpoint-schema session)
`(200
(:content-type "application/json")
(,(cl-json:encode-json-to-string
(gethash :userinfo session))))))))
(define-controller css (params)
(cl-oid-connect.utils:assoc-cdr :scheme params))
(define-controller id (params)
params)
(define-view redirect (destination)
`(302 (:location ,destination)))
(define-view login (params)
(cl-who:with-html-output-to-string (s)
(:html
(:head (:title "Login"))
(:body
(:div
:class "login-button facebook"
(:a :href "/login/facebook" "Facebook"))
(:div
:class "login-button google"
(:a :href "/login/google" "Google"))))))
(define-controller logout (params)
(declare (ignore params))
(ningle:with-context-variables (session)
(setf (gethash :userinfo session) nil)
"/"))
(define-view root (feeds)
(let ((*feeds* feeds))
(base-template-f)))
(define-controller root (params)
(cl-oid-connect.utils::with-login
(ningle:with-context-variables (session)
(cl-oid-connect:redirect-if-necessary session
(let* ((user-info (gethash :app-user session)))
(deserialize user-info))))
(:unauthorized (c)
(declare (ignore c))
(format t "hmm...")
(araneus::switch-view 'redirect)
"/login")))
|