diff --git a/routes/api/v1/user_add_update.go b/routes/api/v1/user_add_update.go index b48350062e..6ab74dd7e0 100644 --- a/routes/api/v1/user_add_update.go +++ b/routes/api/v1/user_add_update.go @@ -58,11 +58,11 @@ func userAddOrUpdate(c echo.Context) error { } // Check if the user exists - var exists bool + var exists = true _, err := models.GetUserByID(datUser.ID) if err != nil { if models.IsErrUserDoesNotExist(err) { - exists = true + exists = false } else { return c.JSON(http.StatusInternalServerError, models.Message{"Could not check if the user exists."}) } diff --git a/routes/api/v1/user_show.go b/routes/api/v1/user_show.go index d4a8980751..024c1de79f 100644 --- a/routes/api/v1/user_show.go +++ b/routes/api/v1/user_show.go @@ -4,29 +4,11 @@ import ( "code.vikunja.io/api/models" "github.com/labstack/echo" "net/http" - "strconv" ) -// UserShow gets all informations about a user +// UserShow gets all information about a user func UserShow(c echo.Context) error { - - // TODO: only allow users to show itself/with privacy options - - user := c.Param("id") - - if user == "" { - return c.JSON(http.StatusBadRequest, models.Message{"User ID cannot be empty."}) - } - - // Make int - userID, err := strconv.ParseInt(user, 10, 64) - if err != nil { - return c.JSON(http.StatusBadRequest, models.Message{"User ID is invalid."}) - } - - // Get User Infos - userInfos, err := models.GetUserByID(userID) - + userInfos, err := models.GetCurrentUser(c) if err != nil { if models.IsErrUserDoesNotExist(err) { return c.JSON(http.StatusNotFound, models.Message{"The user does not exist."}) @@ -34,8 +16,15 @@ func UserShow(c echo.Context) error { return c.JSON(http.StatusInternalServerError, models.Message{"Error getting user infos."}) } - // Obfucate his password - userInfos.Password = "" + user, err := models.GetUserByID(userInfos.ID) + if err != nil { + if models.IsErrUserDoesNotExist(err) { + return c.JSON(http.StatusNotFound, models.Message{"The user does not exist."}) + } + return c.JSON(http.StatusInternalServerError, models.Message{"Error getting user infos."}) + } + // Obfuscate his password + user.Password = "" - return c.JSON(http.StatusOK, userInfos) + return c.JSON(http.StatusOK, user) } diff --git a/routes/routes.go b/routes/routes.go index c7c237aa57..3fa4e9a584 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -139,4 +139,6 @@ func RegisterRoutes(e *echo.Echo) { } a.PUT("/teams/:team/members", teamMemberHandler.CreateWeb) a.DELETE("/teams/:team/members/:user", teamMemberHandler.DeleteWeb) + + a.GET("/user", apiv1.UserShow) }