From f004899f2f4cac632f14761824e83e0c4899380e Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Fri, 18 Dec 2020 23:30:58 +0100 Subject: [PATCH] Save settings on user registration --- api/users.go | 36 ++++++++++++++++++++++-------------- model/usersettings.go | 18 ++++++++++++++++-- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/api/users.go b/api/users.go index 3719bed..138e035 100644 --- a/api/users.go +++ b/api/users.go @@ -67,9 +67,11 @@ func init() { } type UploadedUser struct { - Kind string - Email string - Password string + Kind string + Email string + Password string + Language string `json:"lang,omitempty"` + Newsletter bool `json:"wantReceiveUpdate,omitempty"` } func genUsername(user *happydns.User) (toName string) { @@ -163,18 +165,24 @@ func registerUser(opts *config.Options, p httprouter.Params, body io.Reader) Res return APIErrorResponse{ err: err, } - } else if err := storage.MainStore.CreateUser(user); err != nil { - return APIErrorResponse{ - err: err, - } - } else if SendValidationLink(opts, user); err != nil { - return APIErrorResponse{ - err: err, - } } else { - log.Printf("New user registerd: %s", user.Email) - return APIResponse{ - response: user, + user.Settings = *happydns.DefaultUserSettings() + user.Settings.Language = uu.Language + user.Settings.Newsletter = uu.Newsletter + + if err := storage.MainStore.CreateUser(user); err != nil { + return APIErrorResponse{ + err: err, + } + } else if SendValidationLink(opts, user); err != nil { + return APIErrorResponse{ + err: err, + } + } else { + log.Printf("New user registerd: %s", user.Email) + return APIResponse{ + response: user, + } } } } diff --git a/model/usersettings.go b/model/usersettings.go index 423fe8f..b4f1bab 100644 --- a/model/usersettings.go +++ b/model/usersettings.go @@ -35,6 +35,20 @@ import () // UserSettings represents the settings for an account. type UserSettings struct { - Language string `json:"language,omitempty"` - FieldHint int `json:"fieldhint"` + // Language saves the locale defined by the user. + Language string `json:"language,omitempty"` + + // Newsletter indicates wether the user wants to receive the newsletter or not. + Newsletter bool `json:"newsletter,omitempty"` + + // FieldHint stores the way form hints are displayed. + FieldHint int `json:"fieldhint"` +} + +func DefaultUserSettings() *UserSettings { + return &UserSettings{ + Language: "en", + Newsletter: false, + FieldHint: 2, + } }