From 29e0e0cc9e9cf5eeae46ca133aa3be290161982c Mon Sep 17 00:00:00 2001 From: Sonja Happ Date: Thu, 19 Mar 2020 09:32:39 +0100 Subject: [PATCH] make sure that at least one admin user is added to DB in release mode --- database/testdata.go | 16 ++++++++++++---- start.go | 9 +++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/database/testdata.go b/database/testdata.go index a4202bf..fa42aaf 100644 --- a/database/testdata.go +++ b/database/testdata.go @@ -309,10 +309,18 @@ var WidgetE = Widget{ func DBAddAdminUser(db *gorm.DB) error { db.AutoMigrate(&User{}) - //create a copy of global test data - user0 := User0 - // add admin user to DB - err := db.Create(&user0).Error + // Check if admin user exists in DB + var users []User + err := db.Where("Role = ?", "Admin").Find(&users).Error + + if len(users) == 0 { + fmt.Println("No admin user found in DB, adding default admin user.") + //create a copy of global test data + user0 := User0 + // add admin user to DB + err = db.Create(&user0).Error + } + return err } diff --git a/start.go b/start.go index da878ad..cf08a96 100644 --- a/start.go +++ b/start.go @@ -133,6 +133,7 @@ func main() { return } if mode == "test" { + // test mode: drop all tables and add test data to DB database.DropTables(db) log.Println("Database tables dropped, adding test data to DB") err = database.DBAddTestData(db, basePath, r) @@ -142,6 +143,14 @@ func main() { panic(err) } log.Println("Database initialized with test data") + } else { + // release mode: make sure that at least one admin user exists in DB + err = database.DBAddAdminUser(db) + if err != nil { + fmt.Println(err.Error()) + fmt.Println("error: adding admin user failed, aborting") + panic(err) + } } amqpurl, _ := configuration.GolbalConfig.String("amqp.url")