|
@@ -1,129 +1,133 @@
|
|
package api
|
|
package api
|
|
|
|
|
|
import (
|
|
import (
|
|
- "errors"
|
|
|
|
- "github.com/0xJacky/Nginx-UI/server/model"
|
|
|
|
- "github.com/0xJacky/Nginx-UI/server/settings"
|
|
|
|
- "github.com/gin-gonic/gin"
|
|
|
|
- "github.com/spf13/cast"
|
|
|
|
- "golang.org/x/crypto/bcrypt"
|
|
|
|
- "net/http"
|
|
|
|
|
|
+ "github.com/0xJacky/Nginx-UI/server/model"
|
|
|
|
+ "github.com/0xJacky/Nginx-UI/server/settings"
|
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
|
+ "github.com/spf13/cast"
|
|
|
|
+ "golang.org/x/crypto/bcrypt"
|
|
|
|
+ "net/http"
|
|
)
|
|
)
|
|
|
|
|
|
func GetUsers(c *gin.Context) {
|
|
func GetUsers(c *gin.Context) {
|
|
- data := model.GetUserList(c, c.Query("name"))
|
|
|
|
|
|
+ data := model.GetUserList(c, c.Query("name"))
|
|
|
|
|
|
- c.JSON(http.StatusOK, data)
|
|
|
|
|
|
+ c.JSON(http.StatusOK, data)
|
|
}
|
|
}
|
|
|
|
|
|
func GetUser(c *gin.Context) {
|
|
func GetUser(c *gin.Context) {
|
|
- curd := model.NewCurd(&model.Auth{})
|
|
|
|
- id := c.Param("id")
|
|
|
|
|
|
+ curd := model.NewCurd(&model.Auth{})
|
|
|
|
+ id := c.Param("id")
|
|
|
|
|
|
- var user model.Auth
|
|
|
|
- err := curd.First(&user, id)
|
|
|
|
|
|
+ var user model.Auth
|
|
|
|
+ err := curd.First(&user, id)
|
|
|
|
|
|
- if err != nil {
|
|
|
|
- ErrHandler(c, err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- c.JSON(http.StatusOK, user)
|
|
|
|
|
|
+ if err != nil {
|
|
|
|
+ ErrHandler(c, err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ c.JSON(http.StatusOK, user)
|
|
}
|
|
}
|
|
|
|
|
|
type UserJson struct {
|
|
type UserJson struct {
|
|
- Name string `json:"name" binding:"required,max=255"`
|
|
|
|
- Password string `json:"password" binding:"max=255"`
|
|
|
|
|
|
+ Name string `json:"name" binding:"required,max=255"`
|
|
|
|
+ Password string `json:"password" binding:"max=255"`
|
|
}
|
|
}
|
|
|
|
|
|
func AddUser(c *gin.Context) {
|
|
func AddUser(c *gin.Context) {
|
|
- var json UserJson
|
|
|
|
- ok := BindAndValid(c, &json)
|
|
|
|
- if !ok {
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- curd := model.NewCurd(&model.Auth{})
|
|
|
|
-
|
|
|
|
- pwd, err := bcrypt.GenerateFromPassword([]byte(json.Password), bcrypt.DefaultCost)
|
|
|
|
- if err != nil {
|
|
|
|
- ErrHandler(c, err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- json.Password = string(pwd)
|
|
|
|
-
|
|
|
|
- user := model.Auth{
|
|
|
|
- Name: json.Name,
|
|
|
|
- Password: json.Password,
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- err = curd.Add(&user)
|
|
|
|
-
|
|
|
|
- if err != nil {
|
|
|
|
- ErrHandler(c, err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- c.JSON(http.StatusOK, user)
|
|
|
|
|
|
+ var json UserJson
|
|
|
|
+ ok := BindAndValid(c, &json)
|
|
|
|
+ if !ok {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ curd := model.NewCurd(&model.Auth{})
|
|
|
|
+
|
|
|
|
+ pwd, err := bcrypt.GenerateFromPassword([]byte(json.Password), bcrypt.DefaultCost)
|
|
|
|
+ if err != nil {
|
|
|
|
+ ErrHandler(c, err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ json.Password = string(pwd)
|
|
|
|
+
|
|
|
|
+ user := model.Auth{
|
|
|
|
+ Name: json.Name,
|
|
|
|
+ Password: json.Password,
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err = curd.Add(&user)
|
|
|
|
+
|
|
|
|
+ if err != nil {
|
|
|
|
+ ErrHandler(c, err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ c.JSON(http.StatusOK, user)
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
func EditUser(c *gin.Context) {
|
|
func EditUser(c *gin.Context) {
|
|
- userId := cast.ToInt(c.Param("id"))
|
|
|
|
-
|
|
|
|
- if settings.ServerSettings.Demo && userId == 1 {
|
|
|
|
- ErrHandler(c, errors.New("not allow to change the root password in demo"))
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- var json UserJson
|
|
|
|
- ok := BindAndValid(c, &json)
|
|
|
|
- if !ok {
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- curd := model.NewCurd(&model.Auth{})
|
|
|
|
-
|
|
|
|
- var user, edit model.Auth
|
|
|
|
-
|
|
|
|
- err := curd.First(&user, userId)
|
|
|
|
-
|
|
|
|
- if err != nil {
|
|
|
|
- ErrHandler(c, err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- edit.Name = json.Name
|
|
|
|
-
|
|
|
|
- // encrypt passowrd
|
|
|
|
- if json.Password != "" {
|
|
|
|
- var pwd []byte
|
|
|
|
- pwd, err = bcrypt.GenerateFromPassword([]byte(json.Password), bcrypt.DefaultCost)
|
|
|
|
- if err != nil {
|
|
|
|
- ErrHandler(c, err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- edit.Password = string(pwd)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- err = curd.Edit(&user, &edit)
|
|
|
|
-
|
|
|
|
- if err != nil {
|
|
|
|
- ErrHandler(c, err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- c.JSON(http.StatusOK, user)
|
|
|
|
|
|
+ userId := cast.ToInt(c.Param("id"))
|
|
|
|
+
|
|
|
|
+ if settings.ServerSettings.Demo && userId == 1 {
|
|
|
|
+ c.JSON(http.StatusNotAcceptable, gin.H{
|
|
|
|
+ "message": "Prohibit changing root password in demo",
|
|
|
|
+ })
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var json UserJson
|
|
|
|
+ ok := BindAndValid(c, &json)
|
|
|
|
+ if !ok {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ curd := model.NewCurd(&model.Auth{})
|
|
|
|
+
|
|
|
|
+ var user, edit model.Auth
|
|
|
|
+
|
|
|
|
+ err := curd.First(&user, userId)
|
|
|
|
+
|
|
|
|
+ if err != nil {
|
|
|
|
+ ErrHandler(c, err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ edit.Name = json.Name
|
|
|
|
+
|
|
|
|
+ // encrypt password
|
|
|
|
+ if json.Password != "" {
|
|
|
|
+ var pwd []byte
|
|
|
|
+ pwd, err = bcrypt.GenerateFromPassword([]byte(json.Password), bcrypt.DefaultCost)
|
|
|
|
+ if err != nil {
|
|
|
|
+ ErrHandler(c, err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ edit.Password = string(pwd)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err = curd.Edit(&user, &edit)
|
|
|
|
+
|
|
|
|
+ if err != nil {
|
|
|
|
+ ErrHandler(c, err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ c.JSON(http.StatusOK, user)
|
|
}
|
|
}
|
|
|
|
|
|
func DeleteUser(c *gin.Context) {
|
|
func DeleteUser(c *gin.Context) {
|
|
- id := c.Param("id")
|
|
|
|
-
|
|
|
|
- if cast.ToInt(id) == 1 {
|
|
|
|
- ErrHandler(c, errors.New("not allow to delete the default user"))
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- curd := model.NewCurd(&model.Auth{})
|
|
|
|
- err := curd.Delete(&model.Auth{}, "id", id)
|
|
|
|
- if err != nil {
|
|
|
|
- ErrHandler(c, err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- c.JSON(http.StatusNoContent, gin.H{})
|
|
|
|
|
|
+ id := c.Param("id")
|
|
|
|
+
|
|
|
|
+ if cast.ToInt(id) == 1 {
|
|
|
|
+ c.JSON(http.StatusNotAcceptable, gin.H{
|
|
|
|
+ "message": "Prohibit deleting the default user",
|
|
|
|
+ })
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ curd := model.NewCurd(&model.Auth{})
|
|
|
|
+ err := curd.Delete(&model.Auth{}, "id", id)
|
|
|
|
+ if err != nil {
|
|
|
|
+ ErrHandler(c, err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ c.JSON(http.StatusNoContent, gin.H{})
|
|
}
|
|
}
|