Add hashing for link password and update link update service method

This commit is contained in:
Andrey Chervyakov 2021-04-04 16:36:13 +06:00
parent a01f540a29
commit f4684be37d
4 changed files with 79 additions and 32 deletions

View file

@ -92,33 +92,20 @@ func updateHandler(ctx echo.Context, serv Service) error {
return echo.NewHTTPError(http.StatusBadRequest, "Invalid data format.")
}
updatingLink, err := serv.GetById(linkId)
var parsedUrl *url.URL
parsedUrl, err := url.Parse(model.RedirectURL)
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, "Invalid URL value.")
}
if err := serv.UpdateById(linkId, struct {
Name string
Password string
RedirectURL *url.URL
}{Name: model.Name, Password: model.Password, RedirectURL: parsedUrl}); err != nil {
return err
}
hasChanges := false
switch {
case model.Name != "" && model.Name != updatingLink.Name:
updatingLink.Name = model.Name
hasChanges = true
case model.RedirectURL != "" && model.RedirectURL != updatingLink.RedirectURL.String():
if parsedUrl, err := url.Parse(model.RedirectURL); err != nil {
return echo.NewHTTPError(http.StatusBadRequest, "Invalid URL value.")
} else {
updatingLink.RedirectURL = *parsedUrl
}
hasChanges = true
}
if hasChanges {
if err = serv.Update(updatingLink); err != nil {
return err
}
}
return ctx.NoContent(http.StatusOK)
}