module_users_act_modify.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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. 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.Write(`window.location='/cp/users/modify/` + utils.Int64ToStr(lastID) + `/';`)
  81. } else {
  82. // Update user
  83. if pf_password == "" {
  84. if err := wrap.DB.Transaction(func(tx *wrapper.Tx) error {
  85. _, err := tx.Exec(
  86. `UPDATE users SET
  87. first_name = ?,
  88. last_name = ?,
  89. email = ?,
  90. admin = ?,
  91. active = ?
  92. WHERE
  93. id = ?
  94. ;`,
  95. pf_first_name,
  96. pf_last_name,
  97. pf_email,
  98. pf_admin,
  99. pf_active,
  100. utils.StrToInt(pf_id),
  101. )
  102. if err != nil {
  103. return err
  104. }
  105. return nil
  106. }); err != nil {
  107. wrap.MsgError(err.Error())
  108. return
  109. }
  110. } else {
  111. if err := wrap.DB.Transaction(func(tx *wrapper.Tx) error {
  112. _, err := tx.Exec(
  113. `UPDATE users SET
  114. first_name = ?,
  115. last_name = ?,
  116. email = ?,
  117. password = MD5(?)
  118. WHERE
  119. id = ?
  120. ;`,
  121. pf_first_name,
  122. pf_last_name,
  123. pf_email,
  124. pf_password,
  125. utils.StrToInt(pf_id),
  126. )
  127. if err != nil {
  128. return err
  129. }
  130. return nil
  131. }); err != nil {
  132. wrap.MsgError(err.Error())
  133. return
  134. }
  135. }
  136. wrap.Write(`window.location='/cp/users/modify/` + pf_id + `/';`)
  137. }
  138. })
  139. }