From da6df0ee07ae88a5d13c179a45a18712cb3f05ec Mon Sep 17 00:00:00 2001 From: Anthony Templeton Date: Wed, 3 Jul 2019 12:03:47 -0400 Subject: [PATCH] API: Duplicate API Key Name Handle With Useful HTTP Code --- pkg/api/apikey.go | 5 ++++- pkg/models/apikey.go | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/api/apikey.go b/pkg/api/apikey.go index d194429906f..945bdb55c30 100644 --- a/pkg/api/apikey.go +++ b/pkg/api/apikey.go @@ -68,7 +68,10 @@ func (hs *HTTPServer) AddAPIKey(c *models.ReqContext, cmd models.AddApiKeyComman if err == models.ErrInvalidApiKeyExpiration { return Error(400, err.Error(), nil) } - return Error(500, "Failed to add API key", err) + if err.Error() == models.ErrDuplicateApiKey.Error() { + return Error(409, "API Key Name Must Be Unique", nil) + } + return Error(500, "Failed to add API", err) } result := &dtos.NewApiKeyResult{ diff --git a/pkg/models/apikey.go b/pkg/models/apikey.go index 1edc8379d64..33fc593eba5 100644 --- a/pkg/models/apikey.go +++ b/pkg/models/apikey.go @@ -7,6 +7,7 @@ import ( var ErrInvalidApiKey = errors.New("Invalid API Key") var ErrInvalidApiKeyExpiration = errors.New("Negative value for SecondsToLive") +var ErrDuplicateApiKey = errors.New("UNIQUE constraint failed: api_key.org_id, api_key.name") type ApiKey struct { Id int64