diff --git a/main.go b/main.go index d8177458..80111aae 100644 --- a/main.go +++ b/main.go @@ -244,21 +244,33 @@ func migrateDb() { } func removeSecret() { - err := database.InitDB(config.GetDBPath()) + userService := service.UserService{} + + secretExists, err := userService.CheckSecretExistence() if err != nil { - fmt.Println(err) + fmt.Println("Error checking secret existence:", err) return } - userService := service.UserService{} + + if !secretExists { + fmt.Println("No secret exists to remove.") + return + } + err = userService.RemoveUserSecret() if err != nil { - fmt.Println(err) + fmt.Println("Error removing secret:", err) + return } + settingService := service.SettingService{} err = settingService.SetSecretStatus(false) if err != nil { - fmt.Println(err) + fmt.Println("Error updating secret status:", err) + return } + + fmt.Println("Secret removed successfully.") } func main() { @@ -285,6 +297,7 @@ func main() { var remove_secret bool settingCmd.BoolVar(&reset, "reset", false, "reset all settings") settingCmd.BoolVar(&show, "show", false, "show current settings") + settingCmd.BoolVar(&remove_secret, "remove_secret", false, "remove secret") settingCmd.IntVar(&port, "port", 0, "set panel port") settingCmd.StringVar(&username, "username", "", "set login username") settingCmd.StringVar(&password, "password", "", "set login password") diff --git a/web/service/user.go b/web/service/user.go index b8292000..fdfffa3c 100644 --- a/web/service/user.go +++ b/web/service/user.go @@ -79,6 +79,21 @@ func (s *UserService) GetUserSecret(id int) *model.User { return user } +func (s *UserService) CheckSecretExistence() (bool, error) { + db := database.GetDB() + + var count int64 + err := db.Model(model.User{}). + Where("login_secret IS NOT NULL"). + Count(&count). + Error + if err != nil { + return false, err + } + + return count > 0, nil +} + func (s *UserService) UpdateFirstUser(username string, password string) error { if username == "" { return errors.New("username can not be empty")