 ;; Since this module is dependent on bidi, let's provide some sample
 ;; bidi routes that can be used as-is or to demonstrate.
 
-(defn new-login-get-handler [handlers-p post-handler-key {:keys [boilerplate] :as opts}]
+(defn new-login-get-handler [handlers-p & {:keys [boilerplate] :as opts}]
   (fn [{{{requested-uri :value} "requested-uri"} :cookies
         routes :modular.bidi/routes}]
     (let [form
           [:form {:method "POST" :style "border: 1px dotted #555"
-                  :action (bidi/path-for routes (get @handlers-p post-handler-key))}
+                  :action (bidi/path-for routes (get @handlers-p :process-login))}
            (when requested-uri
              [:input {:type "hidden" :name :requested-uri :value requested-uri}])
            [:div

      {:status 200
       :body (if boilerplate (boilerplate (html form)) (html [:body form]))})))

(defn new-login-post-handler [handlers-p get-handler-key {:keys [user-authenticator http-session-store] :as opts}]
  (s/validate {:user-authenticator (s/protocol UserAuthenticator)
               :http-session-store (s/protocol HttpSessionStore)}
              opts)

    (add-bidi-protection-wrapper
     routes
     :http-request-authenticator (new-session-based-request-authenticator :http-session-store (:http-session-store this) :user-roles user-roles)
     :failed-authentication-handler (->BidiFailedAuthenticationRedirect (get-in (:login-form this) [:handlers :login]))))

  NewUserCreator
  (add-user! [_ uid pw]
