diff --git a/hub/main.go b/hub/main.go index d65a966..b048797 100644 --- a/hub/main.go +++ b/hub/main.go @@ -152,6 +152,15 @@ func main() { return nil }) + // user creation - set default role to user if unset + app.OnModelBeforeCreate("users").Add(func(e *core.ModelEvent) error { + user := e.Model.(*models.Record) + if user.Get("role") == "" { + user.Set("role", "user") + } + return nil + }) + // immediately create connection for new servers app.OnModelAfterCreate("systems").Add(func(e *core.ModelEvent) error { go updateSystem(e.Model.(*models.Record)) diff --git a/hub/migrations/1722180627_updated_users.go b/hub/migrations/1722180627_updated_users.go new file mode 100644 index 0000000..e1d5176 --- /dev/null +++ b/hub/migrations/1722180627_updated_users.go @@ -0,0 +1,78 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/daos" + m "github.com/pocketbase/pocketbase/migrations" + "github.com/pocketbase/pocketbase/models/schema" +) + +func init() { + m.Register(func(db dbx.Builder) error { + dao := daos.New(db); + + collection, err := dao.FindCollectionByNameOrId("_pb_users_auth_") + if err != nil { + return err + } + + // update + edit_role := &schema.SchemaField{} + if err := json.Unmarshal([]byte(`{ + "system": false, + "id": "qkbp58ae", + "name": "role", + "type": "select", + "required": false, + "presentable": false, + "unique": false, + "options": { + "maxSelect": 1, + "values": [ + "user", + "admin", + "readonly" + ] + } + }`), edit_role); err != nil { + return err + } + collection.Schema.AddField(edit_role) + + return dao.SaveCollection(collection) + }, func(db dbx.Builder) error { + dao := daos.New(db); + + collection, err := dao.FindCollectionByNameOrId("_pb_users_auth_") + if err != nil { + return err + } + + // update + edit_role := &schema.SchemaField{} + if err := json.Unmarshal([]byte(`{ + "system": false, + "id": "qkbp58ae", + "name": "role", + "type": "select", + "required": true, + "presentable": false, + "unique": false, + "options": { + "maxSelect": 1, + "values": [ + "user", + "admin", + "readonly" + ] + } + }`), edit_role); err != nil { + return err + } + collection.Schema.AddField(edit_role) + + return dao.SaveCollection(collection) + }) +}