P2.1: BYOC Admin API — произвольные креды при создании тенанта

POST /admin/tenants теперь принимает опциональные access_key/secret_key. Если
задано любое из полей — оба обязательны (мин. длина 8/16). С произвольными
кредами tenantID генерируется случайно (CreateFixedAutoID). Без кредов —
поведение прежнее (store.Create).
This commit is contained in:
Repinoid
2026-10-06 18:17:24 +03:00
parent b7f79b388f
commit 8c39bc5346
2 changed files with 32 additions and 1 deletions
+11
View File
@@ -103,6 +103,17 @@ func (s *TenantStore) Create(name string, maxQueues int) (*Tenant, error) {
// CreateFixed — создаёт тенанта с заранее известными credentials (для seed/demo).
// Используется только при инициализации демо-данных; не вызывается из user-facing API.
// CreateFixedAutoID — создаёт тенанта с заранее известными креды (BYOC),
// но СЛУЧАЙНЫМ tenantID (генерируется через crypto/rand). Используется Admin API
// при задании произвольных access_key/secret_key без явного tenantID.
func (s *TenantStore) CreateFixedAutoID(name string, maxQueues int, accessKey, secretKey string) (*Tenant, error) {
id, err := generateTenantID()
if err != nil {
return nil, fmt.Errorf("generate tenant id: %w", err)
}
return s.CreateFixed(name, maxQueues, id, accessKey, secretKey)
}
func (s *TenantStore) CreateFixed(name string, maxQueues int, tenantID, accessKey, secretKey string) (*Tenant, error) {
s.mu.Lock()
if _, exists := s.byID[tenantID]; exists {