package data import ( "os" "github.com/alist-org/alist/v3/cmd/flags" "github.com/alist-org/alist/v3/internal/db" "github.com/alist-org/alist/v3/internal/model" "github.com/alist-org/alist/v3/internal/op" "github.com/alist-org/alist/v3/pkg/utils" "github.com/alist-org/alist/v3/pkg/utils/random" "github.com/pkg/errors" "gorm.io/gorm" ) func initUser() { admin, err := op.GetAdmin() adminPassword := random.String(8) envpass := os.Getenv("ALIST_ADMIN_PASSWORD") if flags.Dev { adminPassword = "admin" } else if len(envpass) > 0 { adminPassword = envpass } if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { salt := random.String(16) admin = &model.User{ Username: "admin", Salt: salt, PwdHash: model.TwoHashPwd(adminPassword, salt), Role: model.ADMIN, BasePath: "/", } if err := op.CreateUser(admin); err != nil { panic(err) } else { utils.Log.Infof("Successfully created the admin user and the initial password is: %s", adminPassword) } } else { utils.Log.Fatalf("[init user] Failed to get admin user: %v", err) } } guest, err := op.GetGuest() if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { salt := random.String(16) guest = &model.User{ Username: "guest", PwdHash: model.TwoHashPwd("guest", salt), Role: model.GUEST, BasePath: "/", Permission: 0, Disabled: true, } if err := db.CreateUser(guest); err != nil { utils.Log.Fatalf("[init user] Failed to create guest user: %v", err) } } else { utils.Log.Fatalf("[init user] Failed to get guest user: %v", err) } } hashPwdForOldVersion() } func hashPwdForOldVersion() { users, _, err := op.GetUsers(1, -1) if err != nil { utils.Log.Fatalf("[hash pwd for old version] failed get users: %v", err) } for i := range users { user := users[i] if user.PwdHash == "" { user.SetPassword(user.Password) user.Password = "" if err := db.UpdateUser(&user); err != nil { utils.Log.Fatalf("[hash pwd for old version] failed update user: %v", err) } } } }