(ns yenu.routes.auth (:require [yenu.layout :as layout] [compojure.core :refer [defroutes GET POST]] [yenu.config :refer [env]] [ring.util.response :refer [redirect]])) (defn valid-identity [password] (cond (= password (:creator-password env)) :creator (= password (:user-password env)) :user)) (defn login! [request] (let [password (get-in request [:form-params "password"]) session (:session request) user-identity (valid-identity password)] (if user-identity (let [updated-session (assoc session :identity user-identity)] (-> (redirect "/page/1") (assoc :flash {:message "Erfolgreich eingeloggt." :type "success"}) (assoc :session updated-session))) (-> (redirect "/login") (assoc :flash {:message "Falsches Passwort." :type "danger"}))))) (defn logout! [request] (-> (redirect "/login") (assoc :session {}) (assoc :flash {:message "Erfolgreich ausgeloggt." :type "success"}))) (defroutes auth-routes (GET "/login" [:as request] (layout/render "login.html", {:flash (:flash request)})) (POST "/login" [] login!) (GET "/logout" [] logout!))