2023-12-05 13:48:13 +01:00
|
|
|
package main
|
|
|
|
|
2023-12-06 11:00:38 +01:00
|
|
|
// type User struct {
|
|
|
|
// Dbid string `json:"dbid"`
|
|
|
|
// Id string `json:"id"`
|
|
|
|
// Username string `json:"username"`
|
|
|
|
// Password string `json:"password"`
|
|
|
|
// Email string `json:"email"`
|
|
|
|
// Group string `json:"group"`
|
|
|
|
// Enabled bool `json:"enabled"`
|
|
|
|
// }
|
2023-12-05 13:48:13 +01:00
|
|
|
|
|
|
|
///////////////// Users
|
|
|
|
|
|
|
|
// func (w *Webapp) GetUsers(c *gin.Context) {
|
|
|
|
// var cursor uint64
|
|
|
|
|
|
|
|
// var users []string
|
|
|
|
|
|
|
|
// cursor = 0
|
|
|
|
// log.Printf("start scanning %+v", c.ClientIP())
|
|
|
|
// for {
|
|
|
|
// var keys []string
|
|
|
|
// var err error
|
|
|
|
// keys, cursor, err = w.DB.Redis.Scan(w.DB.Ctx, cursor, "user:*", 10).Result()
|
|
|
|
// if err != nil {
|
|
|
|
// panic(err)
|
|
|
|
// }
|
|
|
|
|
|
|
|
// log.Printf("scan: %+v", keys)
|
|
|
|
|
|
|
|
// users = append(users, keys...)
|
|
|
|
|
|
|
|
// if cursor == 0 {
|
|
|
|
// break
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
// var retval []User
|
|
|
|
|
|
|
|
// for u := range users {
|
|
|
|
// usr := User{}
|
|
|
|
// hmget := w.DB.Redis.HMGet(w.DB.Ctx, users[u], "username", "email", "group", "enabled")
|
|
|
|
// hmget.Scan(&usr)
|
|
|
|
|
|
|
|
// log.Printf("user: %+v", usr)
|
|
|
|
// retval = append(retval, usr)
|
|
|
|
// }
|
|
|
|
|
|
|
|
// slices.SortFunc(retval,
|
|
|
|
// func(a, b User) int {
|
|
|
|
// return cmp.Compare(a.Username, b.Username)
|
|
|
|
// })
|
|
|
|
|
|
|
|
// c.JSON(http.StatusOK, retval)
|
|
|
|
// }
|
|
|
|
|
|
|
|
// func (w *Webapp) UpdateUser(c *gin.Context) {
|
|
|
|
// var user User
|
|
|
|
|
|
|
|
// if err := c.ShouldBind(&user); err != nil {
|
|
|
|
// log.Printf("req error: %+v", err)
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
|
|
|
|
// user.Dbid = CalcId(user.Username, 8)
|
|
|
|
|
|
|
|
// ret := w.DB.Redis.HExists(w.DB.Ctx, "user:"+user.Dbid, "username").Val()
|
|
|
|
// if !ret {
|
|
|
|
// log.Printf("Exists: %+v", ret)
|
|
|
|
// err := w.DB.Redis.HSet(w.DB.Ctx, "user:"+user.Dbid, user).Err()
|
|
|
|
// if err != nil {
|
|
|
|
// log.Printf("set error: %+v", err)
|
|
|
|
// }
|
|
|
|
// } else {
|
|
|
|
// err := w.DB.Redis.HSet(w.DB.Ctx, "user:"+user.Dbid, "email", user.Email, "group", user.Group, "enabled", user.Enabled).Err()
|
|
|
|
// if err != nil {
|
|
|
|
// log.Printf("set error: %+v", err)
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
// log.Printf("new: %+v", user)
|
|
|
|
|
|
|
|
// c.JSON(http.StatusOK, gin.H{"status": "added"})
|
|
|
|
// }
|
|
|
|
|
|
|
|
// // func UpdateUser(c *gin.Context) {
|
|
|
|
// // var user common.User
|
|
|
|
|
|
|
|
// // if err := c.ShouldBind(&user); err != nil {
|
|
|
|
// // c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
|
|
// // return
|
|
|
|
// // }
|
|
|
|
|
|
|
|
// // id := common.Id(user.Username, 8)
|
|
|
|
|
|
|
|
// // if err := db.Db.Redis.HSet(db.Db.Ctx, "user:"+id, "email", user.Email, "group", user.Group, "enabled", user.Enabled).Err(); err != nil {
|
|
|
|
// // log.Fatalf("set error: %+v", err)
|
|
|
|
// // }
|
|
|
|
|
|
|
|
// // log.Printf("update: %+v", user)
|
|
|
|
|
|
|
|
// // c.JSON(http.StatusOK, gin.H{"status": "updated"})
|
|
|
|
// // }
|
|
|
|
|
|
|
|
// func (w *Webapp) DeleteUser(c *gin.Context) {
|
|
|
|
// var user User
|
|
|
|
|
|
|
|
// if err := c.ShouldBind(&user); err != nil {
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
|
|
|
|
// id := CalcId(user.Username, 8)
|
|
|
|
|
|
|
|
// log.Printf("deleting: %+v", "user:"+id)
|
|
|
|
|
|
|
|
// res, err := w.DB.Redis.HGetAll(w.DB.Ctx, "user:"+id).Result()
|
|
|
|
// if err != nil || len(res) == 0 {
|
|
|
|
// log.Printf("del error: %+v", err)
|
|
|
|
// c.JSON(http.StatusNotFound, gin.H{"status": "Not Found"})
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
|
|
|
|
// log.Printf("found: %+v", res)
|
|
|
|
|
|
|
|
// if err := w.DB.Redis.Del(w.DB.Ctx, "user:"+id).Err(); err != nil {
|
|
|
|
// log.Printf("del error: %+v", err)
|
|
|
|
// }
|
|
|
|
|
|
|
|
// log.Printf("del: %+v", user)
|
|
|
|
|
|
|
|
// c.JSON(http.StatusOK, gin.H{"status": "deleted"})
|
|
|
|
// }
|