package admin import ( "encoding/json" "fmt" "net/http" "gitlab.quimbo.fr/odwrtw/canape/backend/config" "gitlab.quimbo.fr/odwrtw/canape/backend/users" "gitlab.quimbo.fr/odwrtw/canape/backend/web" "github.com/sirupsen/logrus" ) // GetUsersHandler returns the user list func GetUsersHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error { log := env.Log.WithFields(logrus.Fields{ "function": "admin.GetUsersHandler", }) log.Debug("Getting users") users, err := users.GetAll(env.Database) if err != nil { return env.RenderError(w, err) } return env.RenderJSON(w, users) } // UpdateUserHandler updates the user data func UpdateUserHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error { log := env.Log.WithFields(logrus.Fields{ "function": "admin.PostActivateUserHandler", }) var data struct { ID string `json:"userId"` Admin bool `json:"admin"` Activated bool `json:"activated"` PolochonURL string `json:"polochonUrl"` PolochonToken string `json:"polochonToken"` } if err := json.NewDecoder(r.Body).Decode(&data); err != nil { return err } if data.ID == "" { return env.RenderError(w, fmt.Errorf("Empty user id")) } user, err := users.GetByID(env.Database, data.ID) if err != nil { return err } // Update the polochon config polochonConfig := &config.UserPolochon{ URL: data.PolochonURL, Token: data.PolochonToken, } if err := user.SetConfig("polochon", polochonConfig); err != nil { return err } user.Admin = data.Admin user.Activated = data.Activated log.Debugf("updating user") // Save the user with the new configurations if err := user.Update(env.Database); err != nil { return err } return env.RenderOK(w, "user updated") }