MaxKey 1 년 전
부모
커밋
ce87d209c1
23개의 변경된 파일74개의 추가작업 그리고 100개의 파일을 삭제
  1. 1 1
      build.gradle
  2. 1 1
      gradle.properties
  3. 4 5
      maxkey-core/src/main/java/org/dromara/maxkey/autoconfigure/ApplicationAutoConfiguration.java
  4. 17 39
      maxkey-core/src/main/java/org/dromara/maxkey/autoconfigure/MvcAutoConfiguration.java
  5. 1 4
      maxkey-core/src/main/java/org/dromara/maxkey/configuration/ApplicationConfig.java
  6. 9 13
      maxkey-core/src/main/java/org/dromara/maxkey/web/InitializeContext.java
  7. 16 16
      maxkey-core/src/main/java/org/dromara/maxkey/web/WebContext.java
  8. 6 5
      maxkey-persistence/src/main/java/org/dromara/maxkey/persistence/service/GroupsService.java
  9. 1 1
      maxkey-web-frontend/maxkey-web-app/src/app/shared/consts.ts
  10. 2 0
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/audit/audit-logins/audit-logins.component.html
  11. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/shared/consts.ts
  12. 1 0
      maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/en-US.json
  13. 1 0
      maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-CN.json
  14. 1 0
      maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-TW.json
  15. 1 1
      maxkey-webs/maxkey-gataway/src/main/resources/application.yml
  16. 1 1
      maxkey-webs/maxkey-web-maxkey/src/main/java/org/dromara/maxkey/MaxKeyApplication.java
  17. 1 1
      maxkey-webs/maxkey-web-maxkey/src/main/resources/application.properties
  18. 2 3
      maxkey-webs/maxkey-web-mgt/src/main/java/org/dromara/maxkey/MaxKeyMgtApplication.java
  19. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/dromara/maxkey/autoconfigure/MaxKeyMgtListenerConfig.java
  20. 2 2
      maxkey-webs/maxkey-web-mgt/src/main/java/org/dromara/maxkey/web/idm/contorller/GroupsController.java
  21. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/resources/application.properties
  22. 2 3
      maxkey-webs/maxkey-web-openapi/src/main/java/org/dromara/maxkey/MaxKeyOpenApiApplication.java
  23. 1 1
      maxkey-webs/maxkey-web-openapi/src/main/resources/application.properties

+ 1 - 1
build.gradle

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

+ 1 - 1
gradle.properties

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

+ 4 - 5
maxkey-core/src/main/java/org/dromara/maxkey/autoconfigure/ApplicationAutoConfiguration.java

@@ -89,7 +89,7 @@ public class ApplicationAutoConfiguration  implements InitializingBean {
     @Bean
     public PasswordEncoder passwordEncoder(
     		@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("plain", NoOpPasswordEncoder.getInstance());
         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.machineId:0}") int machineId) {
     	IdGenerator idGenerator = new IdGenerator(strategy);
-    	SnowFlakeId SnowFlakeId = new SnowFlakeId(datacenterId,machineId);
-    	idGenerator.setSnowFlakeId(SnowFlakeId);
+    	SnowFlakeId snowFlakeId = new SnowFlakeId(datacenterId,machineId);
+    	idGenerator.setSnowFlakeId(snowFlakeId);
     	WebContext.idGenerator = idGenerator;
         return idGenerator;
     }
