mirror of
https://github.com/filebrowser/filebrowser.git
synced 2025-05-08 19:22:57 +00:00

Former-commit-id: dcc6bd82b3d3a89637a1032aad1a25d0b1f80046 [formerly 8784cd37bf58e81cdbe1bcec00e6f16b58efc915] [formerly 9e25850e063ae0825de337d5d5f29cee601b9040 [formerly 8b1d36dfb9ebfa001ddeef98034bb5a73d135c94]] Former-commit-id: 04a38bea2d141093570d9289d0d0a056a136fe8a [formerly 5995538504889e698aa6cd35b7da40c38b5d5ddf] Former-commit-id: 8c81a0b060167e1a2983a99bc87b380838ac07dc
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package filemanager
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"net/http"
|
|
)
|
|
|
|
func commandsHandler(c *RequestContext, w http.ResponseWriter, r *http.Request) (int, error) {
|
|
switch r.Method {
|
|
case http.MethodGet:
|
|
return commandsGetHandler(c, w, r)
|
|
case http.MethodPut:
|
|
return commandsPutHandler(c, w, r)
|
|
}
|
|
|
|
return http.StatusMethodNotAllowed, nil
|
|
}
|
|
|
|
func commandsGetHandler(c *RequestContext, w http.ResponseWriter, r *http.Request) (int, error) {
|
|
if !c.User.Admin {
|
|
return http.StatusForbidden, nil
|
|
}
|
|
|
|
return renderJSON(w, c.FM.Commands)
|
|
}
|
|
|
|
func commandsPutHandler(c *RequestContext, w http.ResponseWriter, r *http.Request) (int, error) {
|
|
if !c.User.Admin {
|
|
return http.StatusForbidden, nil
|
|
}
|
|
|
|
if r.Body == nil {
|
|
return http.StatusBadGateway, errors.New("Empty request body")
|
|
}
|
|
|
|
var commands map[string][]string
|
|
|
|
// Parses the user and checks for error.
|
|
err := json.NewDecoder(r.Body).Decode(&commands)
|
|
if err != nil {
|
|
return http.StatusBadRequest, errors.New("Invalid JSON")
|
|
}
|
|
|
|
if err := c.FM.db.Set("config", "commands", commands); err != nil {
|
|
return http.StatusInternalServerError, err
|
|
}
|
|
|
|
c.FM.Commands = commands
|
|
return http.StatusOK, nil
|
|
}
|