Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

65 rindas
1.3KB

  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. if ss.GetRole() != "admin" {
  39. e = u.VerifyPass(input.OldPassword)
  40. if e != nil {
  41. log.Error("wrong old password ", id, e.Error())
  42. apiV1Client403Error(w, r, ss)
  43. return
  44. }
  45. }
  46. u.SetPass(input.NewPass)
  47. e = u.Write()
  48. if e != nil {
  49. log.Error("fail to update new pass ", id, e.Error())
  50. apiV1Server500Error(w, r)
  51. return
  52. }
  53. apiV1SendJson(true, w, r, ss)
  54. }