canape/backend/admins/users.go

78 lines
1.7 KiB
Go

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")
}