37 lines
778 B
Go
37 lines
778 B
Go
package initdb
|
|
|
|
import (
|
|
"golang.org/x/crypto/bcrypt"
|
|
"gorm.io/gorm"
|
|
"senlinai-agent/backend/internal/models"
|
|
)
|
|
|
|
const (
|
|
rootUsername = "root"
|
|
rootPassword = "123456"
|
|
rootRole = "root"
|
|
)
|
|
|
|
// InitUser creates the default root account when the user table is empty.
|
|
func InitUser(database *gorm.DB) error {
|
|
var count int64
|
|
if err := database.Model(&models.SenlinAgentUser{}).Count(&count).Error; err != nil {
|
|
return err
|
|
}
|
|
if count > 0 {
|
|
return nil
|
|
}
|
|
|
|
passwordHash, err := bcrypt.GenerateFromPassword([]byte(rootPassword), bcrypt.DefaultCost)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return database.Create(&models.SenlinAgentUser{
|
|
Email: rootUsername,
|
|
DisplayName: rootUsername,
|
|
PasswordHash: string(passwordHash),
|
|
Role: rootRole,
|
|
}).Error
|
|
}
|