(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")))