Files
backend/cmd/db_init/admin.go
T
2026-07-15 22:42:31 +08:00

60 lines
1.4 KiB
Go

package main
import (
"fmt"
"github.com/XingfenD/yoresee_doc/internal/model"
"github.com/XingfenD/yoresee_doc/internal/utils"
"github.com/sirupsen/logrus"
"gorm.io/gorm"
)
func createUserInTx(tx *gorm.DB, username, email, password string) error {
logrus.Printf("Creating user %s in transaction...", username)
hashedPwd, err := utils.HashPassword(password)
if err != nil {
return err
}
externalID := utils.GenerateExternalID(utils.ExternalIDContextDocument)
user := model.User{
ExternalID: externalID,
Username: username,
PasswordHash: hashedPwd,
Email: email,
Nickname: username,
Status: 1,
}
var count int64
tx.Model(&model.User{}).Where("email = ?", user.Email).Count(&count)
if count == 0 {
if err := tx.Create(&user).Error; err != nil {
return err
}
logrus.Printf("User %s created successfully in transaction.", username)
} else {
logrus.Printf("User %s already exists in transaction.", username)
}
return nil
}
func createUserWithUsername(tx *gorm.DB, username string) error {
email := fmt.Sprintf("%s@yoresee.cc", username)
password := username
return createUserInTx(tx, username, email, password)
}
func createAdminUserInTx(tx *gorm.DB) error {
logrus.Println("Creating admin user in transaction...")
if err := createUserWithUsername(tx, "admin"); err != nil {
return err
}
logrus.Println("Admin permission granted successfully in transaction.")
return nil
}