53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
package http
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	"github.com/filebrowser/filebrowser/v2/rules"
 | 
						|
	"github.com/filebrowser/filebrowser/v2/settings"
 | 
						|
)
 | 
						|
 | 
						|
type settingsData struct {
 | 
						|
	Signup        bool                  `json:"signup"`
 | 
						|
	CreateUserDir bool                  `json:"createUserDir"`
 | 
						|
	Defaults      settings.UserDefaults `json:"defaults"`
 | 
						|
	Rules         []rules.Rule          `json:"rules"`
 | 
						|
	Branding      settings.Branding     `json:"branding"`
 | 
						|
	Shell         []string              `json:"shell"`
 | 
						|
	Commands      map[string][]string   `json:"commands"`
 | 
						|
}
 | 
						|
 | 
						|
var settingsGetHandler = withAdmin(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
 | 
						|
	data := &settingsData{
 | 
						|
		Signup:        d.settings.Signup,
 | 
						|
		CreateUserDir: d.settings.CreateUserDir,
 | 
						|
		Defaults:      d.settings.Defaults,
 | 
						|
		Rules:         d.settings.Rules,
 | 
						|
		Branding:      d.settings.Branding,
 | 
						|
		Shell:         d.settings.Shell,
 | 
						|
		Commands:      d.settings.Commands,
 | 
						|
	}
 | 
						|
 | 
						|
	return renderJSON(w, r, data)
 | 
						|
})
 | 
						|
 | 
						|
var settingsPutHandler = withAdmin(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
 | 
						|
	req := &settingsData{}
 | 
						|
	err := json.NewDecoder(r.Body).Decode(req)
 | 
						|
	if err != nil {
 | 
						|
		return http.StatusBadRequest, err
 | 
						|
	}
 | 
						|
 | 
						|
	d.settings.Signup = req.Signup
 | 
						|
	d.settings.CreateUserDir = req.CreateUserDir
 | 
						|
	d.settings.Defaults = req.Defaults
 | 
						|
	d.settings.Rules = req.Rules
 | 
						|
	d.settings.Branding = req.Branding
 | 
						|
	d.settings.Shell = req.Shell
 | 
						|
	d.settings.Commands = req.Commands
 | 
						|
 | 
						|
	err = d.store.Settings.Save(d.settings)
 | 
						|
	return errToStatus(err), err
 | 
						|
})
 |