From a734f21ac23aeb45e2617f5134c2c13ab8f22194 Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 25 Jan 2018 12:15:12 +0100 Subject: [PATCH] Added custom error type when no username and password are given when creating a new user --- models/error.go | 13 +++++++++++++ models/user_add_update.go | 2 +- routes/api/v1/user_add_update.go | 5 +++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/models/error.go b/models/error.go index 5a6ff22..2d6bc79 100644 --- a/models/error.go +++ b/models/error.go @@ -37,6 +37,19 @@ func (err ErrNoUsername) Error() string { return fmt.Sprintf("you need to specify a username [user id: %d]", err.UserID) } +// ErrNoUsernamePassword represents a "UsernameAlreadyExists" kind of error. +type ErrNoUsernamePassword struct {} + +// IsErrNoUsernamePassword checks if an error is a ErrUsernameExists. +func IsErrNoUsernamePassword(err error) bool { + _, ok := err.(ErrNoUsernamePassword) + return ok +} + +func (err ErrNoUsernamePassword) Error() string { + return fmt.Sprintf("you need to specify a username and a password") +} + // ErrUserDoesNotExist represents a "UsernameAlreadyExists" kind of error. type ErrUserDoesNotExist struct { UserID int64 diff --git a/models/user_add_update.go b/models/user_add_update.go index f19b325..e07ecaa 100644 --- a/models/user_add_update.go +++ b/models/user_add_update.go @@ -12,7 +12,7 @@ func CreateUser(user User) (newUser User, err error) { // Check if we have all needed informations if newUser.Password == "" || newUser.Username == "" { - return User{}, fmt.Errorf("you need to specify at least a username and a password") + return User{}, ErrNoUsernamePassword{} } // Check if the user already existst diff --git a/routes/api/v1/user_add_update.go b/routes/api/v1/user_add_update.go index ec92a02..4992e4d 100644 --- a/routes/api/v1/user_add_update.go +++ b/routes/api/v1/user_add_update.go @@ -73,6 +73,11 @@ func UserAddOrUpdate(c echo.Context) error { return c.JSON(http.StatusBadRequest, models.Message{"Please specify a username."}) } + // Check for no username or password provided + if models.IsErrNoUsernamePassword(err) { + return c.JSON(http.StatusBadRequest, models.Message{"Please specify a username and a password."}) + } + // Check for user does not exist if models.IsErrUserDoesNotExist(err) { return c.JSON(http.StatusBadRequest, models.Message{"The user does not exist."})