Break menu into separate file

This commit is contained in:
Anders Pitman 2020-10-13 10:04:12 -06:00
parent 5cd911f310
commit 617444946d
4 changed files with 25 additions and 14 deletions

View File

@ -19,10 +19,12 @@ type WebUiHandler struct {
tunMan *TunnelManager
box *rice.Box
headHtml template.HTML
menuHtml template.HTML
}
type IndexData struct {
Head template.HTML
Menu template.HTML
Tunnels map[string]Tunnel
}
@ -49,6 +51,7 @@ type HeadData struct {
type UsersData struct {
Head template.HTML
Menu template.HTML
Users map[string]User
}
@ -99,6 +102,15 @@ func (h *WebUiHandler) handleWebUiRequest(w http.ResponseWriter, r *http.Request
h.headHtml = template.HTML(headBuilder.String())
menuText, err := box.String("menu.html")
if err != nil {
w.WriteHeader(500)
io.WriteString(w, "Error loading menu.html")
return
}
h.menuHtml = template.HTML(menuText)
token, err := extractToken("access_token", r)
if err != nil {
h.sendLoginPage(w, r, 401)
@ -138,6 +150,7 @@ func (h *WebUiHandler) handleWebUiRequest(w http.ResponseWriter, r *http.Request
indexData := IndexData{
Head: h.headHtml,
Menu: h.menuHtml,
Tunnels: h.db.GetTunnels(),
}
@ -189,8 +202,8 @@ func (h *WebUiHandler) handleWebUiRequest(w http.ResponseWriter, r *http.Request
http.Redirect(w, r, "/", 307)
default:
w.WriteHeader(400)
w.Write([]byte("Invalid endpoint"))
w.WriteHeader(404)
h.alertDialog(w, r, "Unknown page "+r.URL.Path, "/")
return
}
}
@ -345,6 +358,7 @@ func (h *WebUiHandler) users(w http.ResponseWriter, r *http.Request) {
tmpl.Execute(w, UsersData{
Head: h.headHtml,
Menu: h.menuHtml,
Users: h.db.GetUsers(),
})
}

View File

@ -6,12 +6,7 @@
<body>
<main>
<label id='menu-label' for='menu-toggle'>Menu</label>
<input type='checkbox' id='menu-toggle'/>
<div class='menu'>
<a class='menu-item' href='/'>Tunnels</a>
<a class='menu-item' href='/users'>Users</a>
</div>
{{.Menu}}
<div class='list'>
{{range $domain, $tunnel:= .Tunnels}}
<div class='list-item'>

7
webui/menu.html Normal file
View File

@ -0,0 +1,7 @@
<label id='menu-label' for='menu-toggle'>Menu</label>
<input type='checkbox' id='menu-toggle'/>
<div class='menu'>
<a class='menu-item' href='/'>Tunnels</a>
<a class='menu-item' href='/users'>Users</a>
<a class='menu-item' href='/tokens'>Tokens</a>
</div>

View File

@ -6,12 +6,7 @@
<body>
<main>
<label id='menu-label' for='menu-toggle'>Menu</label>
<input type='checkbox' id='menu-toggle'/>
<div class='menu'>
<a class='menu-item' href='/'>Tunnels</a>
<a class='menu-item' href='/users'>Users</a>
</div>
{{.Menu}}
<div class='list'>
{{range $username, $user := .Users}}
<div class='list-item'>