diff --git a/beszel/internal/users/users.go b/beszel/internal/users/users.go index 7f03736..c2cfacb 100644 --- a/beszel/internal/users/users.go +++ b/beszel/internal/users/users.go @@ -5,7 +5,6 @@ import ( "beszel/migrations" "log" "net/http" - "strings" "github.com/pocketbase/pocketbase" "github.com/pocketbase/pocketbase/core" @@ -98,9 +97,6 @@ func (um *UserManager) CreateFirstUser(e *core.RequestEvent) error { user.SetPassword(data.Password) user.Set("role", "admin") user.Set("verified", true) - if username := strings.Split(data.Email, "@")[0]; len(username) > 2 { - user.Set("username", username) - } if err := um.app.Save(user); err != nil { return e.JSON(http.StatusInternalServerError, map[string]string{"err": err.Error()}) } diff --git a/beszel/migrations/1738624382_updated_users.go b/beszel/migrations/1738624382_updated_users.go new file mode 100644 index 0000000..ca72e14 --- /dev/null +++ b/beszel/migrations/1738624382_updated_users.go @@ -0,0 +1,98 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("_pb_users_auth_") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE UNIQUE INDEX ` + "`" + `__pb_users_auth__email_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (` + "`" + `email` + "`" + `) WHERE ` + "`" + `email` + "`" + ` != ''", + "CREATE UNIQUE INDEX ` + "`" + `__pb_users_auth__tokenKey_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (` + "`" + `tokenKey` + "`" + `)" + ] + }`), &collection); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("text4166911607") + + // update field + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "exceptDomains": null, + "hidden": false, + "id": "email3885137012", + "name": "email", + "onlyDomains": null, + "presentable": false, + "required": true, + "system": true, + "type": "email" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("_pb_users_auth_") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE UNIQUE INDEX ` + "`" + `__pb_users_auth__username_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (username COLLATE NOCASE)", + "CREATE UNIQUE INDEX ` + "`" + `__pb_users_auth__email_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (` + "`" + `email` + "`" + `) WHERE ` + "`" + `email` + "`" + ` != ''", + "CREATE UNIQUE INDEX ` + "`" + `__pb_users_auth__tokenKey_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (` + "`" + `tokenKey` + "`" + `)" + ] + }`), &collection); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(6, []byte(`{ + "autogeneratePattern": "users[0-9]{6}", + "hidden": false, + "id": "text4166911607", + "max": 150, + "min": 3, + "name": "username", + "pattern": "^[\\w][\\w\\.\\-]*$", + "presentable": false, + "primaryKey": false, + "required": true, + "system": false, + "type": "text" + }`)); err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "exceptDomains": null, + "hidden": false, + "id": "email3885137012", + "name": "email", + "onlyDomains": null, + "presentable": false, + "required": false, + "system": true, + "type": "email" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +}