fixes
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
@@ -12,6 +13,7 @@ import (
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
func Connect(cfg config.Config) *gorm.DB {
|
||||
@@ -74,7 +76,7 @@ func ensureDefaultAdmin(db *gorm.DB, cfg config.Config) {
|
||||
return
|
||||
}
|
||||
|
||||
if err != gorm.ErrRecordNotFound {
|
||||
if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
log.Fatalf("failed to check default admin user: %v", err)
|
||||
}
|
||||
|
||||
@@ -88,7 +90,20 @@ func ensureDefaultAdmin(db *gorm.DB, cfg config.Config) {
|
||||
PasswordHash: string(passwordHash),
|
||||
IsAdmin: true,
|
||||
}
|
||||
if err := db.Create(&user).Error; err != nil {
|
||||
if err := db.Clauses(clause.OnConflict{
|
||||
Columns: []clause.Column{{Name: "email"}},
|
||||
DoNothing: true,
|
||||
}).Create(&user).Error; err != nil {
|
||||
log.Fatalf("failed to create default admin user: %v", err)
|
||||
}
|
||||
|
||||
if err := db.Where("email = ?", email).First(&user).Error; err != nil {
|
||||
log.Fatalf("failed to load default admin user after bootstrap: %v", err)
|
||||
}
|
||||
|
||||
if !user.IsAdmin {
|
||||
if err := db.Model(&user).Update("is_admin", true).Error; err != nil {
|
||||
log.Fatalf("failed to ensure default admin privileges: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user