Skip to content

Commit 4a483af

Browse files
committedJan 26, 2025
prevent changing admin passwords
1 parent 740f4aa commit 4a483af

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed
 

‎server/server_admin.go

+3
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ func (s *Server) handleUsersAdd(w http.ResponseWriter, r *http.Request, v *visit
5050
return err
5151
} else if u != nil {
5252
if req.Force == true {
53+
if u.IsAdmin() {
54+
return errHTTPForbidden
55+
}
5356
if err := s.userManager.ChangePassword(req.Username, req.Password); err != nil {
5457
return err
5558
}

‎server/server_admin_test.go

+16-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func TestUser_AddRemove(t *testing.T) {
5959
require.Equal(t, user.Everyone, users[2].Name)
6060
}
6161

62-
func TestUser_ChangePassword(t *testing.T) {
62+
func TestUser_ChangeUserPassword(t *testing.T) {
6363
s := newTestServer(t, newTestConfigWithAuthFile(t))
6464
defer s.closeDatabases()
6565

@@ -97,6 +97,21 @@ func TestUser_ChangePassword(t *testing.T) {
9797
require.Equal(t, 200, rr.Code)
9898
}
9999

100+
func TestUser_DontChangeAdminPassword(t *testing.T) {
101+
s := newTestServer(t, newTestConfigWithAuthFile(t))
102+
defer s.closeDatabases()
103+
104+
// Create admin
105+
require.Nil(t, s.userManager.AddUser("phil", "phil", user.RoleAdmin))
106+
require.Nil(t, s.userManager.AddUser("admin", "admin", user.RoleAdmin))
107+
108+
// Try to change password via API
109+
rr := request(t, s, "PUT", "/v1/users", `{"username": "admin", "password": "admin-new", "force":true}`, map[string]string{
110+
"Authorization": util.BasicAuth("phil", "phil"),
111+
})
112+
require.Equal(t, 403, rr.Code)
113+
}
114+
100115
func TestUser_AddRemove_Failures(t *testing.T) {
101116
s := newTestServer(t, newTestConfigWithAuthFile(t))
102117
defer s.closeDatabases()

0 commit comments

Comments
 (0)