fix: bridge panel admin authorization
This commit is contained in:
+1
-1
@@ -332,7 +332,7 @@ func (s *Server) clusterDeviceNames() []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Panel(password string) http.Handler {
|
func (s *Server) Panel(password string) http.Handler {
|
||||||
p := panelweb.New(password, s)
|
p := panelweb.New(password, s.AdminToken, s)
|
||||||
go p.Cleanup()
|
go p.Cleanup()
|
||||||
return p.Handler()
|
return p.Handler()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,13 +25,14 @@ type Runner interface {
|
|||||||
|
|
||||||
type Panel struct {
|
type Panel struct {
|
||||||
Password string
|
Password string
|
||||||
|
AdminToken string
|
||||||
Runner Runner
|
Runner Runner
|
||||||
mu sync.RWMutex
|
mu sync.RWMutex
|
||||||
sessions map[string]time.Time
|
sessions map[string]time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(password string, runner Runner) *Panel {
|
func New(password, adminToken string, runner Runner) *Panel {
|
||||||
return &Panel{Password: password, Runner: runner, sessions: make(map[string]time.Time)}
|
return &Panel{Password: password, AdminToken: adminToken, Runner: runner, sessions: make(map[string]time.Time)}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Panel) Handler() http.Handler {
|
func (p *Panel) Handler() http.Handler {
|
||||||
@@ -110,6 +111,9 @@ func (p *Panel) securitySettings(w http.ResponseWriter, r *http.Request) {
|
|||||||
http.Error(w, "security API unavailable", 501)
|
http.Error(w, "security API unavailable", 501)
|
||||||
}
|
}
|
||||||
func (p *Panel) updateSecuritySettings(w http.ResponseWriter, r *http.Request) {
|
func (p *Panel) updateSecuritySettings(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if p.AdminToken != "" {
|
||||||
|
r.Header.Set("X-Admin-Token", p.AdminToken)
|
||||||
|
}
|
||||||
if v, ok := p.Runner.(securityPanelRunner); ok {
|
if v, ok := p.Runner.(securityPanelRunner); ok {
|
||||||
v.UpdateSecuritySettingsJSON(w, r)
|
v.UpdateSecuritySettingsJSON(w, r)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ func (testRunner) RotateAPIKey(w http.ResponseWriter, r *http.Request) {}
|
|||||||
func (testRunner) DeleteDevice(w http.ResponseWriter, r *http.Request) {}
|
func (testRunner) DeleteDevice(w http.ResponseWriter, r *http.Request) {}
|
||||||
|
|
||||||
func TestStaticCSSContentType(t *testing.T) {
|
func TestStaticCSSContentType(t *testing.T) {
|
||||||
p := New("test-password", testRunner{})
|
p := New("test-password", "admin", testRunner{})
|
||||||
req := httptest.NewRequest("GET", "/static/app.css", nil)
|
req := httptest.NewRequest("GET", "/static/app.css", nil)
|
||||||
rec := httptest.NewRecorder()
|
rec := httptest.NewRecorder()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user