35 lines
1.2 KiB
Clojure
35 lines
1.2 KiB
Clojure
(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!))
|