Files
vpwg/Go/internal/web/handlers/admin.go
T

41 lines
1.4 KiB
Go

package handlers
import (
"net/http"
"amnezia-share/internal/models"
"amnezia-share/internal/web"
)
func registerAdmin(a *web.App, mux *http.ServeMux) {
mux.HandleFunc("GET /admin", a.RequireAdmin(AdminIndex(a)))
mux.HandleFunc("GET /admin/links", a.RequireAdmin(AdminLinksGet(a)))
mux.HandleFunc("POST /admin/links", a.RequireAdmin(a.CSRFProtect(AdminLinksPost(a))))
mux.HandleFunc("GET /admin/renewal", a.RequireAdmin(AdminRenewalGet(a)))
mux.HandleFunc("POST /admin/renewal", a.RequireAdmin(a.CSRFProtect(AdminRenewalPost(a))))
mux.HandleFunc("GET /admin/configs", a.RequireAdmin(AdminConfigsGet(a)))
mux.HandleFunc("POST /admin/configs", a.RequireAdmin(a.CSRFProtect(AdminConfigsPost(a))))
mux.HandleFunc("GET /admin/servers", a.RequireAdmin(AdminServersGet(a)))
mux.HandleFunc("POST /admin/servers", a.RequireAdmin(a.CSRFProtect(AdminServersPost(a))))
mux.HandleFunc("GET /admin/settings", a.RequireAdmin(AdminSettingsGet(a)))
mux.HandleFunc("POST /admin/settings", a.RequireAdmin(a.CSRFProtect(AdminSettingsPost(a))))
}
// adminLayout carries the data every admin page template needs for the shared
// cyber-dark shell (sidebar, topbar, flash banners).
type adminLayout struct {
Admin *models.User
Active string
OK string
Error string
}
func newAdminLayout(a *web.App, r *http.Request, active string) adminLayout {
return adminLayout{Admin: a.CurrentAdmin(r), Active: active}
}