Initialize user settings with defaults if not set
(e *core.RecordEvent)
| 31 | |
| 32 | // Initialize user settings with defaults if not set |
| 33 | func (um *UserManager) InitializeUserSettings(e *core.RecordEvent) error { |
| 34 | record := e.Record |
| 35 | // intialize settings with defaults (zero values can be ignored) |
| 36 | settings := struct { |
| 37 | ChartTime string `json:"chartTime"` |
| 38 | Emails []string `json:"emails"` |
| 39 | }{ |
| 40 | ChartTime: "1h", |
| 41 | } |
| 42 | record.UnmarshalJSONField("settings", &settings) |
| 43 | // get user email from auth record |
| 44 | var user struct { |
| 45 | Email string `db:"email"` |
| 46 | } |
| 47 | err := e.App.DB().NewQuery("SELECT email FROM users WHERE id = {:id}").Bind(dbx.Params{ |
| 48 | "id": record.GetString("user"), |
| 49 | }).One(&user) |
| 50 | if err != nil { |
| 51 | log.Println("failed to get user email", "err", err) |
| 52 | return err |
| 53 | } |
| 54 | settings.Emails = []string{user.Email} |
| 55 | record.Set("settings", settings) |
| 56 | return e.Next() |
| 57 | } |
| 58 | |
| 59 | // Custom API endpoint to create the first user. |
| 60 | // Mimics previous default behavior in PocketBase < 0.23.0 allowing user to be created through the Beszel UI. |