module_users_act_modify.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. var lastID int64 = 0
  50. if err := wrap.DB.Transaction(func(tx *wrapper.Tx) error {
  51. res, err := tx.Exec(
  52. `INSERT INTO users SET
  53. first_name = ?,
  54. last_name = ?,
  55. email = ?,
  56. password = MD5(?),
  57. admin = ?,
  58. active = ?
  59. ;`,
  60. pf_first_name,
  61. pf_last_name,
  62. pf_email,
  63. pf_password,
  64. pf_admin,
  65. utils.StrToInt(pf_active),
  66. )
  67. if err != nil {
  68. return err
  69. }
  70. // Get inserted post id
  71. lastID, err = res.LastInsertId()
  72. if err != nil {
  73. return err
  74. }
  75. return nil
  76. }); err != nil {
  77. wrap.MsgError(err.Error())
  78. return
  79. }
  80. wrap.ResetCacheBlocks()
  81. wrap.Write(`window.location='/cp/users/modify/` + utils.Int64ToStr(lastID) + `/';`)
  82. } else {
  83. // Update user
  84. if pf_password == "" {
  85. if err := wrap.DB.Transaction(func(tx *wrapper.Tx) error {
  86. _, err := tx.Exec(
  87. `UPDATE users SET
  88. first_name = ?,
  89. last_name = ?,
  90. email = ?,
  91. admin = ?,
  92. active = ?
  93. WHERE
  94. id = ?
  95. ;`,
  96. pf_first_name,
  97. pf_last_name,
  98. pf_email,
  99. pf_admin,
  100. utils.StrToInt(pf_active),
  101. utils.StrToInt(pf_id),
  102. )
  103. if err != nil {
  104. return err
  105. }
  106. return nil
  107. }); err != nil {
  108. wrap.MsgError(err.Error())
  109. return
  110. }
  111. } else {
  112. if err := wrap.DB.Transaction(func(tx *wrapper.Tx) error {
  113. _, err := tx.Exec(
  114. `UPDATE users SET
  115. first_name = ?,
  116. last_name = ?,
  117. email = ?,
  118. password = MD5(?)
  119. WHERE
  120. id = ?
  121. ;`,
  122. pf_first_name,
  123. pf_last_name,
  124. pf_email,
  125. pf_password,
  126. utils.StrToInt(pf_id),
  127. )
  128. if err != nil {
  129. return err
  130. }
  131. return nil
  132. }); err != nil {
  133. wrap.MsgError(err.Error())
  134. return
  135. }
  136. }
  137. wrap.ResetCacheBlocks()
  138. wrap.Write(`window.location='/cp/users/modify/` + pf_id + `/';`)
  139. }
  140. })
  141. }