P2.1: BYOC Admin API — произвольные креды при создании тенанта
POST /admin/tenants теперь принимает опциональные access_key/secret_key. Если задано любое из полей — оба обязательны (мин. длина 8/16). С произвольными кредами tenantID генерируется случайно (CreateFixedAutoID). Без кредов — поведение прежнее (store.Create).
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user