Skip to content

Commit

Permalink
Implement get-spa and use that for /admin
Browse files Browse the repository at this point in the history
  • Loading branch information
kelvinqian00 committed Nov 15, 2024
1 parent d72a019 commit ec85d87
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 9 deletions.
8 changes: 7 additions & 1 deletion src/main/lrsql/admin/interceptors/ui.clj
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,17 @@
[lrsql.admin.interceptors.oidc :as oidc-i]
[lrsql.init.localization :refer [custom-language-map]]))

(defn get-spa
[path-prefix]
(fn [_]
(-> (resp/resource-response (str path-prefix "public/admin/index.html"))
(assoc-in [:headers "Content-Type"] "text/html"))))

(defn admin-ui-redirect
"Handler function to redirect to the admin ui"
[path-prefix]
(fn [_]
(resp/redirect (str path-prefix "/admin/index.html"))))
(resp/redirect (str path-prefix "/admin"))))

(defn get-env
"Provide select config data to client upon request. Takes a map with static
Expand Down
27 changes: 19 additions & 8 deletions src/main/lrsql/admin/routes.clj
Original file line number Diff line number Diff line change
Expand Up @@ -215,18 +215,29 @@

(defn admin-ui-routes
[common-interceptors {:keys [proxy-path] :as inject-config}]
#{;; Redirect root to admin UI
#{["/admin/env" :get (conj common-interceptors
(ui/get-env inject-config))
:route-name :lrsql.admin.ui/get-env]
;; SPA index.html retirevals + redirects
["/admin" :get (ui/get-spa proxy-path)
:route-name :lrsql.admin.ui/path-redirect]
["/" :get (ui/admin-ui-redirect proxy-path)
:route-name :lrsql.admin.ui/root-redirect]
;; Redirect admin w/o slash to admin UI
["/admin" :get (ui/admin-ui-redirect proxy-path)
:route-name :lrsql.admin.ui/path-redirect]
;; Redirect admin with slash to admin UI
["/admin/" :get (ui/admin-ui-redirect proxy-path)
:route-name :lrsql.admin.ui/slash-redirect]
["/admin/env" :get (conj common-interceptors
(ui/get-env inject-config))
:route-name :lrsql.admin.ui/get-env]})
;; re-route routes
["/admin/credentials" :get (ui/get-spa proxy-path)
:route-name :lrsql.admin.ui/admin-credentials-redirect]
["/admin/accounts" :get (ui/get-spa proxy-path)
:route-name :lrsql.admin.ui/admin-accounts-redirect]
["/admin/accounts/password" :get (ui/get-spa proxy-path)
:route-name :lrsql.admin.ui/admin-accounts-password-redirect]
["/admin/data-management" :get (ui/get-spa proxy-path)
:route-name :lrsql.admin.ui/admin-data-management-redirect]
["/admin/status" :get (ui/get-spa proxy-path)
:route-name :lrsql.admin.ui/admin-status-redirect]
["/admin/reactions" :get (ui/get-spa proxy-path)
:route-name :lrsql.admin.ui/reactions-redirect]})

(defn admin-reaction-routes
[common-interceptors jwt-secret jwt-leeway no-val-opts]
Expand Down

0 comments on commit ec85d87

Please sign in to comment.