add personal address
This commit is contained in:
1 parent
50d1ba630e
commit
d2a153536f
17 files changed
+239
-50
No files matched your search
@@ -17,6 +17,10 @@ func NewUserGroup(prefix string, e *echo.Group, service *user.Service, middlewar
|
||||
auth := e.Group(prefix, middlewares...)
|
||||
auth.GET("/me", userHandler.Me)
|
||||
auth.PUT("/:id", userHandler.Update)
|
||||
auth.GET("/:id/address", userHandler.Addresses)
|
||||
auth.POST("/:id/address", userHandler.CreateAddress)
|
||||
auth.PUT("/:id/address", userHandler.UpdateAddress)
|
||||
auth.DELETE("/:id/address/:address", userHandler.DeleteAddress)
|
||||
return auth
|
||||
}
|
||||
|
||||
@@ -43,15 +47,86 @@ func (h UserHandler) Update(c *echo.Context) error {
|
||||
}
|
||||
updUser.ID = id
|
||||
|
||||
isAdmin := false // TODO : check if caller is admin
|
||||
if !(isAdmin || userID == id) {
|
||||
if !(userID == id) {
|
||||
return echo.NewHTTPError(http.StatusForbidden, "unauthorized to update user")
|
||||
}
|
||||
|
||||
user, err := h.userService.UpdateUser(&updUser, isAdmin)
|
||||
user, err := h.userService.UpdateUser(&updUser, false)
|
||||
if err != nil {
|
||||
return c.String(http.StatusBadRequest, err.Error())
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, user)
|
||||
}
|
||||
|
||||
func (h UserHandler) Addresses(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
id := c.Param("id")
|
||||
if !(userID == id) {
|
||||
return echo.NewHTTPError(http.StatusForbidden, "forbidden")
|
||||
}
|
||||
addresses, err := h.userService.ListAdresses(userID)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusInternalServerError, err.Error())
|
||||
}
|
||||
return c.JSON(http.StatusOK, addresses)
|
||||
}
|
||||
|
||||
func (h UserHandler) CreateAddress(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
id := c.Param("id")
|
||||
if !(userID == id) {
|
||||
return echo.NewHTTPError(http.StatusForbidden, "forbidden")
|
||||
}
|
||||
|
||||
var address domain.UserAddress
|
||||
if err := c.Bind(&address); err != nil {
|
||||
return c.String(http.StatusBadRequest, "bad request")
|
||||
}
|
||||
address.UserID = userID
|
||||
|
||||
newaddress, err := h.userService.AddAddress(userID, address.Type, address.Address)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusInternalServerError, "internal error")
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, newaddress)
|
||||
|
||||
}
|
||||
|
||||
func (h UserHandler) UpdateAddress(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
id := c.Param("id")
|
||||
if !(userID == id) {
|
||||
return echo.NewHTTPError(http.StatusForbidden, "forbidden")
|
||||
}
|
||||
|
||||
var address domain.UserAddress
|
||||
if err := c.Bind(&address); err != nil {
|
||||
return c.String(http.StatusBadRequest, "bad request")
|
||||
}
|
||||
address.UserID = userID
|
||||
|
||||
newaddress, err := h.userService.UpdateAddress(userID, &address)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusInternalServerError, "internal error")
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, newaddress)
|
||||
}
|
||||
|
||||
func (h UserHandler) DeleteAddress(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
id := c.Param("id")
|
||||
addressID := c.Param("address")
|
||||
if !(userID == id) {
|
||||
return echo.NewHTTPError(http.StatusForbidden, "forbidden")
|
||||
}
|
||||
|
||||
err := h.userService.DeleteAddress(userID, addressID)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusInternalServerError, "internal error")
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, "deleted")
|
||||
}
|
||||
Reference in new issue
Block a user