diff --git a/pkg/api/apikey.go b/pkg/api/apikey.go index 945bdb55c30..59edf073a83 100644 --- a/pkg/api/apikey.go +++ b/pkg/api/apikey.go @@ -68,8 +68,8 @@ func (hs *HTTPServer) AddAPIKey(c *models.ReqContext, cmd models.AddApiKeyComman if err == models.ErrInvalidApiKeyExpiration { return Error(400, err.Error(), nil) } - if err.Error() == models.ErrDuplicateApiKey.Error() { - return Error(409, "API Key Name Must Be Unique", nil) + if err == models.ErrDuplicateApiKey { + return Error(409, err.Error(), nil) } return Error(500, "Failed to add API", err) } diff --git a/pkg/models/apikey.go b/pkg/models/apikey.go index 33fc593eba5..fe96bbd14df 100644 --- a/pkg/models/apikey.go +++ b/pkg/models/apikey.go @@ -7,7 +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") +var ErrDuplicateApiKey = errors.New("API Key Organization ID And Name Must Be Unique") type ApiKey struct { Id int64 diff --git a/pkg/services/sqlstore/apikey.go b/pkg/services/sqlstore/apikey.go index 13ea1feb7da..062ae76e492 100644 --- a/pkg/services/sqlstore/apikey.go +++ b/pkg/services/sqlstore/apikey.go @@ -56,6 +56,9 @@ func AddApiKey(cmd *models.AddApiKeyCommand) error { } if _, err := sess.Insert(&t); err != nil { + if dialect.IsUniqueConstraintViolation((err)) { + return models.ErrDuplicateApiKey + } return err } cmd.Result = &t