close more stuff

License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>
This commit is contained in:
Henrique Dias 2018-12-31 14:14:31 +00:00
parent 60c6696e10
commit 0f7f4933bb
6 changed files with 42 additions and 7 deletions

@ -1 +1 @@
Subproject commit 1bd7903569832952237a967e2f57a571294569fe
Subproject commit 44658d2a43fefebde554b4adeddfc6ae7e996373

View File

@ -5,6 +5,7 @@ import (
"log"
"net/http"
"strconv"
"sync"
"github.com/filebrowser/filebrowser/types"
"github.com/gorilla/mux"
@ -21,12 +22,13 @@ type modifyRequest struct {
Which []string `json:"which"` // Answer to: which fields?
}
// Env ...
// Env contains the required info for FB to run.
type Env struct {
Auther types.Auther
Runner *types.Runner
Settings *types.Settings
Store *types.Store
mux sync.Mutex // settings mutex for Auther, Runner and Settings changes.
}
// Handler ...

View File

@ -44,6 +44,9 @@ func (e *Env) settingsPutHandler(w http.ResponseWriter, r *http.Request) {
return
}
e.mux.Lock()
defer e.mux.Unlock()
runner := &types.Runner{Commands: req.Commands}
err = e.Store.Config.SaveRunner(runner)
if err != nil {
@ -68,7 +71,6 @@ func (e *Env) settingsPutHandler(w http.ResponseWriter, r *http.Request) {
return
}
// TODO: env locks
e.Runner = runner
e.Settings = settings
}

View File

@ -133,7 +133,41 @@ func (e *Env) userDeleteHandler(w http.ResponseWriter, r *http.Request) {
}
func (e *Env) userPostHandler(w http.ResponseWriter, r *http.Request) {
// TODO: fill me
_, ok := e.getAdminUser(w,r)
if !ok {
return
}
req, ok := getUser(w, r)
if !ok {
return
}
if len(req.Which) != 0 {
httpErr(w, r, http.StatusBadRequest, nil)
return
}
if req.Data.Password == "" {
httpErr(w, r, http.StatusBadRequest, types.ErrEmptyPassword)
return
}
var err error
req.Data.Password, err = types.HashPwd(req.Data.Password)
if err != nil {
httpErr(w, r, http.StatusInternalServerError, err)
return
}
err = e.Store.Users.Save(req.Data)
if err != nil {
httpErr(w, r, http.StatusInternalServerError, err)
return
}
w.Header().Set("Location", "/settings/users/"+strconv.FormatUint(uint64(req.Data.ID), 10))
w.WriteHeader(http.StatusCreated)
}
func (e *Env) userPutHandler(w http.ResponseWriter, r *http.Request) {

View File

@ -218,7 +218,6 @@ var (
// DetectSubtitles fills the subtitles field if the file
// is a movie.
// TODO: detect multiple languages, like FILENAME.LANG.VTT
func (f *File) DetectSubtitles() {
f.Subtitles = []string{}
ext := filepath.Ext(f.Path)

View File

@ -7,8 +7,6 @@ type Store struct {
Share ShareStore
}
// TODO: wrappers to verify
// ConfigStore is used to manage configurations relativey to a data storage.
type ConfigStore interface {
Get(name string, to interface{}) error