Skip to content
Snippets Groups Projects
Commit 62206c17 authored by Cam Saül's avatar Cam Saül
Browse files

Merge pull request #436 from metabase/redirect_to_setup

:unamused: Redirect to setup if a setup token still exists
parents 960f988b f4928315
No related branches found
No related tags found
No related merge requests found
......@@ -2,10 +2,16 @@
(:require [compojure.core :refer [context defroutes GET]]
[compojure.route :as route]
[ring.util.response :as resp]
[metabase.api.routes :as api]))
[metabase.api.routes :as api]
[metabase.setup :as setup]))
(let [index (fn [_] (resp/resource-response "frontend_client/index.html"))]
(let [redirect-to-setup? (fn [{:keys [uri]}] ; Redirect naughty users who try to visit a page other than setup
(and (setup/token-exists?) ; if setup is not yet complete
(not (re-matches #"^/setup/.*$" uri))))
index (fn [request]
(if (redirect-to-setup? request) (resp/redirect (format "/setup/init/%s" (setup/token-value)))
(resp/resource-response "frontend_client/index.html")))]
(defroutes routes
(GET "/" [] index) ; ^/$ -> index.html
(context "/api" [] api/routes) ; ^/api/ -> API routes
......
......@@ -3,6 +3,16 @@
(def ^:private setup-token
(atom nil))
(defn token-value
"Return the value of the setup token, if any."
[]
@setup-token)
(defn token-exists?
"Return `true` if a setup token exists."
[]
(boolean @setup-token))
(defn token-match?
"Function for checking if the supplied string matches our setup token.
Returns boolean `true` if supplied token matches `@setup-token`, `false` otherwise."
......
......@@ -67,16 +67,16 @@
:restarted]
[(do
(stop-task-runner!)
(with-redefs [metabase.task/hourly-task-delay (constantly 40)
(with-redefs [metabase.task/hourly-task-delay (constantly 50)
metabase.task/hourly-tasks-hook mock-hourly-tasks-hook]
(add-hook! #'hourly-tasks-hook inc-task-test-atom-counter-by-system-hour)
(reset! task-test-atom-counter 0)
(start-task-runner!)
[@task-test-atom-counter ; should be 0, since not enough time has elaspsed for the hook to be executed
(do (Thread/sleep 60)
@task-test-atom-counter) ; should have been called once (~20ms ago)
(do (Thread/sleep 80)
(do (Thread/sleep 75)
@task-test-atom-counter) ; should have been called once (~25ms ago)
(do (Thread/sleep 100)
@task-test-atom-counter) ; should have been called two more times
(do (stop-task-runner!)
:stopped)]))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment