From 0d8d7e858bfefecd82fc5ad03f794cd37cb90a38 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Mon, 21 Dec 2020 17:31:33 +0100
Subject: [PATCH] #562 - don't show git password on page

---
 .../budgetmaster/backup/AutoBackupStrategy.java      |  6 ++++--
 .../{services => backup}/BackupService.java          |  4 ++--
 .../deadlocker8/budgetmaster/backup/BackupTask.java  |  5 ++++-
 .../budgetmaster/backup/LocalBackupTask.java         |  5 +++--
 .../budgetmaster/backup/LocalGitBackupTask.java      |  5 +++--
 .../budgetmaster/backup/RemoteGitBackupTask.java     | 12 ++++++++----
 .../budgetmaster/settings/SettingsController.java    |  9 +++++++--
 src/main/resources/languages/base_de.properties      |  2 +-
 src/main/resources/languages/base_en.properties      |  2 +-
 .../resources/templates/settings/settingsMacros.ftl  |  2 +-
 10 files changed, 34 insertions(+), 18 deletions(-)
 rename src/main/java/de/deadlocker8/budgetmaster/{services => backup}/BackupService.java (96%)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/AutoBackupStrategy.java b/src/main/java/de/deadlocker8/budgetmaster/backup/AutoBackupStrategy.java
index aa3f6040b..58f56a7d2 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/backup/AutoBackupStrategy.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/AutoBackupStrategy.java
@@ -1,6 +1,7 @@
 package de.deadlocker8.budgetmaster.backup;
 
 import de.deadlocker8.budgetmaster.database.DatabaseService;
+import de.deadlocker8.budgetmaster.settings.SettingsService;
 import de.thecodelabs.utils.util.Localization;
 
 import java.lang.reflect.InvocationTargetException;
@@ -37,7 +38,7 @@ public enum AutoBackupStrategy
 		return Localization.getString(localizationKey);
 	}
 
