From 8cad5b8dc93df032d62f20634efff7398dcd76f0 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Thu, 26 Mar 2026 19:54:40 +0100 Subject: [PATCH] Move password hashers from server/v8 to server/public to fix layering violation --- server/channels/app/authentication.go | 2 +- server/channels/app/authentication_test.go | 2 +- server/channels/app/user.go | 2 +- server/channels/store/storetest/user_store.go | 2 +- server/channels/testlib/hashers_dev.go | 2 +- server/public/go.mod | 1 - server/public/go.sum | 2 -- server/public/model/user.go | 2 +- server/public/model/user_test.go | 2 +- server/{channels/app => public}/password/hashers/bcrypt.go | 2 +- server/{channels/app => public}/password/hashers/bcrypt_test.go | 2 +- server/{channels/app => public}/password/hashers/hashers.go | 2 +- server/{channels/app => public}/password/hashers/hashers_dev.go | 0 .../app => public}/password/hashers/hashers_dev_test.go | 0 .../app => public}/password/hashers/hashers_production.go | 0 .../{channels/app => public}/password/hashers/hashers_test.go | 2 +- server/{channels/app => public}/password/hashers/pbkdf2.go | 2 +- server/{channels/app => public}/password/hashers/pbkdf2_test.go | 2 +- server/{channels/app => public}/password/phcparser/parser.go | 0 .../{channels/app => public}/password/phcparser/parser_test.go | 0 20 files changed, 13 insertions(+), 16 deletions(-) rename server/{channels/app => public}/password/hashers/bcrypt.go (97%) rename server/{channels/app => public}/password/hashers/bcrypt_test.go (96%) rename server/{channels/app => public}/password/hashers/hashers.go (98%) rename server/{channels/app => public}/password/hashers/hashers_dev.go (100%) rename server/{channels/app => public}/password/hashers/hashers_dev_test.go (100%) rename server/{channels/app => public}/password/hashers/hashers_production.go (100%) rename server/{channels/app => public}/password/hashers/hashers_test.go (97%) rename server/{channels/app => public}/password/hashers/pbkdf2.go (98%) rename server/{channels/app => public}/password/hashers/pbkdf2_test.go (96%) rename server/{channels/app => public}/password/phcparser/parser.go (100%) rename server/{channels/app => public}/password/phcparser/parser_test.go (100%) diff --git a/server/channels/app/authentication.go b/server/channels/app/authentication.go index edda80f5aac..62e126133f1 100644 --- a/server/channels/app/authentication.go +++ b/server/channels/app/authentication.go @@ -10,9 +10,9 @@ import ( "strings" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/password/hashers" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" - "github.com/mattermost/mattermost/server/v8/channels/app/password/hashers" "github.com/mattermost/mattermost/server/v8/channels/app/users" "github.com/mattermost/mattermost/server/v8/channels/utils" "github.com/mattermost/mattermost/server/v8/platform/shared/mfa" diff --git a/server/channels/app/authentication_test.go b/server/channels/app/authentication_test.go index 375dc981adc..c359adfe41d 100644 --- a/server/channels/app/authentication_test.go +++ b/server/channels/app/authentication_test.go @@ -18,7 +18,7 @@ import ( "golang.org/x/crypto/bcrypt" "github.com/mattermost/mattermost/server/public/model" - "github.com/mattermost/mattermost/server/v8/channels/app/password/hashers" + "github.com/mattermost/mattermost/server/public/password/hashers" "github.com/mattermost/mattermost/server/v8/einterfaces/mocks" ) diff --git a/server/channels/app/user.go b/server/channels/app/user.go index e142d9bebcb..76699291050 100644 --- a/server/channels/app/user.go +++ b/server/channels/app/user.go @@ -19,13 +19,13 @@ import ( "golang.org/x/sync/errgroup" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/password/hashers" "github.com/mattermost/mattermost/server/public/plugin" "github.com/mattermost/mattermost/server/public/shared/i18n" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/app/email" "github.com/mattermost/mattermost/server/v8/channels/app/imaging" - "github.com/mattermost/mattermost/server/v8/channels/app/password/hashers" "github.com/mattermost/mattermost/server/v8/channels/app/users" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/einterfaces" diff --git a/server/channels/store/storetest/user_store.go b/server/channels/store/storetest/user_store.go index 7ffa3d167f4..140104b36e0 100644 --- a/server/channels/store/storetest/user_store.go +++ b/server/channels/store/storetest/user_store.go @@ -16,8 +16,8 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/password/hashers" "github.com/mattermost/mattermost/server/public/shared/request" - "github.com/mattermost/mattermost/server/v8/channels/app/password/hashers" "github.com/mattermost/mattermost/server/v8/channels/store" ) diff --git a/server/channels/testlib/hashers_dev.go b/server/channels/testlib/hashers_dev.go index a04bfae6591..c6598d89075 100644 --- a/server/channels/testlib/hashers_dev.go +++ b/server/channels/testlib/hashers_dev.go @@ -5,7 +5,7 @@ package testlib -import "github.com/mattermost/mattermost/server/v8/channels/app/password/hashers" +import "github.com/mattermost/mattermost/server/public/password/hashers" func setupFastTestHasher() { hashers.SetTestHasher(hashers.FastTestHasher()) diff --git a/server/public/go.mod b/server/public/go.mod index 46e6dd917e2..5a0d6ad6353 100644 --- a/server/public/go.mod +++ b/server/public/go.mod @@ -18,7 +18,6 @@ require ( github.com/mattermost/gosaml2 v0.10.0 github.com/mattermost/ldap v0.0.0-20231116144001-0f480c025956 github.com/mattermost/logr/v2 v2.0.22 - github.com/mattermost/mattermost/server/v8 v8.0.0-20251014075701-833e0125320d github.com/nicksnyder/go-i18n/v2 v2.6.0 github.com/pborman/uuid v1.2.1 github.com/pkg/errors v0.9.1 diff --git a/server/public/go.sum b/server/public/go.sum index f044752bd5a..d2362cf6fea 100644 --- a/server/public/go.sum +++ b/server/public/go.sum @@ -122,8 +122,6 @@ github.com/mattermost/ldap v0.0.0-20231116144001-0f480c025956 h1:Y1Tu/swM31pVwwb github.com/mattermost/ldap v0.0.0-20231116144001-0f480c025956/go.mod h1:SRl30Lb7/QoYyohYeVBuqYvvmXSZJxZgiV3Zf6VbxjI= github.com/mattermost/logr/v2 v2.0.22 h1:npFkXlkAWR9J8payh8ftPcCZvLbHSI125mAM5/r/lP4= github.com/mattermost/logr/v2 v2.0.22/go.mod h1:0sUKpO+XNMZApeumaid7PYaUZPBIydfuWZ0dqixXo+s= -github.com/mattermost/mattermost/server/v8 v8.0.0-20251014075701-833e0125320d h1:etRyN6FNd6fc7BGZ8X+XB2u/5Hb2HNz5/K53YZNvfrs= -github.com/mattermost/mattermost/server/v8 v8.0.0-20251014075701-833e0125320d/go.mod h1:HILhsra+xY4SNEFhuPbobH3I8a0aeXJcTJ6RWPX85nI= github.com/mattermost/xml-roundtrip-validator v0.1.0 h1:RXbVD2UAl7A7nOTR4u7E3ILa4IbtvKBHw64LDsmu9hU= github.com/mattermost/xml-roundtrip-validator v0.1.0/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= diff --git a/server/public/model/user.go b/server/public/model/user.go index 6817604b590..48f1893944d 100644 --- a/server/public/model/user.go +++ b/server/public/model/user.go @@ -19,9 +19,9 @@ import ( "golang.org/x/text/language" + "github.com/mattermost/mattermost/server/public/password/hashers" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/timezones" - "github.com/mattermost/mattermost/server/v8/channels/app/password/hashers" ) const ( diff --git a/server/public/model/user_test.go b/server/public/model/user_test.go index 8e18b335df8..cdf0595b598 100644 --- a/server/public/model/user_test.go +++ b/server/public/model/user_test.go @@ -12,9 +12,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/mattermost/mattermost/server/public/password/hashers" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/timezones" - "github.com/mattermost/mattermost/server/v8/channels/app/password/hashers" ) func TestUserAuditable(t *testing.T) { diff --git a/server/channels/app/password/hashers/bcrypt.go b/server/public/password/hashers/bcrypt.go similarity index 97% rename from server/channels/app/password/hashers/bcrypt.go rename to server/public/password/hashers/bcrypt.go index 01e3a507635..47b9de47990 100644 --- a/server/channels/app/password/hashers/bcrypt.go +++ b/server/public/password/hashers/bcrypt.go @@ -6,7 +6,7 @@ package hashers import ( "errors" - "github.com/mattermost/mattermost/server/v8/channels/app/password/phcparser" + "github.com/mattermost/mattermost/server/public/password/phcparser" "golang.org/x/crypto/bcrypt" ) diff --git a/server/channels/app/password/hashers/bcrypt_test.go b/server/public/password/hashers/bcrypt_test.go similarity index 96% rename from server/channels/app/password/hashers/bcrypt_test.go rename to server/public/password/hashers/bcrypt_test.go index ee8e113fc4d..096398db8a6 100644 --- a/server/channels/app/password/hashers/bcrypt_test.go +++ b/server/public/password/hashers/bcrypt_test.go @@ -8,7 +8,7 @@ import ( "strings" "testing" - "github.com/mattermost/mattermost/server/v8/channels/app/password/phcparser" + "github.com/mattermost/mattermost/server/public/password/phcparser" "github.com/stretchr/testify/require" ) diff --git a/server/channels/app/password/hashers/hashers.go b/server/public/password/hashers/hashers.go similarity index 98% rename from server/channels/app/password/hashers/hashers.go rename to server/public/password/hashers/hashers.go index 64eacf6d887..8682c47405a 100644 --- a/server/channels/app/password/hashers/hashers.go +++ b/server/public/password/hashers/hashers.go @@ -44,7 +44,7 @@ import ( "fmt" "strings" - "github.com/mattermost/mattermost/server/v8/channels/app/password/phcparser" + "github.com/mattermost/mattermost/server/public/password/phcparser" ) // PasswordHasher is a password hasher compliant with the PHC string format: diff --git a/server/channels/app/password/hashers/hashers_dev.go b/server/public/password/hashers/hashers_dev.go similarity index 100% rename from server/channels/app/password/hashers/hashers_dev.go rename to server/public/password/hashers/hashers_dev.go diff --git a/server/channels/app/password/hashers/hashers_dev_test.go b/server/public/password/hashers/hashers_dev_test.go similarity index 100% rename from server/channels/app/password/hashers/hashers_dev_test.go rename to server/public/password/hashers/hashers_dev_test.go diff --git a/server/channels/app/password/hashers/hashers_production.go b/server/public/password/hashers/hashers_production.go similarity index 100% rename from server/channels/app/password/hashers/hashers_production.go rename to server/public/password/hashers/hashers_production.go diff --git a/server/channels/app/password/hashers/hashers_test.go b/server/public/password/hashers/hashers_test.go similarity index 97% rename from server/channels/app/password/hashers/hashers_test.go rename to server/public/password/hashers/hashers_test.go index 9fe8a7107d1..ab0c0d8d46c 100644 --- a/server/channels/app/password/hashers/hashers_test.go +++ b/server/public/password/hashers/hashers_test.go @@ -6,7 +6,7 @@ package hashers import ( "testing" - "github.com/mattermost/mattermost/server/v8/channels/app/password/phcparser" + "github.com/mattermost/mattermost/server/public/password/phcparser" "github.com/stretchr/testify/require" ) diff --git a/server/channels/app/password/hashers/pbkdf2.go b/server/public/password/hashers/pbkdf2.go similarity index 98% rename from server/channels/app/password/hashers/pbkdf2.go rename to server/public/password/hashers/pbkdf2.go index cff11f8ff42..b46fc326ff1 100644 --- a/server/channels/app/password/hashers/pbkdf2.go +++ b/server/public/password/hashers/pbkdf2.go @@ -14,7 +14,7 @@ import ( "strconv" "strings" - "github.com/mattermost/mattermost/server/v8/channels/app/password/phcparser" + "github.com/mattermost/mattermost/server/public/password/phcparser" ) const ( diff --git a/server/channels/app/password/hashers/pbkdf2_test.go b/server/public/password/hashers/pbkdf2_test.go similarity index 96% rename from server/channels/app/password/hashers/pbkdf2_test.go rename to server/public/password/hashers/pbkdf2_test.go index 080adde2788..7f3758912d1 100644 --- a/server/channels/app/password/hashers/pbkdf2_test.go +++ b/server/public/password/hashers/pbkdf2_test.go @@ -11,7 +11,7 @@ import ( "strings" "testing" - "github.com/mattermost/mattermost/server/v8/channels/app/password/phcparser" + "github.com/mattermost/mattermost/server/public/password/phcparser" "github.com/stretchr/testify/require" ) diff --git a/server/channels/app/password/phcparser/parser.go b/server/public/password/phcparser/parser.go similarity index 100% rename from server/channels/app/password/phcparser/parser.go rename to server/public/password/phcparser/parser.go diff --git a/server/channels/app/password/phcparser/parser_test.go b/server/public/password/phcparser/parser_test.go similarity index 100% rename from server/channels/app/password/phcparser/parser_test.go rename to server/public/password/phcparser/parser_test.go