From d9eb1639386514dbb32b5269fd0756ef971ada59 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 8 Apr 2024 22:00:58 +0200
Subject: [PATCH] OZG-4870 add smtpServer config in keycloak realm

---
 .../keycloak/realm/KeycloakRealmMapper.java   | 15 ++++++++++++
 .../realm/OzgCloudKeycloakRealmSpec.java      | 23 +++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
index 2c3da92..51e74c9 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
@@ -23,6 +23,8 @@
  */
 package de.ozgcloud.operator.keycloak.realm;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 
 import org.keycloak.representations.idm.RealmRepresentation;
@@ -42,10 +44,23 @@ interface KeycloakRealmMapper {
 	@Mapping(target = "internationalizationEnabled", constant = "true")
 	@Mapping(target = "passwordPolicy", constant = "upperCase(1) and lowerCase(1) and length(8) and notUsername")
 	@Mapping(target = "actionTokenGeneratedByUserLifespan", constant = "900")
+	@Mapping(target = "smtpServer", source = "smtpServer", qualifiedByName = "smtpServer")
 	public RealmRepresentation map(OzgCloudKeycloakRealmSpec realm);
 
 	@Named("supportedLocales")
 	default Set<String> mapPassword(OzgCloudKeycloakRealmSpec spec) {
 		return Set.of("de");
 	}
+	
+	@Named("smtpServer")
+	 default Map<String, String> mapsmtpServer(OzgCloudKeycloakRealmSpec.KeycloakRealmSMTPServer server) {
+		Map<String, String> smtpServer = new HashMap<>();
+		smtpServer.put("host", server.getHost());
+		smtpServer.put("port", server.getPort());
+		smtpServer.put("user", server.getUser());
+		smtpServer.put("password", server.getPassword());
+		smtpServer.put("starttls", server.getStarttls()); 
+		return smtpServer;
+	}
+
 }
diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java
index 0a23abf..750563d 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpec.java
@@ -44,4 +44,27 @@ class OzgCloudKeycloakRealmSpec {
 	private boolean keepAfterDelete;
 
 	private String displayName;
+	
+	@Builder.Default
+	private KeycloakRealmSMTPServer smtpServer = new KeycloakRealmSMTPServer();
+
+
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+static class KeycloakRealmSMTPServer {
+
+	private String host;
+
+	private String user;
+
+	private String password;
+
+	private String port;
+
+	private String starttls;
+}
+
 }
-- 
GitLab