diff --git a/http/auth.go b/http/auth.go index 53fb73c3..b57f6167 100644 --- a/http/auth.go +++ b/http/auth.go @@ -118,6 +118,7 @@ var loginHandler = func(w http.ResponseWriter, r *http.Request, d *data) (int, e type signupBody struct { Username string `json:"username"` Password string `json:"password"` + InvitationCode string `json:"invitationCode"` } var signupHandler = func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { @@ -139,6 +140,12 @@ var signupHandler = func(w http.ResponseWriter, r *http.Request, d *data) (int, return http.StatusBadRequest, nil } + if d.UseInvitationCode { + if d.InvitationCode!=info.InvitationCode{ + return http.StatusUnauthorized, nil + } + } + user := &users.User{ Username: info.Username, } diff --git a/http/settings.go b/http/settings.go index 0148b383..7e834ba5 100644 --- a/http/settings.go +++ b/http/settings.go @@ -9,24 +9,28 @@ import ( ) 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"` + Signup bool `json:"signup"` + CreateUserDir bool `json:"createUserDir"` + UseInvitationCode bool `json:"useInvitationCode"` + InvitationCode string `json:"invitationCode"` + 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, + Signup: d.settings.Signup, + CreateUserDir: d.settings.CreateUserDir, + UseInvitationCode: d.settings.UseInvitationCode, + InvitationCode: d.settings.InvitationCode, + 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) @@ -41,6 +45,8 @@ var settingsPutHandler = withAdmin(func(w http.ResponseWriter, r *http.Request, d.settings.Signup = req.Signup d.settings.CreateUserDir = req.CreateUserDir + d.settings.UseInvitationCode = req.UseInvitationCode + d.settings.InvitationCode = req.InvitationCode d.settings.Defaults = req.Defaults d.settings.Rules = req.Rules d.settings.Branding = req.Branding