chore(auth): allow six-byte internal passwords

This commit is contained in:
QiuSW
2026-07-27 15:02:44 +08:00
parent 4533df7abc
commit 2bed09eccd
7 changed files with 12 additions and 9 deletions
+2 -2
View File
@@ -78,10 +78,10 @@ fixture,默认 APK 不携带真实订单资料。
Set-Location backend-api Set-Location backend-api
$env:GOTOOLCHAIN = "local" $env:GOTOOLCHAIN = "local"
go run ./cmd/migrate up go run ./cmd/migrate up
$env:CMROUBAO_AUTH_PASSWORD = "至少 12 个 UTF-8 字节" $env:CMROUBAO_AUTH_PASSWORD = "至少 6 个 UTF-8 字节"
go run ./cmd/authctl create-user ADMIN admin go run ./cmd/authctl create-user ADMIN admin
Remove-Item Env:CMROUBAO_AUTH_PASSWORD Remove-Item Env:CMROUBAO_AUTH_PASSWORD
$env:CMROUBAO_AUTH_PASSWORD = "采购员独立强密码,至少 12 个 UTF-8 字节" $env:CMROUBAO_AUTH_PASSWORD = "采购员独立强密码,至少 6 个 UTF-8 字节"
go run ./cmd/authctl create-user BUYER buyer01 go run ./cmd/authctl create-user BUYER buyer01
Remove-Item Env:CMROUBAO_AUTH_PASSWORD Remove-Item Env:CMROUBAO_AUTH_PASSWORD
go run ./cmd/authctl create-device buyer-phone-01 go run ./cmd/authctl create-device buyer-phone-01
+2 -2
View File
@@ -39,11 +39,11 @@ go build -o bin/cmroubao-authctl.exe ./cmd/authctl
go run ./cmd/migrate up go run ./cmd/migrate up
go run ./cmd/migrate status go run ./cmd/migrate status
$env:CMROUBAO_AUTH_PASSWORD = "至少 12 个 UTF-8 字节" $env:CMROUBAO_AUTH_PASSWORD = "至少 6 个 UTF-8 字节"
go run ./cmd/authctl create-user ADMIN admin go run ./cmd/authctl create-user ADMIN admin
Remove-Item Env:CMROUBAO_AUTH_PASSWORD Remove-Item Env:CMROUBAO_AUTH_PASSWORD
$env:CMROUBAO_AUTH_PASSWORD = "采购员独立强密码,至少 12 个 UTF-8 字节" $env:CMROUBAO_AUTH_PASSWORD = "采购员独立强密码,至少 6 个 UTF-8 字节"
go run ./cmd/authctl create-user BUYER buyer01 go run ./cmd/authctl create-user BUYER buyer01
Remove-Item Env:CMROUBAO_AUTH_PASSWORD Remove-Item Env:CMROUBAO_AUTH_PASSWORD
go run ./cmd/authctl create-device buyer-phone-01 go run ./cmd/authctl create-device buyer-phone-01
+1 -1
View File
@@ -177,7 +177,7 @@ func TestRunRejectsWeakPasswordAndInvalidCommands(t *testing.T) {
databasePath := migratedDatabase(t) databasePath := migratedDatabase(t)
err := run( err := run(
[]string{"create-user", "BUYER", "buyer"}, []string{"create-user", "BUYER", "buyer"},
testLookup(databasePath, "too-short"), testLookup(databasePath, "short"),
&bytes.Buffer{}, &bytes.Buffer{},
) )
if err == nil || err.Error() != "authentication input is invalid" { if err == nil || err.Error() != "authentication input is invalid" {
+1 -1
View File
@@ -17,7 +17,7 @@ const (
MaxUsernameBytes = 128 MaxUsernameBytes = 128
MaxDeviceNameBytes = 128 MaxDeviceNameBytes = 128
MaxVersionBytes = 128 MaxVersionBytes = 128
MinPasswordBytes = 12 MinPasswordBytes = 6
MaxPasswordBytes = 72 MaxPasswordBytes = 72
) )
@@ -40,12 +40,15 @@ func TestBcryptRejectsInvalidCostAndOversizedPasswords(t *testing.T) {
t.Fatalf("NewBcrypt() error = %v", err) t.Fatalf("NewBcrypt() error = %v", err)
} }
oversized := strings.Repeat("x", 73) oversized := strings.Repeat("x", 73)
if _, err := manager.Hash("too-short"); !errors.Is( if _, err := manager.Hash("short"); !errors.Is(
err, err,
ErrInvalidPassword, ErrInvalidPassword,
) { ) {
t.Fatalf("Hash(short) error = %v", err) t.Fatalf("Hash(short) error = %v", err)
} }
if _, err := manager.Hash("sixsix"); err != nil {
t.Fatalf("Hash(six-byte password) error = %v", err)
}
if _, err := manager.Hash(oversized); !errors.Is( if _, err := manager.Hash(oversized); !errors.Is(
err, err,
ErrInvalidPassword, ErrInvalidPassword,
+1 -1
View File
@@ -117,7 +117,7 @@ $env:RUN_START_COMMAND = "1"
Set-Location backend-api Set-Location backend-api
$env:GOTOOLCHAIN = "local" $env:GOTOOLCHAIN = "local"
go run ./cmd/migrate up go run ./cmd/migrate up
$env:CMROUBAO_AUTH_PASSWORD = "至少 12 个 UTF-8 字节" $env:CMROUBAO_AUTH_PASSWORD = "至少 6 个 UTF-8 字节"
go run ./cmd/authctl create-user ADMIN admin go run ./cmd/authctl create-user ADMIN admin
Remove-Item Env:CMROUBAO_AUTH_PASSWORD Remove-Item Env:CMROUBAO_AUTH_PASSWORD
go run ./cmd/api go run ./cmd/api
+1 -1
View File
@@ -117,7 +117,7 @@ $env:RUN_START_COMMAND = "1"
Set-Location backend-api Set-Location backend-api
$env:GOTOOLCHAIN = "local" $env:GOTOOLCHAIN = "local"
go run ./cmd/migrate up go run ./cmd/migrate up
$env:CMROUBAO_AUTH_PASSWORD = "至少 12 个 UTF-8 字节" $env:CMROUBAO_AUTH_PASSWORD = "至少 6 个 UTF-8 字节"
go run ./cmd/authctl create-user ADMIN admin go run ./cmd/authctl create-user ADMIN admin
Remove-Item Env:CMROUBAO_AUTH_PASSWORD Remove-Item Env:CMROUBAO_AUTH_PASSWORD
go run ./cmd/api go run ./cmd/api