This commit is contained in:
MaxKey 2023-10-09 08:59:49 +08:00
parent b8838cbae8
commit ce87d209c1
23 changed files with 74 additions and 100 deletions

View File

@ -28,7 +28,7 @@ ext {
def libjarsmapper=[ def libjarsmapper=[
'maxkey-authentication-captcha' :'lib', 'maxkey-authentication-captcha' :'lib',
'maxkey-authentication-core' :'lib', 'maxkey-authentication-core' :'lib',
'maxkey-authentication-ip2region' :'lib', 'maxkey-authentication-ip2location' :'lib',
'maxkey-authentication-otp' :'lib', 'maxkey-authentication-otp' :'lib',
'maxkey-authentication-provider' :'lib', 'maxkey-authentication-provider' :'lib',
'maxkey-authentication-sms' :'lib', 'maxkey-authentication-sms' :'lib',

View File

@ -15,7 +15,7 @@
# */ # */
#maxkey properties #maxkey properties
group =org.dromara.maxkey group =org.dromara.maxkey
version =4.0.1 version =4.0.2
vendor =https://www.maxkey.top vendor =https://www.maxkey.top
author =MaxKeyTop author =MaxKeyTop

View File

@ -89,7 +89,7 @@ public class ApplicationAutoConfiguration implements InitializingBean {
@Bean @Bean
public PasswordEncoder passwordEncoder( public PasswordEncoder passwordEncoder(
@Value("${maxkey.crypto.password.encoder:bcrypt}") String idForEncode) { @Value("${maxkey.crypto.password.encoder:bcrypt}") String idForEncode) {
Map<String ,PasswordEncoder > encoders = new HashMap<String ,PasswordEncoder>(); Map<String ,PasswordEncoder > encoders = new HashMap<>();
encoders.put("bcrypt", new BCryptPasswordEncoder()); encoders.put("bcrypt", new BCryptPasswordEncoder());
encoders.put("plain", NoOpPasswordEncoder.getInstance()); encoders.put("plain", NoOpPasswordEncoder.getInstance());
encoders.put("pbkdf2", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8()); encoders.put("pbkdf2", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8());
@ -174,8 +174,8 @@ public class ApplicationAutoConfiguration implements InitializingBean {
@Value("${maxkey.id.datacenterId:0}") int datacenterId, @Value("${maxkey.id.datacenterId:0}") int datacenterId,
@Value("${maxkey.id.machineId:0}") int machineId) { @Value("${maxkey.id.machineId:0}") int machineId) {
IdGenerator idGenerator = new IdGenerator(strategy); IdGenerator idGenerator = new IdGenerator(strategy);
SnowFlakeId SnowFlakeId = new SnowFlakeId(datacenterId,machineId); SnowFlakeId snowFlakeId = new SnowFlakeId(datacenterId,machineId);
idGenerator.setSnowFlakeId(SnowFlakeId); idGenerator.setSnowFlakeId(snowFlakeId);
WebContext.idGenerator = idGenerator; WebContext.idGenerator = idGenerator;
return idGenerator; return idGenerator;
} }
@ -184,14 +184,13 @@ public class ApplicationAutoConfiguration implements InitializingBean {
@Bean @Bean
public MomentaryService momentaryService( public MomentaryService momentaryService(
RedisConnectionFactory redisConnFactory, RedisConnectionFactory redisConnFactory,
@Value("${maxkey.server.persistence}") int persistence) throws JOSEException { @Value("${maxkey.server.persistence}") int persistence) {
MomentaryService momentaryService; MomentaryService momentaryService;
if (persistence == ConstsPersistence.REDIS) { if (persistence == ConstsPersistence.REDIS) {
momentaryService = new RedisMomentaryService(redisConnFactory); momentaryService = new RedisMomentaryService(redisConnFactory);
}else { }else {
momentaryService = new InMemoryMomentaryService(); momentaryService = new InMemoryMomentaryService();
} }
return momentaryService; return momentaryService;
} }

View File

@ -75,11 +75,10 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
public ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource( public ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource(
@Value("${spring.messages.basename:classpath:messages/message}") @Value("${spring.messages.basename:classpath:messages/message}")
String messagesBasename) { String messagesBasename) {
_logger.debug("Basename " + messagesBasename); _logger.debug("Basename {}" , messagesBasename);
String passwordPolicyMessagesBasename="classpath:messages/passwordpolicy_message"; String passwordPolicyMessagesBasename="classpath:messages/passwordpolicy_message";
ReloadableResourceBundleMessageSource messageSource = ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
new ReloadableResourceBundleMessageSource();
messageSource.setBasenames(messagesBasename,passwordPolicyMessagesBasename); messageSource.setBasenames(messagesBasename,passwordPolicyMessagesBasename);
messageSource.setUseCodeAsDefaultMessage(false); messageSource.setUseCodeAsDefaultMessage(false);
return messageSource; return messageSource;
@ -92,27 +91,11 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
//@Primary //@Primary
@Bean (name = "localeChangeInterceptor") @Bean (name = "localeChangeInterceptor")
public LocaleChangeInterceptor localeChangeInterceptor() { public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language"); localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor; return localeChangeInterceptor;
} }
/**
* upload file support .
* @return multipartResolver
*/
/*
@Bean (name = "multipartResolver")
public CommonsMultipartResolver commonsMultipartResolver(
@Value("${spring.servlet.multipart.max-file-size:0}") int maxUploadSize) {
_logger.debug("maxUploadSize " + maxUploadSize);
CommonsMultipartResolver multipartResolver =
new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(maxUploadSize);
return multipartResolver;
}*/
/** /**
* handlerMapping . * handlerMapping .
* @return handlerMapping * @return handlerMapping
@ -120,8 +103,7 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
@Bean (name = "handlerMapping") @Bean (name = "handlerMapping")
public RequestMappingHandlerMapping requestMappingHandlerMapping( public RequestMappingHandlerMapping requestMappingHandlerMapping(
LocaleChangeInterceptor localeChangeInterceptor) { LocaleChangeInterceptor localeChangeInterceptor) {
RequestMappingHandlerMapping requestMappingHandlerMapping = RequestMappingHandlerMapping requestMappingHandlerMapping = new RequestMappingHandlerMapping();
new RequestMappingHandlerMapping();
requestMappingHandlerMapping.setInterceptors(localeChangeInterceptor); requestMappingHandlerMapping.setInterceptors(localeChangeInterceptor);
return requestMappingHandlerMapping; return requestMappingHandlerMapping;
} }
@ -144,15 +126,14 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
@Bean (name = "marshallingHttpMessageConverter") @Bean (name = "marshallingHttpMessageConverter")
public MarshallingHttpMessageConverter marshallingHttpMessageConverter( public MarshallingHttpMessageConverter marshallingHttpMessageConverter(
Jaxb2Marshaller jaxb2Marshaller) { Jaxb2Marshaller jaxb2Marshaller) {
MarshallingHttpMessageConverter marshallingHttpMessageConverter = MarshallingHttpMessageConverter marshallingHttpMessageConverter = new MarshallingHttpMessageConverter();
new MarshallingHttpMessageConverter();
marshallingHttpMessageConverter.setMarshaller(jaxb2Marshaller); marshallingHttpMessageConverter.setMarshaller(jaxb2Marshaller);
marshallingHttpMessageConverter.setUnmarshaller(jaxb2Marshaller); marshallingHttpMessageConverter.setUnmarshaller(jaxb2Marshaller);
ArrayList<MediaType> mediaTypesList = new ArrayList<MediaType>(); ArrayList<MediaType> mediaTypesList = new ArrayList<>();
mediaTypesList.add(MediaType.APPLICATION_XML); mediaTypesList.add(MediaType.APPLICATION_XML);
mediaTypesList.add(MediaType.TEXT_XML); mediaTypesList.add(MediaType.TEXT_XML);
mediaTypesList.add(MediaType.TEXT_PLAIN); mediaTypesList.add(MediaType.TEXT_PLAIN);
_logger.debug("marshallingHttpMessageConverter MediaTypes " + mediaTypesList); _logger.debug("marshallingHttpMessageConverter MediaTypes {}" , mediaTypesList);
marshallingHttpMessageConverter.setSupportedMediaTypes(mediaTypesList); marshallingHttpMessageConverter.setSupportedMediaTypes(mediaTypesList);
return marshallingHttpMessageConverter; return marshallingHttpMessageConverter;
} }
@ -163,14 +144,13 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
*/ */
@Bean (name = "mappingJacksonHttpMessageConverter") @Bean (name = "mappingJacksonHttpMessageConverter")
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter = MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter = new MappingJackson2HttpMessageConverter();
new MappingJackson2HttpMessageConverter(); ArrayList<MediaType> mediaTypesList = new ArrayList<>();
ArrayList<MediaType> mediaTypesList = new ArrayList<MediaType>();
mediaTypesList.add(MediaType.APPLICATION_JSON); mediaTypesList.add(MediaType.APPLICATION_JSON);
mediaTypesList.add(MediaType.valueOf(ApiVersion.V2.getProducedMimeType().toString())); mediaTypesList.add(MediaType.valueOf(ApiVersion.V2.getProducedMimeType().toString()));
mediaTypesList.add(MediaType.valueOf(ApiVersion.V3.getProducedMimeType().toString())); mediaTypesList.add(MediaType.valueOf(ApiVersion.V3.getProducedMimeType().toString()));
//mediaTypesList.add(MediaType.TEXT_PLAIN); //mediaTypesList.add(MediaType.TEXT_PLAIN);
_logger.debug("mappingJacksonHttpMessageConverter MediaTypes " + mediaTypesList); _logger.debug("mappingJacksonHttpMessageConverter MediaTypes {}" , mediaTypesList);
mappingJacksonHttpMessageConverter.setSupportedMediaTypes(mediaTypesList); mappingJacksonHttpMessageConverter.setSupportedMediaTypes(mediaTypesList);
return mappingJacksonHttpMessageConverter; return mappingJacksonHttpMessageConverter;
} }
@ -185,7 +165,7 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
@Value("${maxkey.server.domain:maxkey.top}") @Value("${maxkey.server.domain:maxkey.top}")
String domainName String domainName
) { ) {
_logger.debug("DomainName " + domainName); _logger.debug("DomainName {}" , domainName);
CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver(); CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver();
cookieLocaleResolver.setCookieName("mxk_locale"); cookieLocaleResolver.setCookieName("mxk_locale");
cookieLocaleResolver.setCookieDomain(domainName); cookieLocaleResolver.setCookieDomain(domainName);
@ -204,8 +184,7 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
MarshallingHttpMessageConverter marshallingHttpMessageConverter, MarshallingHttpMessageConverter marshallingHttpMessageConverter,
StringHttpMessageConverter stringHttpMessageConverter, StringHttpMessageConverter stringHttpMessageConverter,
RequestMappingHandlerAdapter requestMappingHandlerAdapter) { RequestMappingHandlerAdapter requestMappingHandlerAdapter) {
List<HttpMessageConverter<?>> httpMessageConverterList = List<HttpMessageConverter<?>> httpMessageConverterList = new ArrayList<>();
new ArrayList<HttpMessageConverter<?>>();
httpMessageConverterList.add(mappingJacksonHttpMessageConverter); httpMessageConverterList.add(mappingJacksonHttpMessageConverter);
httpMessageConverterList.add(marshallingHttpMessageConverter); httpMessageConverterList.add(marshallingHttpMessageConverter);
httpMessageConverterList.add(stringHttpMessageConverter); httpMessageConverterList.add(stringHttpMessageConverter);
@ -224,8 +203,7 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter, MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter,
MarshallingHttpMessageConverter marshallingHttpMessageConverter) { MarshallingHttpMessageConverter marshallingHttpMessageConverter) {
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> httpMessageConverterList = List<HttpMessageConverter<?>> httpMessageConverterList = new ArrayList<>();
new ArrayList<HttpMessageConverter<?>>();
httpMessageConverterList.add(mappingJacksonHttpMessageConverter); httpMessageConverterList.add(mappingJacksonHttpMessageConverter);
httpMessageConverterList.add(marshallingHttpMessageConverter); httpMessageConverterList.add(marshallingHttpMessageConverter);
restTemplate.setMessageConverters(httpMessageConverterList); restTemplate.setMessageConverters(httpMessageConverterList);
@ -279,7 +257,7 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
@Bean @Bean
public FilterRegistrationBean<Filter> delegatingFilterProxy() { public FilterRegistrationBean<Filter> delegatingFilterProxy() {
_logger.debug("delegatingFilterProxy init for /* "); _logger.debug("delegatingFilterProxy init for /* ");
FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<Filter>(); FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new DelegatingFilterProxy("securityContextHolderAwareRequestFilter")); registrationBean.setFilter(new DelegatingFilterProxy("securityContextHolderAwareRequestFilter"));
registrationBean.addUrlPatterns("/*"); registrationBean.addUrlPatterns("/*");
//registrationBean. //registrationBean.
@ -292,7 +270,7 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
@Bean @Bean
public FilterRegistrationBean<Filter> webXssRequestFilter() { public FilterRegistrationBean<Filter> webXssRequestFilter() {
_logger.debug("webXssRequestFilter init for /* "); _logger.debug("webXssRequestFilter init for /* ");
FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<Filter>(new WebXssRequestFilter()); FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>(new WebXssRequestFilter());
registrationBean.addUrlPatterns("/*"); registrationBean.addUrlPatterns("/*");
registrationBean.setName("webXssRequestFilter"); registrationBean.setName("webXssRequestFilter");
registrationBean.setOrder(3); registrationBean.setOrder(3);
@ -300,12 +278,12 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
} }
@Bean @Bean
public FilterRegistrationBean<Filter> WebInstRequestFilter( public FilterRegistrationBean<Filter> webInstRequestFilter(
InstitutionsRepository institutionsRepository, InstitutionsRepository institutionsRepository,
ApplicationConfig applicationConfig) { ApplicationConfig applicationConfig) {
_logger.debug("WebInstRequestFilter init for /* "); _logger.debug("WebInstRequestFilter init for /* ");
FilterRegistrationBean<Filter> registrationBean = FilterRegistrationBean<Filter> registrationBean =
new FilterRegistrationBean<Filter>(new WebInstRequestFilter(institutionsRepository,applicationConfig)); new FilterRegistrationBean<>(new WebInstRequestFilter(institutionsRepository,applicationConfig));
registrationBean.addUrlPatterns("/*"); registrationBean.addUrlPatterns("/*");
registrationBean.setName("webInstRequestFilter"); registrationBean.setName("webInstRequestFilter");
registrationBean.setOrder(4); registrationBean.setOrder(4);

View File

@ -201,10 +201,7 @@ public class ApplicationConfig {
} }
public boolean isProvisionSupport() { public boolean isProvisionSupport() {
if(provision) { return provision;
return true;
}
return false;
} }
public String getMgtUri() { public String getMgtUri() {

View File

@ -92,17 +92,14 @@ public class InitializeContext extends HttpServlet {
public void listDataBaseVariables() { public void listDataBaseVariables() {
if (!applicationContext.containsBean("dataSource")) {return;} if (!applicationContext.containsBean("dataSource")) {return;}
try { try {
logger.debug(WebConstants.DELIMITER); logger.info(WebConstants.DELIMITER);
logger.debug("List DatabaseMetaData Variables "); logger.info("List DatabaseMetaData Variables ");
Connection connection = Connection connection = ((javax.sql.DataSource) applicationContext.getBean("dataSource")).getConnection();
((javax.sql.DataSource) applicationContext.getBean("dataSource"))
.getConnection();
DatabaseMetaData databaseMetaData = connection.getMetaData(); DatabaseMetaData databaseMetaData = connection.getMetaData();
ApplicationConfig.databaseProduct = databaseMetaData.getDatabaseProductName(); ApplicationConfig.databaseProduct = databaseMetaData.getDatabaseProductName();
logger.debug("DatabaseProductName : {}", databaseMetaData.getDatabaseProductName()); logger.info("DatabaseProductName : {}", databaseMetaData.getDatabaseProductName());
logger.debug("DatabaseProductVersion: {}" ,databaseMetaData.getDatabaseProductVersion()); logger.info("DatabaseProductVersion: {}" ,databaseMetaData.getDatabaseProductVersion());
logger.trace("DatabaseMajorVersion : {}" , databaseMetaData.getDatabaseMajorVersion()); logger.trace("DatabaseMajorVersion : {}" , databaseMetaData.getDatabaseMajorVersion());
logger.trace("DatabaseMinorVersion : {}" ,databaseMetaData.getDatabaseMinorVersion()); logger.trace("DatabaseMinorVersion : {}" ,databaseMetaData.getDatabaseMinorVersion());
logger.trace("supportsTransactions : {}" , databaseMetaData.supportsTransactions()); logger.trace("supportsTransactions : {}" , databaseMetaData.supportsTransactions());
@ -113,13 +110,12 @@ public class InitializeContext extends HttpServlet {
logger.trace("JDBCMinorVersion : {}" ,databaseMetaData.getJDBCMinorVersion()); logger.trace("JDBCMinorVersion : {}" ,databaseMetaData.getJDBCMinorVersion());
logger.trace("DriverName : {}" ,databaseMetaData.getDriverName()); logger.trace("DriverName : {}" ,databaseMetaData.getDriverName());
logger.trace("DriverVersion : {}" ,databaseMetaData.getDriverVersion()); logger.trace("DriverVersion : {}" ,databaseMetaData.getDriverVersion());
logger.debug(""); logger.info("");
logger.debug("DBMS URL : {}" ,databaseMetaData.getURL()); logger.info("DBMS URL : {}" ,databaseMetaData.getURL());
logger.debug("UserName : {}" ,databaseMetaData.getUserName()); logger.info("UserName : {}" ,databaseMetaData.getUserName());
logger.debug(WebConstants.DELIMITER); logger.info(WebConstants.DELIMITER);
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace();
logger.error("DatabaseMetaData Variables Error .",e); logger.error("DatabaseMetaData Variables Error .",e);
} }
} }

View File

@ -60,14 +60,13 @@ import jakarta.servlet.http.HttpSession;
* *
*/ */
public final class WebContext { public final class WebContext {
static final Logger _logger = LoggerFactory.getLogger(WebContext.class);
final static Logger _logger = LoggerFactory.getLogger(WebContext.class);
public static StandardEnvironment properties; public static StandardEnvironment properties;
public static ApplicationContext applicationContext; public static ApplicationContext applicationContext;
public final static String ipAddressRegex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"; public static final String ipAddressRegex = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
public static ArrayList<String> sessionAttributeNameList = new ArrayList<String>(); public static ArrayList<String> sessionAttributeNameList = new ArrayList<String>();
@ -146,7 +145,11 @@ public final class WebContext {
}else { }else {
return applicationContext.getBean(name,requiredType); return applicationContext.getBean(name,requiredType);
} }
}; }
public static String getProperty(String key) {
return properties.getProperty(key);
}
// below method is common HttpServlet method // below method is common HttpServlet method
/** /**
@ -155,13 +158,11 @@ public final class WebContext {
* @return HttpServletRequest * @return HttpServletRequest
*/ */
public static HttpServletRequest getRequest() { public static HttpServletRequest getRequest() {
return ((ServletRequestAttributes) return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
RequestContextHolder.getRequestAttributes()).getRequest();
} }
public static HttpServletResponse getResponse() { public static HttpServletResponse getResponse() {
return ((ServletRequestAttributes) return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
RequestContextHolder.getRequestAttributes()).getResponse();
} }
/** /**
@ -205,14 +206,14 @@ public final class WebContext {
Enumeration<String> headerNames = request.getHeaderNames(); Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) { while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement(); String key = headerNames.nextElement();
String value = request.getHeader(key); String value = request.getHeader(key);
_logger.info("Header key {} , value {}" , key, value); _logger.info("Header key {} , value {}" , key, value);
} }
Enumeration<String> parameterNames = request.getParameterNames(); Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) { while (parameterNames.hasMoreElements()) {
String key = (String) parameterNames.nextElement(); String key = parameterNames.nextElement();
String value = request.getParameter(key); String value = request.getParameter(key);
_logger.info("Parameter {} , value {}",key , value); _logger.info("Parameter {} , value {}",key , value);
} }
@ -233,7 +234,7 @@ public final class WebContext {
* @return HttpSession * @return HttpSession
*/ */
public static HttpSession getSession(boolean create) { public static HttpSession getSession(boolean create) {
System.out.println("new Session created"); _logger.info("new Session created");
return getRequest().getSession(create); return getRequest().getSession(create);
} }
@ -314,7 +315,7 @@ public final class WebContext {
} }
public static Map<String, String> getRequestParameterMap(HttpServletRequest request) { public static Map<String, String> getRequestParameterMap(HttpServletRequest request) {
Map<String, String> map = new HashMap<String, String>(); Map<String, String> map = new HashMap<>();
Map<String, String[]> parameters = request.getParameterMap(); Map<String, String[]> parameters = request.getParameterMap();
for (String key : parameters.keySet()) { for (String key : parameters.keySet()) {
String[] values = parameters.get(key); String[] values = parameters.get(key);
@ -333,8 +334,7 @@ public final class WebContext {
public static Cookie getCookie(HttpServletRequest request, String name) { public static Cookie getCookie(HttpServletRequest request, String name) {
Map<String, Cookie> cookieMap = getCookieAll(request); Map<String, Cookie> cookieMap = getCookieAll(request);
if (cookieMap.containsKey(name)) { if (cookieMap.containsKey(name)) {
Cookie cookie = (Cookie) cookieMap.get(name); return cookieMap.get(name);
return cookie;
} else { } else {
return null; return null;
} }
@ -347,7 +347,7 @@ public final class WebContext {
* @return Map * @return Map
*/ */
private static Map<String, Cookie> getCookieAll(HttpServletRequest request) { private static Map<String, Cookie> getCookieAll(HttpServletRequest request) {
Map<String, Cookie> cookieMap = new HashMap<String, Cookie>(); Map<String, Cookie> cookieMap = new HashMap<>();
Cookie[] cookies = request.getCookies(); Cookie[] cookies = request.getCookies();
if (null != cookies) { if (null != cookies) {
for (Cookie cookie : cookies) { for (Cookie cookie : cookies) {
@ -536,7 +536,7 @@ public final class WebContext {
version.append("-----------------------------------------------------------"); version.append("-----------------------------------------------------------");
version.append("+ MaxKey Community Edition "); version.append("+ MaxKey Community Edition ");
version.append("+ Single Sign On ( SSO ) "); version.append("+ Single Sign On ( SSO ) ");
version.append("+ Version {}".formatted( version.append("+ Version %s".formatted(
WebContext.properties.getProperty("application.formatted-version"))); WebContext.properties.getProperty("application.formatted-version")));
version.append("+"); version.append("+");
version.append("+ {}Copyright 2018 - {} https://www.maxkey.top/", version.append("+ {}Copyright 2018 - {} https://www.maxkey.top/",

View File

@ -79,7 +79,7 @@ public class GroupsService extends JpaService<Groups> implements Serializable {
return this.getMapper().queryByUserId(userId); return this.getMapper().queryByUserId(userId);
} }
public void refreshDynamicRoles(Groups dynamicGroup){ public void refreshDynamicGroups(Groups dynamicGroup){
if(dynamicGroup.getCategory().equals(Roles.Category.DYNAMIC)) { if(dynamicGroup.getCategory().equals(Roles.Category.DYNAMIC)) {
boolean isDynamicTimeSupport = false; boolean isDynamicTimeSupport = false;
boolean isBetweenEffectiveTime = false; boolean isBetweenEffectiveTime = false;
@ -90,9 +90,10 @@ public class GroupsService extends JpaService<Groups> implements Serializable {
LocalTime resumeTime = LocalTime.parse(dynamicGroup.getResumeTime()); LocalTime resumeTime = LocalTime.parse(dynamicGroup.getResumeTime());
LocalTime suspendTime = LocalTime.parse(dynamicGroup.getSuspendTime()); LocalTime suspendTime = LocalTime.parse(dynamicGroup.getSuspendTime());
_logger.info("currentTime: " + currentTime _logger.info("currentTime: {} , resumeTime : {} , suspendTime: {}"
+ " , resumeTime : " + resumeTime , currentTime
+ " , suspendTime: " + suspendTime); , resumeTime
, suspendTime);
isDynamicTimeSupport = true; isDynamicTimeSupport = true;
if(resumeTime.isBefore(currentTime) && currentTime.isBefore(suspendTime)) { if(resumeTime.isBefore(currentTime) && currentTime.isBefore(suspendTime)) {
@ -152,7 +153,7 @@ public class GroupsService extends JpaService<Groups> implements Serializable {
List<Groups> groupsList = queryDynamicGroups(group); List<Groups> groupsList = queryDynamicGroups(group);
for(Groups g : groupsList) { for(Groups g : groupsList) {
_logger.debug("role {}" , g); _logger.debug("role {}" , g);
refreshDynamicRoles(g); refreshDynamicGroups(g);
} }
} }
} }

View File

@ -26,5 +26,5 @@ export const CONSTS = {
REDIRECT_URI: 'redirect_uri', REDIRECT_URI: 'redirect_uri',
REMEMBER: 'remember_me', REMEMBER: 'remember_me',
TOKEN: '_token', TOKEN: '_token',
VERSION: 'v4.0.1 GA' VERSION: 'v4.0.2 GA'
}; };

View File

@ -106,6 +106,7 @@
<th nzAlign="center">{{ 'mxk.history.login.message' | i18n }}</th> <th nzAlign="center">{{ 'mxk.history.login.message' | i18n }}</th>
<th nzAlign="center">{{ 'mxk.history.login.loginType' | i18n }}</th> <th nzAlign="center">{{ 'mxk.history.login.loginType' | i18n }}</th>
<th nzAlign="center">{{ 'mxk.history.login.sourceIp' | i18n }}</th> <th nzAlign="center">{{ 'mxk.history.login.sourceIp' | i18n }}</th>
<th nzAlign="center">{{ 'mxk.history.login.location' | i18n }}</th>
<th nzAlign="center">{{ 'mxk.history.login.browser' | i18n }}</th> <th nzAlign="center">{{ 'mxk.history.login.browser' | i18n }}</th>
<th nzAlign="center">{{ 'mxk.history.login.platform' | i18n }}</th> <th nzAlign="center">{{ 'mxk.history.login.platform' | i18n }}</th>
<th nzAlign="center">{{ 'mxk.history.login.loginTime' | i18n }}</th> <th nzAlign="center">{{ 'mxk.history.login.loginTime' | i18n }}</th>
@ -122,6 +123,7 @@
<td nzAlign="left">{{ data.provider }}</td> <td nzAlign="left">{{ data.provider }}</td>
<td nzAlign="left">{{ data.loginType }}</td> <td nzAlign="left">{{ data.loginType }}</td>
<td nzAlign="left">{{ data.sourceIp }}</td> <td nzAlign="left">{{ data.sourceIp }}</td>
<td nzAlign="left">{{ data.location }}</td>
<td nzAlign="left">{{ data.browser }}</td> <td nzAlign="left">{{ data.browser }}</td>
<td nzAlign="left">{{ data.platform }}</td> <td nzAlign="left">{{ data.platform }}</td>
<td nzAlign="left">{{ data.loginTime }}</td> <td nzAlign="left">{{ data.loginTime }}</td>

View File

@ -19,5 +19,5 @@ export const CONSTS = {
INST: 'inst', INST: 'inst',
REDIRECT_URI: 'redirect_uri', REDIRECT_URI: 'redirect_uri',
REMEMBER: 'remember', REMEMBER: 'remember',
VERSION: 'v4.0.1 GA' VERSION: 'v4.0.2 GA'
}; };

View File

@ -649,6 +649,7 @@
"login.message": "message", "login.message": "message",
"login.loginType": "loginType", "login.loginType": "loginType",
"login.sourceIp": "sourceIp", "login.sourceIp": "sourceIp",
"login.location": "location",
"login.browser": "browser", "login.browser": "browser",
"login.loginTime": "loginTime", "login.loginTime": "loginTime",
"login.logoutTime": "logoutTime", "login.logoutTime": "logoutTime",

View File

@ -647,6 +647,7 @@
"login.message": "状态", "login.message": "状态",
"login.loginType": "登录方式", "login.loginType": "登录方式",
"login.sourceIp": "访问地址", "login.sourceIp": "访问地址",
"login.location": "归属地",
"login.browser": "浏览器", "login.browser": "浏览器",
"login.loginTime": "登录时间", "login.loginTime": "登录时间",
"login.logoutTime": "退出时间", "login.logoutTime": "退出时间",

View File

@ -648,6 +648,7 @@
"login.message": "狀態", "login.message": "狀態",
"login.loginType": "登錄方式", "login.loginType": "登錄方式",
"login.sourceIp": "訪問地址", "login.sourceIp": "訪問地址",
"login.location": "歸屬地",
"login.browser": "瀏覽器", "login.browser": "瀏覽器",
"login.loginTime": "登錄時間", "login.loginTime": "登錄時間",
"login.logoutTime": "退出時間", "login.logoutTime": "退出時間",

View File

@ -1,7 +1,7 @@
#端口号 #端口号
application: application:
name: maxkey-gateway-server name: maxkey-gateway-server
formatted-version: v4.0.1 GA formatted-version: v4.0.2 GA
server: server:
port: 9000 port: 9000
spring: spring:

View File

@ -58,7 +58,7 @@ public class MaxKeyApplication extends SpringBootServletInitializer {
logger.error("ServletException", e); logger.error("ServletException", e);
} }
logger.info("MaxKey at {}" , new DateTime()); logger.info("MaxKey at {}" , new DateTime());
logger.info("MaxKey Server Port {}" , WebContext.properties.getProperty("server.port")); logger.info("MaxKey Server Port {}" , WebContext.getProperty("server.port"));
logger.info("MaxKey started."); logger.info("MaxKey started.");
} }

View File

@ -16,7 +16,7 @@
#MaxKey Title and Version # #MaxKey Title and Version #
############################################################################ ############################################################################
application.title =MaxKey application.title =MaxKey
application.formatted-version =v4.0.1 GA application.formatted-version =v4.0.2 GA
#for dynamic service discovery #for dynamic service discovery
spring.application.name =maxkey spring.application.name =maxkey
############################################################################ ############################################################################

View File

@ -66,8 +66,7 @@ public class MaxKeyMgtApplication extends SpringBootServletInitializer {
logger.info("Start MaxKeyMgt Application ..."); logger.info("Start MaxKeyMgt Application ...");
ProductEnvironment.listEnvVars(); ProductEnvironment.listEnvVars();
ConfigurableApplicationContext applicationContext = ConfigurableApplicationContext applicationContext = SpringApplication.run(MaxKeyMgtApplication.class, args);
SpringApplication.run(MaxKeyMgtApplication.class, args);
InitializeContext initWebContext = new InitializeContext(applicationContext); InitializeContext initWebContext = new InitializeContext(applicationContext);
try { try {
@ -76,7 +75,7 @@ public class MaxKeyMgtApplication extends SpringBootServletInitializer {
logger.error("Exception ",e); logger.error("Exception ",e);
} }
logger.info("MaxKeyMgt at {}" , new DateTime()); logger.info("MaxKeyMgt at {}" , new DateTime());
logger.info("MaxKeyMgt Server Port {}" , WebContext.properties.getProperty("server.port")); logger.info("MaxKeyMgt Server Port {}" , WebContext.getProperty("server.port"));
logger.info("MaxKeyMgt started."); logger.info("MaxKeyMgt started.");
} }

View File

@ -79,7 +79,7 @@ public class MaxKeyMgtListenerConfig implements InitializingBean {
ConnectorsService connectorsService, ConnectorsService connectorsService,
JdbcTemplate jdbcTemplate, JdbcTemplate jdbcTemplate,
ApplicationConfig applicationConfig ApplicationConfig applicationConfig
) throws SchedulerException { ) {
if(applicationConfig.isProvisionSupport()) { if(applicationConfig.isProvisionSupport()) {
ProvisioningRunner runner = new ProvisioningRunner(connectorsService,jdbcTemplate); ProvisioningRunner runner = new ProvisioningRunner(connectorsService,jdbcTemplate);
ProvisioningRunnerThread runnerThread = new ProvisioningRunnerThread(runner); ProvisioningRunnerThread runnerThread = new ProvisioningRunnerThread(runner);

View File

@ -94,7 +94,7 @@ public class GroupsController {
group.setGroupCode(group.getId()); group.setGroupCode(group.getId());
} }
if (service.insert(group)) { if (service.insert(group)) {
service.refreshDynamicRoles(group); service.refreshDynamicGroups(group);
systemLog.insert( systemLog.insert(
ConstsEntryType.ROLE, ConstsEntryType.ROLE,
group, group,
@ -116,7 +116,7 @@ public class GroupsController {
} }
group.setInstId(currentUser.getInstId()); group.setInstId(currentUser.getInstId());
if (service.update(group)) { if (service.update(group)) {
service.refreshDynamicRoles(group); service.refreshDynamicGroups(group);
systemLog.insert( systemLog.insert(
ConstsEntryType.ROLE, ConstsEntryType.ROLE,
group, group,

View File

@ -16,7 +16,7 @@
#MaxKey Title and Version # #MaxKey Title and Version #
############################################################################ ############################################################################
application.title =MaxKey-Mgt application.title =MaxKey-Mgt
application.formatted-version =v4.0.1 GA application.formatted-version =v4.0.2 GA
#for dynamic service discovery #for dynamic service discovery
spring.application.name =maxkey-mgt spring.application.name =maxkey-mgt
############################################################################ ############################################################################

View File

@ -62,8 +62,7 @@ public class MaxKeyOpenApiApplication extends SpringBootServletInitializer {
logger.info("Start MaxKey OpenApi Application ..."); logger.info("Start MaxKey OpenApi Application ...");
ProductEnvironment.listEnvVars(); ProductEnvironment.listEnvVars();
ConfigurableApplicationContext applicationContext = ConfigurableApplicationContext applicationContext = SpringApplication.run(MaxKeyOpenApiApplication.class, args);
SpringApplication.run(MaxKeyOpenApiApplication.class, args);
InitializeContext initWebContext = new InitializeContext(applicationContext); InitializeContext initWebContext = new InitializeContext(applicationContext);
try { try {
@ -72,7 +71,7 @@ public class MaxKeyOpenApiApplication extends SpringBootServletInitializer {
logger.error("Exception ",e); logger.error("Exception ",e);
} }
logger.info("MaxKey OpenApi at {}" , new DateTime()); logger.info("MaxKey OpenApi at {}" , new DateTime());
logger.info("MaxKey OpenApi Server Port {}" , WebContext.properties.getProperty("server.port")); logger.info("MaxKey OpenApi Server Port {}" , WebContext.getProperty("server.port"));
logger.info("MaxKey OpenApi started."); logger.info("MaxKey OpenApi started.");
} }

View File

@ -16,7 +16,7 @@
#MaxKey Title and Version # #MaxKey Title and Version #
############################################################################ ############################################################################
application.title =MaxKey-OpenApi application.title =MaxKey-OpenApi
application.formatted-version =v4.0.1 GA application.formatted-version =v4.0.2 GA
#for dynamic service discovery #for dynamic service discovery
spring.application.name =maxkey-openapi spring.application.name =maxkey-openapi
############################################################################ ############################################################################