001 (ns ring.ring-okta.predicates
002 (:require [ring.util.request :as ring-request]))
003
004 (def not-nil? (comp not nil?))
005
006 (defn login? [{:keys [request-method] :as request}]
007 (and (= request-method :post)
008 (= (ring-request/path-info request) "/login")))
009
010 (defn logout? [{:keys [request-method] :as request}]
011 (and (= request-method :post)
012 (= (ring-request/path-info request) "/logout")))
013
014 (defn logged-in? [{:keys [session]}]
015 (:okta/user session))
016
017 (defn- match-pair? [[skip-method skip-path] request-method request-path]
018 (and (or (= :any skip-method)
019 (= skip-method request-method))
020 (not-nil? (re-matches (re-pattern skip-path) request-path))))
021
022 (defn skip-route? [{:keys [request-method] :as request} skip-routes]
023 (when skip-routes
024 (let [request-path (ring-request/path-info request)
025 skip-pairs (partition 2 skip-routes)]
026 (some #(match-pair? % request-method request-path) skip-pairs))))
027
028 (defn force-user? [force-user]
029 (not-nil? force-user))