// Path: modules/cloud-portal-server/src/main/java/de/papke/cloud/portal/dao/CredentialsDao.java
// public interface CredentialsDao extends MongoRepository<Credentials, String> {
// 	public List<Credentials> findByProvider(String provider);
//     public Credentials findByGroupAndProvider(String group, String provider);
// }
// 
// Path: modules/cloud-portal-server/src/main/java/de/papke/cloud/portal/pojo/Credentials.java
// public class Credentials {
// 
//     @Id
//     private String id;
//     private String group;
//     private String provider;
//     private Map<String, String> secretMap = new HashMap<>();
// 
//     public Credentials() {}
//     
// 	public Credentials(String group, String provider, Map<String, String> secretMap) {
// 		this.group = group;
// 		this.provider = provider;
// 		this.secretMap = secretMap;
// 	}
// 
// 	public String getId() {
// 		return id;
// 	}
// 
// 	public void setId(String id) {
// 		this.id = id;
// 	}
// 
// 	public String getGroup() {
// 		return group;
// 	}
// 	
// 	public void setGroup(String group) {
// 		this.group = group;
// 	}
// 
// 	public String getProvider() {
// 		return provider;
// 	}
// 
// 	public void setProvider(String provider) {
// 		this.provider = provider;
// 	}
// 
// 	public Map<String, String> getSecretMap() {
// 		return secretMap;
// 	}
// 
// 	public void setSecretMap(Map<String, String> secretMap) {
// 		this.secretMap = secretMap;
// 	}
// }
// 
// Path: modules/cloud-portal-server/src/main/java/de/papke/cloud/portal/pojo/User.java
// public class User implements Serializable {
// 
// 	private static final long serialVersionUID = 1L;
// 	
// 	private String username;
// 	private String givenName;
// 	private String surName;
// 	private String email;
// 	private List<String> groups;
// 	private boolean admin;
// 	
// 	public User() {}
// 	
// 	public User(String username, String givenName, String surName, String email, List<String> groups, boolean admin) {
// 		super();
// 		this.givenName = givenName;
// 		this.surName = surName;
// 		this.username = username;
// 		this.email = email;
// 		this.groups = groups;
// 		this.admin = admin;
// 	}
// 	
// 	public String getUsername() {
// 		return username;
// 	}
// 	
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 	
// 	public String getGivenName() {
// 		return givenName;
// 	}
// 
// 	public void setGivenName(String givenName) {
// 		this.givenName = givenName;
// 	}
// 
// 	public String getSurName() {
// 		return surName;
// 	}
// 
// 	public void setSurName(String surName) {
// 		this.surName = surName;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 	
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 	
// 	public List<String> getGroups() {
// 		return groups;
// 	}
// 	
// 	public void setGroups(List<String> groups) {
// 		this.groups = groups;
// 	}
// 
// 	public boolean isAdmin() {
// 		return admin;
// 	}
// 
// 	public void setAdmin(boolean admin) {
// 		this.admin = admin;
// 	}
// }


