refactor: simplify dataset initialization
This commit is contained in:
@@ -12,25 +12,34 @@ const (
|
||||
rootRole = "root"
|
||||
)
|
||||
|
||||
// InitUser creates the default root account when the user table is empty.
|
||||
func InitUser(database *gorm.DB) error {
|
||||
// InitUser returns the existing root user or creates and returns it when the user table is empty.
|
||||
func InitUser(database *gorm.DB) (*models.SaUser, error) {
|
||||
var count int64
|
||||
if err := database.Model(&models.SaUser{}).Count(&count).Error; err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
if count > 0 {
|
||||
return nil
|
||||
var user models.SaUser
|
||||
if err := database.Where("email = ? AND role = ?", rootUsername, rootRole).
|
||||
First(&user).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
passwordHash, err := bcrypt.GenerateFromPassword([]byte(rootPassword), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return database.Create(&models.SaUser{
|
||||
user := &models.SaUser{
|
||||
Email: rootUsername,
|
||||
DisplayName: rootUsername,
|
||||
PasswordHash: string(passwordHash),
|
||||
Role: rootRole,
|
||||
}).Error
|
||||
}
|
||||
if err := database.Create(user).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return user, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user