fix(backend): harden write registrar boundaries

This commit is contained in:
2026-07-21 16:12:20 +08:00
parent 1fcbb31301
commit 80bec26839
17 changed files with 639 additions and 42 deletions

View File

@@ -8,17 +8,23 @@ import (
"senlinai-agent/backend/internal/models"
)
var (
ErrTagNameRequired = errors.New("tag name is required")
ErrCronTitleRequired = errors.New("cron plan title is required")
ErrCronScheduleRequired = errors.New("cron schedule is required")
)
func (s *Service) CreateCronPlan(ownerID uint, projectID uint, input CreateCronPlanInput) (*models.SenlinAgentCronPlan, error) {
if err := ensureProjectOwner(ownerID, projectID); err != nil {
return nil, err
}
title := strings.TrimSpace(input.Title)
if title == "" {
return nil, errors.New("cron plan title is required")
return nil, ErrCronTitleRequired
}
schedule := strings.TrimSpace(input.Schedule)
if schedule == "" {
return nil, errors.New("cron schedule is required")
return nil, ErrCronScheduleRequired
}
plan := &models.SenlinAgentCronPlan{
ProjectID: projectID, CreatedBy: ownerID, Title: title, Schedule: schedule,
@@ -37,7 +43,7 @@ func (s *Service) CreateProjectTag(ownerID uint, projectID uint, name string) (*
func (s *Service) CreateTag(projectID uint, name string) (*models.SenlinAgentTag, error) {
name = strings.TrimSpace(name)
if name == "" {
return nil, errors.New("tag name is required")
return nil, ErrTagNameRequired
}
var existing models.SenlinAgentTag
err := models.DBService.Where("project_id = ? AND name = ?", projectID, name).First(&existing).Error