1
0

Add name field to users

This commit is contained in:
kolaente
2020-11-21 21:51:55 +01:00
parent 2b5c9ae7a8
commit d1c65935e6
12 changed files with 340 additions and 34 deletions

View File

@ -99,7 +99,12 @@ func RenewToken(c echo.Context) (err error) {
return c.JSON(http.StatusOK, auth.Token{Token: t})
}
user, err := user2.GetUserFromClaims(claims)
u, err := user2.GetUserFromClaims(claims)
if err != nil {
return handler.HandleHTTPError(err, c)
}
user, err := user2.GetUserWithEmail(&user2.User{ID: u.ID})
if err != nil {
return handler.HandleHTTPError(err, c)
}

View File

@ -27,9 +27,16 @@ import (
// UserAvatarProvider holds the user avatar provider type
type UserAvatarProvider struct {
// The avatar provider. Valid types are `gravatar` (uses the user email), `upload`, `initials`, `default`.
AvatarProvider string `json:"avatar_provider"`
}
// UserName holds the user's name
type UserName struct {
// The new name of the current user.
Name string `json:"name"`
}
// GetUserAvatarProvider returns the currently set user avatar
// @Summary Return user avatar setting
// @Description Returns the current user's avatar setting.
@ -65,7 +72,7 @@ func GetUserAvatarProvider(c echo.Context) error {
// @Produce json
// @Security JWTKeyAuth
// @Param avatar body UserAvatarProvider true "The user's avatar setting"
// @Success 200 {object} UserAvatarProvider
// @Success 200 {object} models.Message
// @Failure 400 {object} web.HTTPError "Something's invalid."
// @Failure 500 {object} models.Message "Internal server error."
// @Router /user/settings/avatar [post]
@ -96,3 +103,42 @@ func ChangeUserAvatarProvider(c echo.Context) error {
return c.JSON(http.StatusOK, &models.Message{Message: "Avatar was changed successfully."})
}
// ChangeUserName is the handler to change the name of the current user
// @Summary Change the current user's name
// @Description Changes the current user's name. It is also possible to reset the name.
// @tags user
// @Accept json
// @Produce json
// @Security JWTKeyAuth
// @Param avatar body UserName true "The updated user name"
// @Success 200 {object} models.Message
// @Failure 400 {object} web.HTTPError "Something's invalid."
// @Failure 500 {object} models.Message "Internal server error."
// @Router /user/settings/name [post]
func UpdateUserName(c echo.Context) error {
un := &UserName{}
err := c.Bind(un)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, "Bad user name provided.")
}
u, err := user2.GetCurrentUser(c)
if err != nil {
return handler.HandleHTTPError(err, c)
}
user, err := user2.GetUserWithEmail(u)
if err != nil {
return handler.HandleHTTPError(err, c)
}
user.Name = un.Name
_, err = user2.UpdateUser(user)
if err != nil {
return handler.HandleHTTPError(err, c)
}
return c.JSON(http.StatusOK, &models.Message{Message: "Name was changed successfully."})
}