From 1f4accc93d6b7209b483eee76d4d04030d9ebc17 Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Mon, 17 Sep 2018 14:18:18 +0200 Subject: [PATCH 1/2] Add /user endpoint to retrieve information about current user Fix bug in /register Signed-off-by: Jonas Franz --- routes/api/v1/user_add_update.go | 4 ++-- routes/api/v1/user_show.go | 23 +++-------------------- routes/routes.go | 2 ++ 3 files changed, 7 insertions(+), 22 deletions(-) diff --git a/routes/api/v1/user_add_update.go b/routes/api/v1/user_add_update.go index b48350062..6ab74dd7e 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 d4a898075..51382ea1a 100644 --- a/routes/api/v1/user_show.go +++ b/routes/api/v1/user_show.go @@ -4,28 +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) { @@ -34,7 +17,7 @@ func UserShow(c echo.Context) error { return c.JSON(http.StatusInternalServerError, models.Message{"Error getting user infos."}) } - // Obfucate his password + // Obfuscate his password userInfos.Password = "" return c.JSON(http.StatusOK, userInfos) diff --git a/routes/routes.go b/routes/routes.go index c7c237aa5..3fa4e9a58 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) } -- 2.45.1 From 520f1202f51c12c235ebab5f0a855e278725e11b Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Mon, 17 Sep 2018 14:33:42 +0200 Subject: [PATCH 2/2] Fetch information from database Signed-off-by: Jonas Franz --- routes/api/v1/user_show.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/routes/api/v1/user_show.go b/routes/api/v1/user_show.go index 51382ea1a..024c1de79 100644 --- a/routes/api/v1/user_show.go +++ b/routes/api/v1/user_show.go @@ -9,7 +9,6 @@ import ( // UserShow gets all information about a user func UserShow(c echo.Context) error { userInfos, err := models.GetCurrentUser(c) - if err != nil { if models.IsErrUserDoesNotExist(err) { return c.JSON(http.StatusNotFound, models.Message{"The user does not exist."}) @@ -17,8 +16,15 @@ func UserShow(c echo.Context) error { return c.JSON(http.StatusInternalServerError, models.Message{"Error getting user infos."}) } + 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 - userInfos.Password = "" + user.Password = "" - return c.JSON(http.StatusOK, userInfos) + return c.JSON(http.StatusOK, user) } -- 2.45.1