fix: Z35 map Chinese display names to stable physical DB names
Keep Chinese on Binding for UI; Agents use user_{id} or db{hash}; sanitize on attach/heal/publish.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
|
||||
"aijianzhan/platform/internal/authx"
|
||||
"aijianzhan/platform/internal/schema"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -259,7 +260,7 @@ func (s *MemoryStore) Update(_ context.Context, tenantID, agentID int64, in Upda
|
||||
a.OnlineDBID = strings.TrimSpace(*in.OnlineDBID)
|
||||
}
|
||||
if in.DatabaseName != nil {
|
||||
a.DatabaseName = strings.TrimSpace(*in.DatabaseName)
|
||||
a.DatabaseName = schema.SafeSyncDatabaseName(*in.DatabaseName, agentID, 0)
|
||||
}
|
||||
cp := cloneAcc(&a.Account)
|
||||
return &cp, nil
|
||||
@@ -394,7 +395,8 @@ func (s *MemoryStore) AttachSyncBind(_ context.Context, agentID, tenantID int64,
|
||||
}
|
||||
a.ChannelID = strings.TrimSpace(channelID)
|
||||
a.OnlineDBID = strings.TrimSpace(onlineDBID)
|
||||
a.DatabaseName = strings.TrimSpace(databaseName)
|
||||
// Z35:禁止中文 DisplayName 等非法串写入物理库名
|
||||
a.DatabaseName = schema.SafeSyncDatabaseName(databaseName, agentID, 0)
|
||||
if activate {
|
||||
a.Status = StatusActive
|
||||
}
|
||||
@@ -592,7 +594,7 @@ func (s *PostgresStore) Update(ctx context.Context, tenantID, agentID int64, in
|
||||
onlineDBID = strings.TrimSpace(*in.OnlineDBID)
|
||||
}
|
||||
if in.DatabaseName != nil {
|
||||
dbName = strings.TrimSpace(*in.DatabaseName)
|
||||
dbName = schema.SafeSyncDatabaseName(*in.DatabaseName, agentID, 0)
|
||||
}
|
||||
if _, err := s.DB.ExecContext(ctx, `
|
||||
UPDATE platform_meta.agent_accounts SET name=$1, status=$2, role_id=NULLIF($3,0),
|
||||
@@ -760,7 +762,8 @@ ORDER BY agent_id DESC LIMIT 1`, hostKey,
|
||||
|
||||
func (s *PostgresStore) AttachSyncBind(ctx context.Context, agentID, tenantID int64, channelID, onlineDBID, databaseName string, activate bool) (*Account, error) {
|
||||
statusSQL := ""
|
||||
args := []any{tenantID, strings.TrimSpace(channelID), strings.TrimSpace(onlineDBID), strings.TrimSpace(databaseName), agentID}
|
||||
safeDB := schema.SafeSyncDatabaseName(databaseName, agentID, 0)
|
||||
args := []any{tenantID, strings.TrimSpace(channelID), strings.TrimSpace(onlineDBID), safeDB, agentID}
|
||||
if activate {
|
||||
statusSQL = ", status='active'"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user