package io.dataease.auth.config; import com.fasterxml.jackson.databind.ObjectMapper; import io.dataease.utils.CommonBeanFactory; import io.dataease.utils.LogUtil; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.io.ResourceLoader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; @ConditionalOnMissingBean(name = "loginServer") @Configuration public class SubstituleLoginConfig { @Value("${dataease.path.substitule:classpath:substitule.json}") private String jsonFilePath; private static String pwd; private static boolean ready = false; @ConditionalOnMissingBean(name = "loginServer") @Bean public Map substituleLoginData(ResourceLoader resourceLoader) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); File jsonFile = new File(jsonFilePath); if (!jsonFile.exists()) { pwd = CommonBeanFactory.getBean(Environment.class).getProperty("dataease.default-pwd", "DataEase@123456"); modifyPwd(pwd); } return objectMapper.readValue(jsonFile, Map.class); } public static String getPwd() { if (!ready) { ready = true; Object substituleLoginDataObject = CommonBeanFactory.getBean("substituleLoginData"); if (substituleLoginDataObject != null) { Map substituleLoginData = (Map) substituleLoginDataObject; if (ObjectUtils.isNotEmpty(substituleLoginData.get("pwd"))) { pwd = substituleLoginData.get("pwd").toString(); return substituleLoginData.get("pwd").toString(); } } } return pwd; } public void modifyPwd(String pwd) { File file = new File(jsonFilePath); Map myObject = new HashMap<>(); myObject.put("pwd", pwd); SubstituleLoginConfig.pwd = pwd; ObjectMapper mapper = new ObjectMapper(); try (FileOutputStream fos = new FileOutputStream(file)) { // 将对象写入文件 mapper.writeValue(fos, myObject); } catch (IOException e) { LogUtil.error(e.getCause(), new Throwable(e)); } } }