| 
									
										
										
										
											2019-01-05 22:44:33 +00:00
										 |  |  | package http | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"encoding/json" | 
					
						
							|  |  |  | 	"net/http" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/filebrowser/filebrowser/v2/rules" | 
					
						
							|  |  |  | 	"github.com/filebrowser/filebrowser/v2/settings" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type settingsData struct { | 
					
						
							| 
									
										
										
										
											2019-04-20 13:15:28 +00:00
										 |  |  | 	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"` | 
					
						
							| 
									
										
										
										
											2019-01-05 22:44:33 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var settingsGetHandler = withAdmin(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { | 
					
						
							|  |  |  | 	data := &settingsData{ | 
					
						
							| 
									
										
										
										
											2019-04-20 13:15:28 +00:00
										 |  |  | 		Signup:        d.settings.Signup, | 
					
						
							| 
									
										
										
										
											2019-02-15 15:12:02 +00:00
										 |  |  | 		CreateUserDir: d.settings.CreateUserDir, | 
					
						
							| 
									
										
										
										
											2019-04-20 13:15:28 +00:00
										 |  |  | 		Defaults:      d.settings.Defaults, | 
					
						
							|  |  |  | 		Rules:         d.settings.Rules, | 
					
						
							|  |  |  | 		Branding:      d.settings.Branding, | 
					
						
							|  |  |  | 		Shell:         d.settings.Shell, | 
					
						
							|  |  |  | 		Commands:      d.settings.Commands, | 
					
						
							| 
									
										
										
										
											2019-01-05 22:44:33 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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 | 
					
						
							| 
									
										
										
										
											2019-02-15 15:12:02 +00:00
										 |  |  | 	d.settings.CreateUserDir = req.CreateUserDir | 
					
						
							| 
									
										
										
										
											2019-01-05 22:44:33 +00:00
										 |  |  | 	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 | 
					
						
							|  |  |  | }) |