mirror of
https://github.com/fankes/beszel.git
synced 2025-10-19 01:39:34 +08:00
72 lines
1.7 KiB
Go
72 lines
1.7 KiB
Go
package migrations
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/pocketbase/pocketbase/core"
|
|
m "github.com/pocketbase/pocketbase/migrations"
|
|
)
|
|
|
|
const (
|
|
TempAdminEmail = "_@b.b"
|
|
)
|
|
|
|
func init() {
|
|
m.Register(func(app core.App) error {
|
|
// initial settings
|
|
settings := app.Settings()
|
|
settings.Meta.AppName = "Beszel"
|
|
settings.Meta.HideControls = true
|
|
settings.Logs.MinLevel = 4
|
|
if err := app.Save(settings); err != nil {
|
|
return err
|
|
}
|
|
|
|
// create superuser
|
|
superuserCollection, _ := app.FindCollectionByNameOrId(core.CollectionNameSuperusers)
|
|
superUser := core.NewRecord(superuserCollection)
|
|
|
|
// set email
|
|
email, _ := GetEnv("USER_EMAIL")
|
|
password, _ := GetEnv("USER_PASSWORD")
|
|
didProvideUserDetails := email != "" && password != ""
|
|
|
|
// set superuser email
|
|
if email == "" {
|
|
email = TempAdminEmail
|
|
}
|
|
superUser.SetEmail(email)
|
|
|
|
// set superuser password
|
|
if password != "" {
|
|
superUser.SetPassword(password)
|
|
} else {
|
|
superUser.SetRandomPassword()
|
|
}
|
|
|
|
// if user details are provided, we create a regular user as well
|
|
if didProvideUserDetails {
|
|
usersCollection, _ := app.FindCollectionByNameOrId("users")
|
|
user := core.NewRecord(usersCollection)
|
|
user.SetEmail(email)
|
|
user.SetPassword(password)
|
|
user.SetVerified(true)
|
|
err := app.Save(user)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return app.Save(superUser)
|
|
}, nil)
|
|
}
|
|
|
|
// GetEnv retrieves an environment variable with a "BESZEL_HUB_" prefix, or falls back to the unprefixed key.
|
|
func GetEnv(key string) (value string, exists bool) {
|
|
if value, exists = os.LookupEnv("BESZEL_HUB_" + key); exists {
|
|
return value, exists
|
|
}
|
|
// Fallback to the old unprefixed key
|
|
return os.LookupEnv(key)
|
|
}
|