feat: add namespace blocking functionality for JWT authentication (#313)

## Summary

Implements a denylist mechanism to prevent blocked namespaces from
publishing packages:

- Added `BlockedNamespaces` field to `JWTManager` struct for maintaining
the denylist
- Added validation logic in `GenerateTokenResponse` that checks user
permissions against blocked namespaces
- Admins with global permissions (`*`) bypass the blocking logic
- Added comprehensive test coverage for all blocking scenarios

Fixes #98
This commit is contained in:
adam jones 2025-08-27 23:46:35 +01:00 • committed by GitHub
commit 9d04671ee3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

9
internal/auth/blocks.go Normal file
View file

@ -0,0 +1,9 @@
package auth
// BlockedNamespaces contains a list of namespaces that are not allowed to publish packages.
// This is used as a denylist mechanism to prevent abuse.
var BlockedNamespaces = []string{
// Add blocked namespaces here, e.g.:
// "io.github.spammer",
// "com.evil-domain",
}