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]))