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} }