Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

63 lines
1.2KB

  1. package main
  2. import (
  3. "biukop.com/sfm/loan"
  4. "encoding/json"
  5. log "github.com/sirupsen/logrus"
  6. "net/http"
  7. )
  8. type changePass struct {
  9. OldPassword string
  10. NewPass string
  11. NewPass1 string
  12. }
  13. func decodeJsonChangePass(r *http.Request) (ret changePass, e error) {
  14. decoder := json.NewDecoder(r.Body)
  15. //decoder.DisallowUnknownFields()
  16. e = decoder.Decode(&ret)
  17. if e != nil {
  18. log.Error("failed decoding json change password ", e.Error())
  19. return
  20. }
  21. return
  22. }
  23. func apiV1ChangePass(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  24. id := r.URL.Path[len(apiV1Prefix+"change-pass/"):]
  25. u := loan.User{}
  26. e := u.Read(id)
  27. if e != nil {
  28. log.Error("cannot change pass for user ", id, e.Error())
  29. apiV1Client403Error(w, r, ss)
  30. return
  31. }
  32. input, e := decodeJsonChangePass(r)
  33. if e != nil {
  34. log.Error("cannot decode json for change password ", id, e.Error())
  35. apiV1Client403Error(w, r, ss)
  36. return
  37. }
  38. e = u.VerifyPass(input.OldPassword)
  39. if e != nil {
  40. log.Error("wrong old password ", id, e.Error())
  41. apiV1Client403Error(w, r, ss)
  42. return
  43. }
  44. u.SetPass(input.NewPass)
  45. e = u.Write()
  46. if e != nil {
  47. log.Error("fail to update new pass ", id, e.Error())
  48. apiV1Server500Error(w, r)
  49. return
  50. }
  51. apiV1SendJson(true, w, r, ss)
  52. }