module_users_act_modify.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package modules
  2. import (
  3. "golang-fave/engine/wrapper"
  4. "golang-fave/utils"
  5. )
  6. func (this *Modules) RegisterAction_UsersModify() *Action {
  7. return this.newAction(AInfo{
  8. WantDB: true,
  9. Mount: "users-modify",
  10. WantAdmin: true,
  11. }, func(wrap *wrapper.Wrapper) {
  12. pf_id := wrap.R.FormValue("id")
  13. pf_first_name := wrap.R.FormValue("first_name")
  14. pf_last_name := wrap.R.FormValue("last_name")
  15. pf_email := wrap.R.FormValue("email")
  16. pf_password := wrap.R.FormValue("password")
  17. pf_admin := wrap.R.FormValue("admin")
  18. pf_active := wrap.R.FormValue("active")
  19. if pf_admin == "" {
  20. pf_admin = "0"
  21. }
  22. if pf_active == "" {
  23. pf_active = "0"
  24. }
  25. if !utils.IsNumeric(pf_id) {
  26. wrap.MsgError(`Inner system error`)
  27. return
  28. }
  29. if pf_email == "" {
  30. wrap.MsgError(`Please specify user email`)
  31. return
  32. }
  33. if !utils.IsValidEmail(pf_email) {
  34. wrap.MsgError(`Please specify correct user email`)
  35. return
  36. }
  37. // First user always super admin
  38. // Rewrite active and admin status
  39. if pf_id == "1" {
  40. pf_admin = "1"
  41. pf_active = "1"
  42. }
  43. if pf_id == "0" {
  44. // Add new user
  45. if pf_password == "" {
  46. wrap.MsgError(`Please specify user password`)
  47. return
  48. }
  49. _, err := wrap.DB.Exec(
  50. `INSERT INTO users SET
  51. first_name = ?,
  52. last_name = ?,
  53. email = ?,
  54. password = MD5(?),
  55. admin = ?,
  56. active = ?
  57. ;`,
  58. pf_first_name,
  59. pf_last_name,
  60. pf_email,
  61. pf_password,
  62. pf_admin,
  63. pf_active,
  64. )
  65. if err != nil {
  66. wrap.MsgError(err.Error())
  67. return
  68. }
  69. wrap.Write(`window.location='/cp/users/';`)
  70. } else {
  71. // Update user
  72. if pf_password == "" {
  73. _, err := wrap.DB.Exec(
  74. `UPDATE users SET
  75. first_name = ?,
  76. last_name = ?,
  77. email = ?,
  78. admin = ?,
  79. active = ?
  80. WHERE
  81. id = ?
  82. ;`,
  83. pf_first_name,
  84. pf_last_name,
  85. pf_email,
  86. pf_admin,
  87. pf_active,
  88. utils.StrToInt(pf_id),
  89. )
  90. if err != nil {
  91. wrap.MsgError(err.Error())
  92. return
  93. }
  94. } else {
  95. _, err := wrap.DB.Exec(
  96. `UPDATE users SET
  97. first_name = ?,
  98. last_name = ?,
  99. email = ?,
  100. password = MD5(?)
  101. WHERE
  102. id = ?
  103. ;`,
  104. pf_first_name,
  105. pf_last_name,
  106. pf_email,
  107. pf_password,
  108. utils.StrToInt(pf_id),
  109. )
  110. if err != nil {
  111. wrap.MsgError(err.Error())
  112. return
  113. }
  114. }
  115. wrap.Write(`window.location='/cp/users/modify/` + pf_id + `/';`)
  116. }
  117. })
  118. }