-	public Optional<Runnable> getBackupTask(DatabaseService databaseService)
+	public Optional<Runnable> getBackupTask(DatabaseService databaseService, SettingsService settingsService)
 	{
 		if(backupTaskType == null)
 		{
@@ -46,7 +47,8 @@ public enum AutoBackupStrategy
 
 		try
 		{
-			return Optional.of(backupTaskType.getConstructor(DatabaseService.class).newInstance(databaseService));
+			return Optional.of(backupTaskType.getConstructor(DatabaseService.class, SettingsService.class)
+					.newInstance(databaseService, settingsService));
 		}
 		catch(InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e)
 		{
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/BackupService.java b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
similarity index 96%
rename from src/main/java/de/deadlocker8/budgetmaster/services/BackupService.java
rename to src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
index e4a72344e..c55beff9a 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/BackupService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.services;
+package de.deadlocker8.budgetmaster.backup;
 
 import de.deadlocker8.budgetmaster.backup.AutoBackupTime;
 import de.deadlocker8.budgetmaster.database.DatabaseService;
@@ -70,7 +70,7 @@ public class BackupService
 		final Settings settings = settingsService.getSettings();
 		if(settings.isAutoBackupActive())
 		{
-			final Optional<Runnable> backupTaskOptional = settings.getAutoBackupStrategy().getBackupTask(databaseService);
+			final Optional<Runnable> backupTaskOptional = settings.getAutoBackupStrategy().getBackupTask(databaseService, settingsService);
 			backupTaskOptional.ifPresent(runnable -> startBackupCron(computeCron(settings.getAutoBackupTime(), settings.getAutoBackupDays()), runnable));
 		}
 	}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupTask.java
index 78246a12d..4c3e0f439 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupTask.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupTask.java
@@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.backup;
 
 import de.deadlocker8.budgetmaster.Main;
 import de.deadlocker8.budgetmaster.database.DatabaseService;
+import de.deadlocker8.budgetmaster.settings.SettingsService;
 
 import java.nio.file.Path;
 
@@ -10,11 +11,13 @@ public abstract class BackupTask implements Runnable
 	protected static final String DATABASE_FILE_NAME = "budgetmaster.mv.db";
 
 	private final DatabaseService databaseService;
+	private final SettingsService settingsService;
 	private final Path backupFolder;
 
-	protected BackupTask(DatabaseService databaseService)
+	protected BackupTask(DatabaseService databaseService, SettingsService settingsService)
 	{
 		this.databaseService = databaseService;
+		this.settingsService = settingsService;
 
 		final Path applicationSupportFolder = Main.getApplicationSupportFolder();
 		this.backupFolder = applicationSupportFolder.resolve("backups");
diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java
index e7d18a55e..a52c30e6a 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java
@@ -1,6 +1,7 @@
 package de.deadlocker8.budgetmaster.backup;
 
 import de.deadlocker8.budgetmaster.database.DatabaseService;
+import de.deadlocker8.budgetmaster.settings.SettingsService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -12,9 +13,9 @@ public class LocalBackupTask extends BackupTask
 
 	private final DatabaseService databaseService;
 
-	public LocalBackupTask(DatabaseService databaseService)
+	public LocalBackupTask(DatabaseService databaseService, SettingsService settingsService)
 	{
-		super(databaseService);
+		super(databaseService, settingsService);
 		this.databaseService = databaseService;
 	}
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java
index 9ac3349c8..3ec99e5b2 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java
@@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.backup;
 
 import de.deadlocker8.budgetmaster.Main;
 import de.deadlocker8.budgetmaster.database.DatabaseService;
+import de.deadlocker8.budgetmaster.settings.SettingsService;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.dircache.DirCache;
@@ -22,9 +23,9 @@ public class LocalGitBackupTask extends BackupTask
 
 	private final Path gitFolder;
 
-	public LocalGitBackupTask(DatabaseService databaseService)
+	public LocalGitBackupTask(DatabaseService databaseService, SettingsService settingsService)
 	{
-		super(databaseService);
+		super(databaseService, settingsService);
 		this.gitFolder = Main.getApplicationSupportFolder().resolve(".git");
 	}
 
diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/RemoteGitBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/RemoteGitBackupTask.java
index 7ee852f53..6fba340a2 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/backup/RemoteGitBackupTask.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/RemoteGitBackupTask.java
@@ -2,6 +2,8 @@ package de.deadlocker8.budgetmaster.backup;
 
 import de.deadlocker8.budgetmaster.Main;
 import de.deadlocker8.budgetmaster.database.DatabaseService;
+import de.deadlocker8.budgetmaster.settings.Settings;
+import de.deadlocker8.budgetmaster.settings.SettingsService;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.dircache.DirCache;
@@ -26,13 +28,15 @@ public class RemoteGitBackupTask extends BackupTask
 	private final UsernamePasswordCredentialsProvider credentialsProvider;
 	private final String remote;
 
-	public RemoteGitBackupTask(DatabaseService databaseService)
+	public RemoteGitBackupTask(DatabaseService databaseService, SettingsService settingsService)
 	{
-		super(databaseService);
+		super(databaseService, settingsService);
 		this.gitFolder = Main.getApplicationSupportFolder().resolve(".git");
 
-		this.credentialsProvider = new UsernamePasswordCredentialsProvider("", "");
-		this.remote = "https://thecodelabs.de/deadlocker8/bm_test.git";
+		final Settings settings = settingsService.getSettings();
+
+		this.credentialsProvider = new UsernamePasswordCredentialsProvider(settings.getAutoBackupGitUserName(), settings.getAutoBackupGitPassword());
+		this.remote = settings.getAutoBackupGitUrl();
 	}
 
 	@Override
diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
index 0ccfd992d..a144a5c33 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
@@ -12,7 +12,7 @@ import de.deadlocker8.budgetmaster.database.Database;
 import de.deadlocker8.budgetmaster.database.DatabaseParser;
 import de.deadlocker8.budgetmaster.database.DatabaseService;
 import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatchList;
-import de.deadlocker8.budgetmaster.services.BackupService;
+import de.deadlocker8.budgetmaster.backup.BackupService;
 import de.deadlocker8.budgetmaster.services.ImportService;
 import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService;
 import de.deadlocker8.budgetmaster.utils.LanguageType;
@@ -115,6 +115,11 @@ public class SettingsController extends BaseController
 			settings.setAutoBackupStrategy(AutoBackupStrategy.NONE);
 		}
 
+		if(settings.getAutoBackupGitPassword().equals("•••••"))
+		{
+			settings.setAutoBackupGitPassword(settingsService.getSettings().getAutoBackupGitPassword());
+		}
+
 		final String cron = scheduleTaskService.computeCron(settings.getAutoBackupTime(), settings.getAutoBackupDays());
 		scheduleTaskService.stopBackupCron();
 		if(settings.getAutoBackupStrategy() == AutoBackupStrategy.NONE)
@@ -128,7 +133,7 @@ public class SettingsController extends BaseController
 		}
 		else
 		{
-			final Optional<Runnable> backupTaskOptional = settings.getAutoBackupStrategy().getBackupTask(databaseService);
+			final Optional<Runnable> backupTaskOptional = settings.getAutoBackupStrategy().getBackupTask(databaseService, settingsService);
 			backupTaskOptional.ifPresent(runnable -> scheduleTaskService.startBackupCron(cron, runnable));
 		}
 
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index 8d0c447b6..713f5e387 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -144,7 +144,7 @@ warning.empty.chart.name=Bitte gib einen Namen ein.
 warning.empty.chart.script=Bitte gib ein Script ein.
 warning.duplicate.template.name=Es existiert bereits eine Vorlage mit diesem Namen.
 warning.transaction.date=Das angegebene Datum entspricht nicht dem erlaubten Format. Erwartetes Format: DD.MM.YY, DDMMYY, DD.MM.YYYY, DDMMYYYY.
-warning.empty.git.user.url=Bitte gib die URL zum git-Server ein.
+warning.empty.git.url=Bitte gib die URL zum git-Server ein.
 warning.empty.git.user.name=Bitte gib deinen git-Nutzernamen ein.
 warning.empty.git.password=Bitte gib dein git-Passwort ein.
 
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index 95d69f583..1f2543d5d 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -144,7 +144,7 @@ warning.empty.chart.name=Please insert a name.
 warning.empty.chart.script=Please insert a script.
 warning.duplicate.template.name=A template with this name is already existing.
 warning.transaction.date=The specified date does not correspond to the allowed format. Expected format: DD.MM.YY, DDMMYY, DD.MM.YYYY, DDMMYYYY.
-warning.empty.git.user.url=Please insert the git server's URL.
+warning.empty.git.url=Please insert the git server's URL.
 warning.empty.git.user.name=Please insert your git user name.
 warning.empty.git.password=Please insert your git password.
 
diff --git a/src/main/resources/templates/settings/settingsMacros.ftl b/src/main/resources/templates/settings/settingsMacros.ftl
index b12710956..762a186e0 100644
--- a/src/main/resources/templates/settings/settingsMacros.ftl
+++ b/src/main/resources/templates/settings/settingsMacros.ftl
@@ -220,7 +220,7 @@
 
         <div class="input-field col s12 m12 l8 offset-l2">
             <i class="material-icons prefix">vpn_key</i>
-            <input id="settings-backup-auto-git-password" name="autoBackupGitPassword" type="text" <@validation.validation "autoBackupGitPassword"/> value="<#if settings.isAutoBackupActive()??>${settings.getAutoBackupGitPassword()}</#if>">
+            <input id="settings-backup-auto-git-password" name="autoBackupGitPassword" type="text" <@validation.validation "autoBackupGitPassword"/> value="•••••">
             <label for="settings-backup-auto-git-password">${locale.getString("settings.backup.auto.git.password")}</label>
         </div>
 
-- 
GitLab