user.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package api
  2. import (
  3. "errors"
  4. "github.com/0xJacky/Nginx-UI/model"
  5. "github.com/gin-gonic/gin"
  6. "github.com/spf13/cast"
  7. "golang.org/x/crypto/bcrypt"
  8. "net/http"
  9. )
  10. func GetUsers(c *gin.Context) {
  11. curd := model.NewCurd(&model.Auth{})
  12. var list []model.Auth
  13. err := curd.GetList(&list)
  14. if err != nil {
  15. ErrHandler(c, err)
  16. return
  17. }
  18. c.JSON(http.StatusOK, gin.H{
  19. "data": list,
  20. })
  21. }
  22. func GetUser(c *gin.Context) {
  23. curd := model.NewCurd(&model.Auth{})
  24. id := c.Param("id")
  25. var user model.Auth
  26. err := curd.First(&user, id)
  27. if err != nil {
  28. ErrHandler(c, err)
  29. return
  30. }
  31. c.JSON(http.StatusOK, user)
  32. }
  33. type UserJson struct {
  34. Name string `json:"name" binding:"required,max=255"`
  35. Password string `json:"password" binding:"max=255"`
  36. }
  37. func AddUser(c *gin.Context) {
  38. var json UserJson
  39. ok := BindAndValid(c, &json)
  40. if !ok {
  41. return
  42. }
  43. curd := model.NewCurd(&model.Auth{})
  44. pwd, err := bcrypt.GenerateFromPassword([]byte(json.Password), bcrypt.DefaultCost)
  45. if err != nil {
  46. ErrHandler(c, err)
  47. return
  48. }
  49. json.Password = string(pwd)
  50. user := model.Auth{
  51. Name: json.Name,
  52. Password: json.Password,
  53. }
  54. err = curd.Add(&user)
  55. if err != nil {
  56. ErrHandler(c, err)
  57. return
  58. }
  59. c.JSON(http.StatusOK, user)
  60. }
  61. func EditUser(c *gin.Context) {
  62. var json UserJson
  63. ok := BindAndValid(c, &json)
  64. if !ok {
  65. return
  66. }
  67. curd := model.NewCurd(&model.Auth{})
  68. var user, edit model.Auth
  69. err := curd.First(&user, c.Param("id"))
  70. if err != nil {
  71. ErrHandler(c, err)
  72. return
  73. }
  74. edit.Name = json.Name
  75. // 改密码加密
  76. if json.Password != "" {
  77. var pwd []byte
  78. pwd, err = bcrypt.GenerateFromPassword([]byte(json.Password), bcrypt.DefaultCost)
  79. if err != nil {
  80. ErrHandler(c, err)
  81. return
  82. }
  83. edit.Password = string(pwd)
  84. }
  85. err = curd.Edit(&user, &edit)
  86. if err != nil {
  87. ErrHandler(c, err)
  88. return
  89. }
  90. c.JSON(http.StatusOK, user)
  91. }
  92. func DeleteUser(c *gin.Context) {
  93. id := c.Param("id")
  94. if cast.ToInt(id) == 1 {
  95. ErrHandler(c, errors.New("不允许删除默认账户"))
  96. return
  97. }
  98. curd := model.NewCurd(&model.Auth{})
  99. err := curd.Delete(&model.Auth{}, "id", id)
  100. if err != nil {
  101. ErrHandler(c, err)
  102. return
  103. }
  104. c.JSON(http.StatusNoContent, gin.H{})
  105. }