import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import de.papke.cloud.portal.dao.CredentialsDao;
import de.papke.cloud.portal.pojo.Credentials;
import de.papke.cloud.portal.pojo.User;
					
					Map<String, String> secretMap = credentials.getSecretMap();
					Map<String, String> decryptedSecretMap = decryptSecretMap(secretMap);
					credentials.setSecretMap(decryptedSecretMap);
					
					return credentials;
				}
			}
		}
		
		return null;
	}
	
	public Credentials create(String group, String provider, Map<String, String> secretMap) {
		
		Map<String, String> encryptedSecretMap = encryptSecretMap(secretMap);
		Credentials credentials = new Credentials(group, provider, encryptedSecretMap);
		
		return credentialsDao.save(credentials);
	}
	
	public void delete(String id) {
		credentialsDao.delete(id);
	}
	
	private Map<String, String> encryptSecretMap(Map<String, String> secretMap) {
		
		Map<String, String> encryptedSecretMap = new HashMap<>();
		
		if (secretMap != null) {
// Path: modules/cloud-portal-server/src/main/java/de/papke/cloud/portal/dao/CredentialsDao.java
// public interface CredentialsDao extends MongoRepository<Credentials, String> {
// 	public List<Credentials> findByProvider(String provider);
//     public Credentials findByGroupAndProvider(String group, String provider);
// }
// 
// Path: modules/cloud-portal-server/src/main/java/de/papke/cloud/portal/pojo/Credentials.java
// public class Credentials {
// 
//     @Id
//     private String id;
//     private String group;
//     private String provider;
//     private Map<String, String> secretMap = new HashMap<>();
// 
//     public Credentials() {}
//     
// 	public Credentials(String group, String provider, Map<String, String> secretMap) {
// 		this.group = group;
// 		this.provider = provider;
// 		this.secretMap = secretMap;
// 	}
// 
// 	public String getId() {
// 		return id;
// 	}
// 
// 	public void setId(String id) {
// 		this.id = id;
// 	}
// 
// 	public String getGroup() {
// 		return group;
// 	}
// 	
// 	public void setGroup(String group) {
// 		this.group = group;
// 	}
// 
// 	public String getProvider() {
// 		return provider;
// 	}
// 
// 	public void setProvider(String provider) {
// 		this.provider = provider;
// 	}
// 
// 	public Map<String, String> getSecretMap() {
// 		return secretMap;
// 	}
// 
// 	public void setSecretMap(Map<String, String> secretMap) {
// 		this.secretMap = secretMap;
// 	}
// }
// 
// Path: modules/cloud-portal-server/src/main/java/de/papke/cloud/portal/pojo/User.java
// public class User implements Serializable {
// 
// 	private static final long serialVersionUID = 1L;
// 	
// 	private String username;
// 	private String givenName;
// 	private String surName;
// 	private String email;
// 	private List<String> groups;
// 	private boolean admin;
// 	
// 	public User() {}
// 	
// 	public User(String username, String givenName, String surName, String email, List<String> groups, boolean admin) {
// 		super();
// 		this.givenName = givenName;
// 		this.surName = surName;
// 		this.username = username;
// 		this.email = email;
// 		this.groups = groups;
// 		this.admin = admin;
// 	}
// 	
// 	public String getUsername() {
// 		return username;
// 	}
// 	
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 	
// 	public String getGivenName() {
// 		return givenName;
// 	}
// 
// 	public void setGivenName(String givenName) {
// 		this.givenName = givenName;
// 	}
// 
// 	public String getSurName() {
// 		return surName;
// 	}
// 
// 	public void setSurName(String surName) {
// 		this.surName = surName;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 	
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 	
// 	public List<String> getGroups() {
// 		return groups;
// 	}
// 	
// 	public void setGroups(List<String> groups) {
// 		this.groups = groups;
// 	}
// 
// 	public boolean isAdmin() {
// 		return admin;
// 	}
// 
// 	public void setAdmin(boolean admin) {
// 		this.admin = admin;
// 	}
// }


// Path: modules/cloud-portal-server/src/main/java/de/papke/cloud/portal/service/CredentialsService.java
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import de.papke.cloud.portal.dao.CredentialsDao;
import de.papke.cloud.portal.pojo.Credentials;
import de.papke.cloud.portal.pojo.User;

					
					Map<String, String> secretMap = credentials.getSecretMap();
					Map<String, String> decryptedSecretMap = decryptSecretMap(secretMap);
					credentials.setSecretMap(decryptedSecretMap);
					
					return credentials;
				}
			}
		}
		
		return null;
	}
	
	public Credentials create(String group, String provider, Map<String, String> secretMap) {
		
		Map<String, String> encryptedSecretMap = encryptSecretMap(secretMap);
		Credentials credentials = new Credentials(group, provider, encryptedSecretMap);
		
		return credentialsDao.save(credentials);
	}
	
	public void delete(String id) {
		credentialsDao.delete(id);
	}
	
	private Map<String, String> encryptSecretMap(Map<String, String> secretMap) {
		
		Map<String, String> encryptedSecretMap = new HashMap<>();
		
		if (secretMap != null) {
			for (Entry<String, String> entry : secretMap.entrySet()) {