@@ -184,14 +184,13 @@ public class ApplicationAutoConfiguration  implements InitializingBean {
     @Bean
     public MomentaryService momentaryService(
     		RedisConnectionFactory redisConnFactory,
-    		@Value("${maxkey.server.persistence}") int persistence) throws JOSEException {
+    		@Value("${maxkey.server.persistence}") int persistence) {
     	MomentaryService momentaryService;
     	if (persistence == ConstsPersistence.REDIS) {
     		momentaryService = new RedisMomentaryService(redisConnFactory);
     	}else {
     		momentaryService = new InMemoryMomentaryService();
     	}
-    	
     	return momentaryService;
     }
     

+ 17 - 39
maxkey-core/src/main/java/org/dromara/maxkey/autoconfigure/MvcAutoConfiguration.java

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

+ 1 - 4
maxkey-core/src/main/java/org/dromara/maxkey/configuration/ApplicationConfig.java

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

+ 9 - 13
maxkey-core/src/main/java/org/dromara/maxkey/web/InitializeContext.java

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

+ 16 - 16
maxkey-core/src/main/java/org/dromara/maxkey/web/WebContext.java

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

+ 6 - 5
maxkey-persistence/src/main/java/org/dromara/maxkey/persistence/service/GroupsService.java

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

+ 1 - 1
maxkey-web-frontend/maxkey-web-app/src/app/shared/consts.ts

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

+ 2 - 0
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/audit/audit-logins/audit-logins.component.html

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

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/shared/consts.ts

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

+ 1 - 0
maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/en-US.json

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

+ 1 - 0
maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-CN.json

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

+ 1 - 0
maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-TW.json

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

+ 1 - 1
maxkey-webs/maxkey-gataway/src/main/resources/application.yml

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

+ 1 - 1
maxkey-webs/maxkey-web-maxkey/src/main/java/org/dromara/maxkey/MaxKeyApplication.java

@@ -58,7 +58,7 @@ public class MaxKeyApplication extends SpringBootServletInitializer {
             logger.error("ServletException", e);
         }
         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.");
     }
 

+ 1 - 1
maxkey-webs/maxkey-web-maxkey/src/main/resources/application.properties

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

+ 2 - 3
maxkey-webs/maxkey-web-mgt/src/main/java/org/dromara/maxkey/MaxKeyMgtApplication.java

@@ -66,8 +66,7 @@ public class MaxKeyMgtApplication extends SpringBootServletInitializer {
 	    logger.info("Start MaxKeyMgt Application ...");
 	    ProductEnvironment.listEnvVars();
 	    
-		ConfigurableApplicationContext  applicationContext = 
-							SpringApplication.run(MaxKeyMgtApplication.class, args);
+		ConfigurableApplicationContext  applicationContext = SpringApplication.run(MaxKeyMgtApplication.class, args);
 		InitializeContext initWebContext = new InitializeContext(applicationContext);
 		
 		try {
@@ -76,7 +75,7 @@ public class MaxKeyMgtApplication extends SpringBootServletInitializer {
 			logger.error("Exception ",e);
 		}
 		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.");
 		
 	}

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/dromara/maxkey/autoconfigure/MaxKeyMgtListenerConfig.java

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

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/java/org/dromara/maxkey/web/idm/contorller/GroupsController.java

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

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/resources/application.properties

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

+ 2 - 3
maxkey-webs/maxkey-web-openapi/src/main/java/org/dromara/maxkey/MaxKeyOpenApiApplication.java

@@ -62,8 +62,7 @@ public class MaxKeyOpenApiApplication extends SpringBootServletInitializer {
 	    logger.info("Start MaxKey OpenApi Application ...");
 	    ProductEnvironment.listEnvVars();
 	    
-		ConfigurableApplicationContext  applicationContext = 
-							SpringApplication.run(MaxKeyOpenApiApplication.class, args);
+		ConfigurableApplicationContext  applicationContext = SpringApplication.run(MaxKeyOpenApiApplication.class, args);
 		InitializeContext initWebContext = new InitializeContext(applicationContext);
 		
 		try {
@@ -72,7 +71,7 @@ public class MaxKeyOpenApiApplication extends SpringBootServletInitializer {
 			logger.error("Exception ",e);
 		}
 		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.");
 		
 	}

+ 1 - 1
maxkey-webs/maxkey-web-openapi/src/main/resources/application.properties

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