mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
added user management
This commit is contained in:
@@ -20,6 +20,19 @@ type User struct {
|
||||
UpdateTs time.Time `json:"update_ts" bson:"update_ts"`
|
||||
}
|
||||
|
||||
func (user *User) Save() error {
|
||||
s, c := database.GetCol("users")
|
||||
defer s.Close()
|
||||
|
||||
user.UpdateTs = time.Now()
|
||||
|
||||
if err := c.UpdateId(user.Id, user); err != nil {
|
||||
debug.PrintStack()
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (user *User) Add() error {
|
||||
s, c := database.GetCol("users")
|
||||
defer s.Close()
|
||||
@@ -81,7 +94,7 @@ func GetUserByUsername(username string) (User, error) {
|
||||
}
|
||||
|
||||
func GetUserList(filter interface{}, skip int, limit int, sortKey string) ([]User, error) {
|
||||
s, c := database.GetCol("tasks")
|
||||
s, c := database.GetCol("users")
|
||||
defer s.Close()
|
||||
|
||||
var users []User
|
||||
@@ -103,3 +116,35 @@ func GetUserListTotal(filter interface{}) (int, error) {
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func UpdateUser(id bson.ObjectId, item User) error {
|
||||
s, c := database.GetCol("users")
|
||||
defer s.Close()
|
||||
|
||||
var result User
|
||||
if err := c.FindId(id).One(&result); err != nil {
|
||||
debug.PrintStack()
|
||||
return err
|
||||
}
|
||||
|
||||
if err := item.Save(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func RemoveUser(id bson.ObjectId) error {
|
||||
s, c := database.GetCol("users")
|
||||
defer s.Close()
|
||||
|
||||
var result User
|
||||
if err := c.FindId(id).One(&result); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := c.RemoveId(id); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -60,12 +60,17 @@ func GetUserList(c *gin.Context) {
|
||||
}
|
||||
|
||||
// 获取总用户数
|
||||
total, err := model.GetTaskListTotal(nil)
|
||||
total, err := model.GetUserListTotal(nil)
|
||||
if err != nil {
|
||||
HandleError(http.StatusInternalServerError, c, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 去除密码
|
||||
for i := range users {
|
||||
users[i].Password = ""
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, ListResponse{
|
||||
Status: "ok",
|
||||
Message: "success",
|
||||
@@ -100,9 +105,47 @@ func PutUser(c *gin.Context) {
|
||||
}
|
||||
|
||||
func PostUser(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
|
||||
if !bson.IsObjectIdHex(id) {
|
||||
HandleErrorF(http.StatusBadRequest, c, "invalid id")
|
||||
}
|
||||
|
||||
var item model.User
|
||||
if err := c.ShouldBindJSON(&item); err != nil {
|
||||
HandleError(http.StatusBadRequest, c, err)
|
||||
return
|
||||
}
|
||||
|
||||
if err := model.UpdateUser(bson.ObjectIdHex(id), item); err != nil {
|
||||
HandleError(http.StatusInternalServerError, c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, Response{
|
||||
Status: "ok",
|
||||
Message: "success",
|
||||
})
|
||||
}
|
||||
|
||||
func DeleteUser(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
|
||||
if !bson.IsObjectIdHex(id) {
|
||||
HandleErrorF(http.StatusBadRequest, c, "invalid id")
|
||||
return
|
||||
}
|
||||
|
||||
// 从数据库中删除该爬虫
|
||||
if err := model.RemoveUser(bson.ObjectIdHex(id)); err != nil {
|
||||
HandleError(http.StatusInternalServerError, c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, Response{
|
||||
Status: "ok",
|
||||
Message: "success",
|
||||
})
|
||||
}
|
||||
|
||||
func Login(c *gin.Context) {
|
||||
|
||||
Reference in New Issue
Block a user