diff options
Diffstat (limited to 'services/domain/tld.go')
| -rw-r--r-- | services/domain/tld.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/services/domain/tld.go b/services/domain/tld.go index eb80c14..d9140b7 100644 --- a/services/domain/tld.go +++ b/services/domain/tld.go @@ -6,6 +6,7 @@ import ( domainModel "dove/models/domain" domainRepo "dove/repositories/domain" "dove/utils/shortcuts" + "dove/utils/validate" ) type CreateTLDRequest struct { @@ -22,6 +23,8 @@ func CreateTLD(request CreateTLDRequest) *shortcuts.Error { switch { case name == "": return shortcuts.ServiceError(shortcuts.BadRequest, TLDNameRequired) + case !validate.DNSLabel(name): + return shortcuts.ServiceError(shortcuts.BadRequest, TLDNameInvalid) case domainRepo.FindTLDByName(name) != nil: return shortcuts.ServiceError(shortcuts.Unprocessable, TLDAlreadyExists) } @@ -46,6 +49,8 @@ func DeleteTLD(name string) *shortcuts.Error { return shortcuts.ServiceError(shortcuts.NotFound, TLDNotFound) case tld.IsDefault: return shortcuts.ServiceError(shortcuts.Forbidden, TLDProtected) + case domainRepo.CountDomainsByTLDID(tld.ID) > 0: + return shortcuts.ServiceError(shortcuts.Unprocessable, TLDHasDomains) } if deleteError := domainRepo.DeleteTLD(tld); deleteError != nil { |
