aboutsummaryrefslogtreecommitdiff
path: root/services/domain/tld.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/domain/tld.go')
-rw-r--r--services/domain/tld.go5
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 {