001  (ns ring.ring-okta.session
002    (:require [clojure.core.incubator :refer [dissoc-in]]
003              [clojure.java.io :as io]
004              [ring.ring-okta.saml :as saml]
005              [ring.util.response :as response]))
006  
007  (defn login [{:keys [okta-config-location params]}]
008    (let [okta-config-contents (with-open [r (io/reader okta-config-location)] (slurp r))
009          okta-response (saml/respond-to-okta-post okta-config-contents params)]
010      (assoc-in
011       (response/redirect (:redirect-url okta-response) (response/redirect-status-codes :see-other))
012       [:session :okta/user]
013       (:authenticated-user-email okta-response))))
014  
015  (defn logout [request]
016    (dissoc-in request [:session :okta/user]))