MaxKey 3 年之前
父节点
当前提交
a2740e15de
共有 61 个文件被更改,包括 955 次插入1169 次删除
  1. 1 5
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java
  2. 4 9
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java
  3. 1 1
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/annotation/CurrentUser.java
  4. 1 0
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/annotation/package-info.java
  5. 0 1
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/interceptor/package-info.java
  6. 16 14
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/realm/AbstractAuthenticationRealm.java
  7. 3 1
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/CurrentUserMethodArgumentResolver.java
  8. 23 16
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/SessionListenerAdapter.java
  9. 3 1
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/SessionSecurityContextHolderStrategy.java
  10. 1 1
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/interceptor/PermissionAdapter.java
  11. 1 0
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/interceptor/package-info.java
  12. 1 0
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/package-info.java
  13. 11 0
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java
  14. 0 11
      maxkey-core/src/main/java/org/maxkey/autoconfigure/MvcAutoConfiguration.java
  15. 11 1
      maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java
  16. 0 4
      maxkey-core/src/main/java/org/maxkey/web/InitializeContext.java
  17. 0 2
      maxkey-core/src/main/java/org/maxkey/web/WebConstants.java
  18. 0 2
      maxkey-core/src/main/java/org/maxkey/web/WebContext.java
  19. 11 9
      maxkey-persistence/src/main/java/org/maxkey/persistence/service/GroupsService.java
  20. 4 2
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/GroupMemberMapper.xml
  21. 1 4
      maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/historys/contorller/LoginSessionController.java
  22. 1 1
      maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java
  23. 10 4
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java
  24. 2 2
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/GroupMemberController.java
  25. 2 2
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/GroupPrivilegesController.java
  26. 115 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/GroupsController.java
  27. 12 17
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java
  28. 1 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/package-info.java
  29. 0 150
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/AdaptersController.java
  30. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/AccountsStrategyController.java
  31. 106 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/AdaptersController.java
  32. 80 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/EmailSendersController.java
  33. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/InstitutionsController.java
  34. 74 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/LdapContextController.java
  35. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/LocalizationController.java
  36. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/NoticesController.java
  37. 104 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/PasswordPolicyController.java
  38. 74 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/SmsProviderController.java
  39. 115 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/SocialsProviderController.java
  40. 27 53
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/SynchronizersController.java
  41. 1 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/package-info.java
  42. 4 4
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/DashboardController.java
  43. 0 93
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/EmailSendersController.java
  44. 0 151
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/GroupsController.java
  45. 0 87
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LdapContextController.java
  46. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LoginEndpoint.java
  47. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java
  48. 0 121
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/PasswordPolicyController.java
  49. 0 151
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/RolesController.java
  50. 0 86
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/SmsProviderController.java
  51. 0 144
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/SocialsProviderController.java
  52. 2 2
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/ConnectorHistoryController.java
  53. 2 2
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/LoginAppsHistoryController.java
  54. 2 2
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/LoginHistoryController.java
  55. 2 2
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/SynchronizerHistoryController.java
  56. 2 2
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/SystemLogsController.java
  57. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/PermissionsController.java
  58. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/ResourcesController.java
  59. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/RoleMemberController.java
  60. 114 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/RolesController.java
  61. 1 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/package-info.java

+ 1 - 5
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java

@@ -118,7 +118,7 @@ public abstract class AbstractAuthenticationProvider {
         
         changeSession(authentication);
         
-        authenticationRealm.insertLoginHistory( WebContext.getUserInfo(), 
+        authenticationRealm.insertLoginHistory(((SigninPrincipal) authentication.getPrincipal()).getUserInfo(), 
 						        				ConstsLoginType.LOCAL, 
 								                "", 
 								                "xe00000004", 
@@ -141,10 +141,6 @@ public abstract class AbstractAuthenticationProvider {
         for(String attributeName : WebContext.sessionAttributeNameList) {
             WebContext.setAttribute(attributeName, sessionAttributeMap.get(attributeName));
         }
-        
-        _logger.debug("Login Success Session {} Mapping to user Session {}.",
-                        WebContext.getSession().getId(),
-                        WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID));
     }
    
 

+ 4 - 9
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java

@@ -189,6 +189,7 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
                 this.applicationConfig.getBaseDomainName(), 
                 WebConstants.ONLINE_TICKET_NAME, 
                 onlineTickitId);
+        userInfo.setOnlineTicket(currentUserSessionId);
         
         SigninPrincipal signinPrincipal = new SigninPrincipal(userInfo);
         //set OnlineTicket
@@ -218,20 +219,14 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
         
         onlineTicket.setAuthentication(authenticationToken);
         
+        //store onlineTicket
         this.onlineTicketServices.store(onlineTickitId, onlineTicket);
         
         /*
-         *  put userInfo to current session context
+         *  put Authentication to current session context
          */
-        WebContext.setUserInfo(userInfo);
-        
         WebContext.setAuthentication(authenticationToken);
-        
-        WebContext.setAttribute(WebConstants.CURRENT_USER_SESSION_ID, currentUserSessionId);
-        
-        if(!WebContext.getInst(WebContext.getRequest()).equalsIgnoreCase(userInfo.getInstId())){
-        	//TODO :
-        }
+     
         return authenticationToken;
     }
   

+ 1 - 1
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/CurrentUser.java → maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/annotation/CurrentUser.java

@@ -1,4 +1,4 @@
-package org.maxkey.authn;
+package org.maxkey.authn.annotation;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;

+ 1 - 0
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/annotation/package-info.java

@@ -0,0 +1 @@
+package org.maxkey.authn.annotation;

+ 0 - 1
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/interceptor/package-info.java

@@ -1 +0,0 @@
-package org.maxkey.authn.interceptor;

+ 16 - 14
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/realm/AbstractAuthenticationRealm.java

@@ -22,6 +22,7 @@ import java.util.Date;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import org.maxkey.authn.SigninPrincipal;
 import org.maxkey.authn.realm.ldap.LdapAuthenticationRealmService;
 import org.maxkey.authn.support.rememberme.AbstractRemeberMeService;
 import org.maxkey.entity.Groups;
@@ -38,6 +39,7 @@ import org.maxkey.web.ipregion.IpRegionFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.security.core.Authentication;
 import org.springframework.security.core.GrantedAuthority;
 
 /**
@@ -135,9 +137,10 @@ public abstract class AbstractAuthenticationRealm {
         HistoryLogin historyLogin = new HistoryLogin();
         historyLogin.setSessionId(WebContext.genId());
         historyLogin.setSessionStatus(7);
-        if(WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID) != null) {
-            historyLogin.setSessionStatus(1);
-            historyLogin.setSessionId(WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID).toString());
+        Authentication  authentication  = (Authentication ) WebContext.getAttribute(WebConstants.AUTHENTICATION);
+        if(authentication.getPrincipal() instanceof SigninPrincipal) {
+        	  historyLogin.setSessionStatus(1);
+              historyLogin.setSessionId(userInfo.getOnlineTicket());
         }
         
         _logger.debug("user session id is {} . ",historyLogin.getSessionId());
@@ -174,24 +177,23 @@ public abstract class AbstractAuthenticationRealm {
      * @return
      */
     public boolean logout(HttpServletResponse response) {
-        if (isAuthenticated()) {
-            Object sessionIdAttribute = WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID);
-            UserInfo userInfo = WebContext.getUserInfo();
+    	 Authentication  authentication  = (Authentication ) WebContext.getAttribute(WebConstants.AUTHENTICATION);
+    	 
+         if(authentication != null && authentication.getPrincipal() instanceof SigninPrincipal) {
+         	SigninPrincipal signinPrincipal = ((SigninPrincipal) authentication.getPrincipal());
+         	UserInfo userInfo = signinPrincipal.getUserInfo();
             userInfo.setLastLogoffTime(DateUtils.formatDateTime(new Date()));
             
-            if (sessionIdAttribute != null) {
-                remeberMeService.removeRemeberMe(response);
+            remeberMeService.removeRemeberMe(response);
+
+            loginHistoryRepository.logoff(userInfo.getLastLogoffTime(), signinPrincipal.getOnlineTicket().getTicketId());
 
-                loginHistoryRepository.logoff(userInfo.getLastLogoffTime(), sessionIdAttribute.toString());
-            }
             
             loginRepository.updateLastLogoff(userInfo);
             
-            _logger.debug("Session " + WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID) + ", user "
+            _logger.debug("Session " + signinPrincipal.getOnlineTicket().getTicketId() + ", user "
                     + userInfo.getUsername() + " Logout, datetime " + userInfo.getLastLogoffTime() + " .");
-          //remove login user session id
-            WebContext.removeAttribute(WebConstants.CURRENT_USER_SESSION_ID);
-        }
+         }
         return true;
 
     }

+ 3 - 1
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/CurrentUserMethodArgumentResolver.java → maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/CurrentUserMethodArgumentResolver.java

@@ -1,5 +1,7 @@
-package org.maxkey.authn;
+package org.maxkey.authn.web;
 
+import org.maxkey.authn.SigninPrincipal;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.entity.UserInfo;
 import org.maxkey.web.WebConstants;
 import org.springframework.core.MethodParameter;

+ 23 - 16
maxkey-core/src/main/java/org/maxkey/web/SessionListenerAdapter.java → maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/SessionListenerAdapter.java

@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.maxkey.web;
+package org.maxkey.authn.web;
 
 import java.util.Date;
 
@@ -23,12 +23,16 @@ import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
 
 import org.apache.mybatis.jpa.util.WebContext;
+import org.maxkey.authn.SigninPrincipal;
 import org.maxkey.entity.UserInfo;
 import org.maxkey.persistence.repository.LoginHistoryRepository;
 import org.maxkey.persistence.repository.LoginRepository;
 import org.maxkey.util.DateUtils;
+import org.maxkey.web.WebConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
 
 @WebListener
 public class SessionListenerAdapter implements HttpSessionListener {
@@ -57,6 +61,8 @@ public class SessionListenerAdapter implements HttpSessionListener {
         	loginHistoryRepository = (LoginHistoryRepository)WebContext.getBean("loginHistoryRepository");
             _logger.debug("SessionListenerAdapter function inited . ");
         }
+        _logger.info("SecurityContextHolder StrategyName " + SessionSecurityContextHolderStrategy.class.getCanonicalName());
+        SecurityContextHolder.setStrategyName(SessionSecurityContextHolderStrategy.class.getCanonicalName());
     }
     /**
      * session Created
@@ -72,21 +78,22 @@ public class SessionListenerAdapter implements HttpSessionListener {
     @Override
     public void sessionDestroyed(HttpSessionEvent sessionEvent) {
         HttpSession session = sessionEvent.getSession();
-        Object sessionIdAttribute = session.getAttribute(WebConstants.CURRENT_USER_SESSION_ID);
-        _logger.trace("session Id : " + session.getId());
-        if(sessionIdAttribute != null) {
-            init();
-            UserInfo userInfo = (UserInfo)session.getAttribute(WebConstants.CURRENT_USER);
-            userInfo.setLastLogoffTime(DateUtils.formatDateTime(new Date()));
-            loginRepository.updateLastLogoff(userInfo);
-            loginHistoryRepository.logoff(userInfo.getLastLogoffTime(), sessionIdAttribute.toString());
-            
-            _logger.debug(
-                    "session {} Destroyed as {} userId : {} , username : {}" ,
-                    sessionIdAttribute,
-                    userInfo.getLastLogoffTime(),
-                    userInfo.getId(),
-                    userInfo.getUsername());
+        Authentication  authentication  = (Authentication ) session.getAttribute(WebConstants.AUTHENTICATION);
+        if(authentication != null && authentication.getPrincipal() instanceof SigninPrincipal) {
+        	SigninPrincipal signinPrincipal = ((SigninPrincipal) authentication.getPrincipal());
+        	_logger.trace("session Id : " + session.getId());
+        	init();
+        	UserInfo userInfo = signinPrincipal.getUserInfo();
+        	userInfo.setLastLogoffTime(DateUtils.formatDateTime(new Date()));
+        	loginRepository.updateLastLogoff(userInfo);
+        	loginHistoryRepository.logoff(userInfo.getLastLogoffTime(), userInfo.getOnlineTicket());
+          
+        	_logger.debug(
+                  "session {} Destroyed as {} userId : {} , username : {}" ,
+                  userInfo.getOnlineTicket(),
+                  userInfo.getLastLogoffTime(),
+                  userInfo.getId(),
+                  userInfo.getUsername());
         }
         
     }

+ 3 - 1
maxkey-core/src/main/java/org/maxkey/web/SessionSecurityContextHolderStrategy.java → maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/SessionSecurityContextHolderStrategy.java

@@ -15,8 +15,10 @@
  */
  
 
-package org.maxkey.web;
+package org.maxkey.authn.web;
 
+import org.maxkey.web.WebConstants;
+import org.maxkey.web.WebContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.core.Authentication;

+ 1 - 1
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/interceptor/PermissionAdapter.java → maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/interceptor/PermissionAdapter.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.authn.interceptor;
+package org.maxkey.authn.web.interceptor;
 
 import javax.servlet.RequestDispatcher;
 import javax.servlet.http.HttpServletRequest;

+ 1 - 0
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/interceptor/package-info.java

@@ -0,0 +1 @@
+package org.maxkey.authn.web.interceptor;

+ 1 - 0
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/package-info.java

@@ -0,0 +1 @@
+package org.maxkey.authn.web;

+ 11 - 0
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java

@@ -26,6 +26,7 @@ import org.maxkey.authn.online.OnlineTicketServiceFactory;
 import org.maxkey.authn.realm.AbstractAuthenticationRealm;
 import org.maxkey.authn.support.rememberme.AbstractRemeberMeService;
 import org.maxkey.authn.support.rememberme.RemeberMeServiceFactory;
+import org.maxkey.authn.web.SessionListenerAdapter;
 import org.maxkey.configuration.ApplicationConfig;
 import org.maxkey.configuration.AuthJwkConfig;
 import org.maxkey.constants.ConstsPersistence;
@@ -151,6 +152,16 @@ public class AuthenticationAutoConfiguration  implements InitializingBean {
         return onlineTicketService;
     }
     
+    @Bean(name = "sessionListenerAdapter")
+    public SessionListenerAdapter sessionListenerAdapter(
+                LoginRepository loginRepository,
+                LoginHistoryRepository loginHistoryRepository
+            ) {
+        SessionListenerAdapter sessionListenerAdapter =
+                new SessionListenerAdapter(loginRepository,loginHistoryRepository);
+        return sessionListenerAdapter;
+    }
+    
     @Override
     public void afterPropertiesSet() throws Exception {
         

+ 0 - 11
maxkey-core/src/main/java/org/maxkey/autoconfigure/MvcAutoConfiguration.java

@@ -28,7 +28,6 @@ import org.maxkey.constants.ConstsTimeInterval;
 import org.maxkey.persistence.repository.InstitutionsRepository;
 import org.maxkey.persistence.repository.LoginHistoryRepository;
 import org.maxkey.persistence.repository.LoginRepository;
-import org.maxkey.web.SessionListenerAdapter;
 import org.maxkey.web.WebXssRequestFilter;
 import org.maxkey.web.WebInstRequestFilter;
 import org.slf4j.Logger;
@@ -314,16 +313,6 @@ public class MvcAutoConfiguration implements InitializingBean , WebMvcConfigurer
         return registrationBean;
     }
     
-    @Bean(name = "sessionListenerAdapter")
-    public SessionListenerAdapter sessionListenerAdapter(
-                LoginRepository loginRepository,
-                LoginHistoryRepository loginHistoryRepository
-            ) {
-        SessionListenerAdapter sessionListenerAdapter =
-                new SessionListenerAdapter(loginRepository,loginHistoryRepository);
-        return sessionListenerAdapter;
-    }
-    
     @Override
     public void afterPropertiesSet() throws Exception {
         

+ 11 - 1
maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java

@@ -48,6 +48,8 @@ public class UserInfo extends JpaBaseEntity {
     
     public  static final String DEFAULT_PASSWORD_SUFFIX = "MaxKey@888";
     
+    String onlineTicket;
+    
     //
     @Id
     @Column
@@ -385,7 +387,15 @@ public class UserInfo extends JpaBaseEntity {
         this.id = id;
     }
 
-    /**
+    public String getOnlineTicket() {
+		return onlineTicket;
+	}
+
+	public void setOnlineTicket(String onlineTicket) {
+		this.onlineTicket = onlineTicket;
+	}
+
+	/**
      * @param username
      */
     public UserInfo(String username) {

+ 0 - 4
maxkey-core/src/main/java/org/maxkey/web/InitializeContext.java

@@ -40,7 +40,6 @@ import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
 import org.springframework.core.env.PropertySource;
 import org.springframework.core.env.StandardEnvironment;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 
 /**
@@ -63,9 +62,6 @@ public class InitializeContext extends HttpServlet {
     public void init(ServletConfig config) throws ServletException {
         super.init(config);
         
-        _logger.info("SecurityContextHolder StrategyName " + SessionSecurityContextHolderStrategy.class.getCanonicalName());
-        SecurityContextHolder.setStrategyName(SessionSecurityContextHolderStrategy.class.getCanonicalName());
-        
         WebContext.applicationContext = applicationContext;
         
         org.apache.mybatis.jpa.util.WebContext.applicationContext = applicationContext;

+ 0 - 2
maxkey-core/src/main/java/org/maxkey/web/WebConstants.java

@@ -31,8 +31,6 @@ public class WebConstants {
 
     public static final  String CURRENT_USER = "current_user";
 
-    public static final  String CURRENT_USER_SESSION_ID = "current_user_session_id";
-
     public static final  String CURRENT_COMPANY = "current_user_company";
 
     public static final  String CURRENT_DEPARTMENT = "current_user_department";

+ 0 - 2
maxkey-core/src/main/java/org/maxkey/web/WebContext.java

@@ -84,7 +84,6 @@ public final class WebContext {
         
         sessionAttributeNameList.add(WebConstants.CURRENT_USER);
         sessionAttributeNameList.add(WebConstants.CURRENT_USER_PASSWORD_SET_TYPE);
-        sessionAttributeNameList.add(WebConstants.CURRENT_USER_SESSION_ID);
         
         sessionAttributeNameList.add(WebConstants.CURRENT_INST);
         
@@ -100,7 +99,6 @@ public final class WebContext {
         
         logoutAttributeNameList.add(WebConstants.CURRENT_USER);
         logoutAttributeNameList.add(WebConstants.CURRENT_USER_PASSWORD_SET_TYPE);
-        logoutAttributeNameList.add(WebConstants.CURRENT_USER_SESSION_ID);
         
         
         logoutAttributeNameList.add(WebConstants.FIRST_SAVED_REQUEST_PARAMETER);

+ 11 - 9
maxkey-persistence/src/main/java/org/maxkey/persistence/service/GroupsService.java

@@ -80,7 +80,8 @@ public class GroupsService  extends JpaBaseService<Groups> implements Serializab
 	        boolean isDynamicTimeSupport = false;
 	        boolean isBetweenEffectiveTime = false;
 	        if(StringUtils.isNotBlank(dynamicGroup.getResumeTime())
-	                &&StringUtils.isNotBlank(dynamicGroup.getSuspendTime())) {
+	                &&StringUtils.isNotBlank(dynamicGroup.getSuspendTime())
+	                &&!dynamicGroup.getSuspendTime().equals("00:00")) {
 	            LocalTime currentTime = LocalDateTime.now().toLocalTime();
 	            LocalTime resumeTime = LocalTime.parse(dynamicGroup.getResumeTime());
 	            LocalTime suspendTime = LocalTime.parse(dynamicGroup.getSuspendTime());
@@ -100,16 +101,17 @@ public class GroupsService  extends JpaBaseService<Groups> implements Serializab
     	        dynamicGroup.setOrgIdsList("'"+dynamicGroup.getOrgIdsList().replace(",", "','")+"'");
     	    }
     	    String filters = dynamicGroup.getFilters();
-    	    if(StringUtils.filtersSQLInjection(filters.toLowerCase())) {  
-    	        _logger.info("filters include SQL Injection Attack Risk.");
-    	        return;
+    	    if(StringUtils.isNotBlank(filters)) {
+	    		if(StringUtils.filtersSQLInjection(filters.toLowerCase())) {  
+	    			_logger.info("filters include SQL Injection Attack Risk.");
+	    			return;
+	    		}
+	    		filters = filters.replace("&", " AND ");
+	    	    filters = filters.replace("|", " OR ");
+	    	    
+	    	    dynamicGroup.setFilters(filters);
     	    }
     	    
-    	    filters = filters.replace("&", " AND ");
-    	    filters = filters.replace("|", " OR ");
-    	    
-    	    dynamicGroup.setFilters(filters);
-    	    
     	    if(isDynamicTimeSupport) {
     	        if(isBetweenEffectiveTime) {
     	            groupMemberService.deleteDynamicGroupMember(dynamicGroup);

+ 4 - 2
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/GroupMemberMapper.xml

@@ -206,13 +206,15 @@
     		id,
     		groupid,
     		memberid,
-    		type
+    		type,
+    		instid
     	)
     	select 
     		concat('${id}',u.id) id,
     		'${id}' groupid,
     		u.id memberid,
-    		'USER-DYNAMIC' TYPE
+    		'USER-DYNAMIC' type,
+    		'${instId}' instid
     	from mxk_userinfo u
 		where not exists(
 				select  1 from mxk_group_member gm 

+ 1 - 4
maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/historys/contorller/LoginSessionController.java

@@ -29,7 +29,6 @@ import org.maxkey.persistence.repository.LoginRepository;
 import org.maxkey.persistence.service.HistoryLoginService;
 import org.maxkey.util.DateUtils;
 import org.maxkey.util.StringUtils;
-import org.maxkey.web.WebConstants;
 import org.maxkey.web.WebContext;
 import org.maxkey.web.message.Message;
 import org.maxkey.web.message.MessageType;
@@ -97,9 +96,7 @@ public class LoginSessionController {
         boolean isTerminated = false;
         try {
             String currentUserSessionId = "";
-            if(WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID) != null) {
-                currentUserSessionId = WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID).toString();
-            }
+           
             for(String sessionId : StringUtils.string2List(ids, ",")) {
                 _logger.trace("terminate session Id {} ",sessionId);
                 if(currentUserSessionId.contains(sessionId)) {

+ 1 - 1
maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java

@@ -83,7 +83,7 @@ public class HistoryLoginAppAdapter  implements AsyncHandlerInterceptor  {
         _logger.debug("postHandle");
        
         final Apps app = (Apps)WebContext.getAttribute(WebConstants.AUTHORIZE_SIGN_ON_APP);
-        String sessionId = (String)WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID);
+        String sessionId = "";//(String)WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID);
         final UserInfo userInfo = WebContext.getUserInfo();
         _logger.debug("sessionId : " + sessionId + " ,appId : " + app.getId());
         HistoryLoginApps historyLoginApps = new HistoryLoginApps();

+ 10 - 4
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java

@@ -20,12 +20,12 @@ package org.maxkey;
 import java.util.List;
 
 import org.maxkey.authn.AbstractAuthenticationProvider;
-import org.maxkey.authn.CurrentUserMethodArgumentResolver;
-import org.maxkey.authn.interceptor.PermissionAdapter;
 import org.maxkey.authn.support.jwt.HttpJwtEntryPoint;
 import org.maxkey.authn.support.jwt.JwtLoginService;
 import org.maxkey.authn.support.rememberme.AbstractRemeberMeService;
 import org.maxkey.authn.support.rememberme.HttpRemeberMeEntryPoint;
+import org.maxkey.authn.web.CurrentUserMethodArgumentResolver;
+import org.maxkey.authn.web.interceptor.PermissionAdapter;
 import org.maxkey.configuration.ApplicationConfig;
 import org.maxkey.web.interceptor.HistoryLogsAdapter;
 import org.maxkey.web.interceptor.RestApiPermissionAdapter;
@@ -126,13 +126,19 @@ public class MaxKeyMgtMvcConfig implements WebMvcConfigurer {
                 .addPathPatterns("/roles/**")
                 .addPathPatterns("/rolemembers/**")
                 .addPathPatterns("/resources/**")
+                
+                .addPathPatterns("/access/**")
+                .addPathPatterns("/access/**/**")
+                
                 .addPathPatterns("/permissions/**")
+                .addPathPatterns("/permissions/**/**")
+                
                 .addPathPatterns("/config/**")
                 .addPathPatterns("/config/**/**")
-                .addPathPatterns("/logs/**")
+                
                 .addPathPatterns("/historys/**")
                 .addPathPatterns("/historys/**/**")
-                .addPathPatterns("/session/**")
+                
                 .addPathPatterns("/socialsprovider/**")
                 .addPathPatterns("/accountsstrategy/**")
                 .addPathPatterns("/institutions/**")

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/GroupMemberController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/GroupMemberController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.access.contorller;
 
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
 import org.maxkey.constants.ConstsOperateMessage;
@@ -39,7 +39,7 @@ import org.springframework.web.servlet.ModelAndView;
 
 
 @Controller
-@RequestMapping(value={"/groupMember"})
+@RequestMapping(value={"/access/groupmembers"})
 public class GroupMemberController {
 	final static Logger _logger = LoggerFactory.getLogger(GroupMemberController.class);
 	

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/GroupPrivilegesController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/GroupPrivilegesController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.access.contorller;
 
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
 import org.maxkey.constants.ConstsOperateMessage;
@@ -38,7 +38,7 @@ import org.springframework.web.servlet.ModelAndView;
 
 
 @Controller
-@RequestMapping(value={"/groupPrivileges"})
+@RequestMapping(value={"/access/privileges"})
 public class GroupPrivilegesController {
 	final static Logger _logger = LoggerFactory.getLogger(GroupPrivilegesController.class);
 	

+ 115 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/GroupsController.java

@@ -0,0 +1,115 @@
+/*
+ * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.access.contorller;
+
+import org.apache.mybatis.jpa.persistence.JpaPageResults;
+import org.maxkey.authn.annotation.CurrentUser;
+import org.maxkey.entity.Groups;
+import org.maxkey.entity.Message;
+import org.maxkey.entity.UserInfo;
+import org.maxkey.persistence.service.GroupsService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+
+@Controller
+@RequestMapping(value={"/access/groups"})
+public class GroupsController {
+	final static Logger _logger = LoggerFactory.getLogger(GroupsController.class);
+	
+	@Autowired
+	GroupsService groupsService;
+	
+	@RequestMapping(value = { "/fetch" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	@ResponseBody
+	public ResponseEntity<?> fetch(
+			@ModelAttribute Groups groups,
+			@CurrentUser UserInfo currentUser) {
+		_logger.debug(""+groups);
+		groups.setInstId(currentUser.getInstId());
+		return new Message<JpaPageResults<Groups>>(
+				groupsService.queryPageResults(groups)).buildResponse();
+	}
+
+	@ResponseBody
+	@RequestMapping(value={"/query"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> query(@ModelAttribute Groups group,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-query  :" + group);
+		group.setInstId(currentUser.getInstId());
+		if (groupsService.load(group)!=null) {
+			 return new Message<Groups>(Message.SUCCESS).buildResponse();
+		} else {
+			 return new Message<Groups>(Message.FAIL).buildResponse();
+		}
+		
+	}
+	
+	@RequestMapping(value = { "/get/{id}" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> get(@PathVariable("id") String id,@CurrentUser UserInfo currentUser) {
+		Groups group=groupsService.get(id);
+		return new Message<Groups>(group).buildResponse();
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/add"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> insert(@RequestBody Groups group,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-Add  :" + group);
+		group.setInstId(currentUser.getInstId());
+		if (groupsService.insert(group)) {
+		    groupsService.refreshDynamicGroups(group);
+		    return new Message<Groups>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<Groups>(Message.FAIL).buildResponse();
+		}
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> update(@RequestBody Groups group,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-update  group :" + group);
+		group.setInstId(currentUser.getInstId());
+		if (groupsService.update(group)) {
+		    groupsService.refreshDynamicGroups(group);
+		    return new Message<Groups>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<Groups>(Message.FAIL).buildResponse();
+		}
+	}
+
+	@ResponseBody
+	@RequestMapping(value={"/delete"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> delete(@RequestParam("ids") String ids,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-delete ids : {}" , ids);
+		
+		if (groupsService.deleteBatch(ids)) {
+			 return new Message<Groups>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<Groups>(Message.FAIL).buildResponse();
+		}
+	}
+}

+ 12 - 17
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/LoginSessionController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java

@@ -15,12 +15,12 @@
  */
  
 
-package org.maxkey.web.historys.contorller;
+package org.maxkey.web.access.contorller;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.authn.CurrentUser;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.authn.online.OnlineTicketService;
 import org.maxkey.entity.HistoryLogin;
 import org.maxkey.entity.Message;
@@ -30,8 +30,6 @@ import org.maxkey.persistence.repository.LoginRepository;
 import org.maxkey.persistence.service.HistoryLoginService;
 import org.maxkey.util.DateUtils;
 import org.maxkey.util.StringUtils;
-import org.maxkey.web.WebConstants;
-import org.maxkey.web.WebContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,14 +44,14 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 /**
- * 登录日志查询.
+ * 登录会话管理.
  * 
  * @author Crystal.sea
  *
  */
 
 @Controller
-@RequestMapping(value = { "/session" })
+@RequestMapping(value = { "/access/session" })
 public class LoginSessionController {
     static final Logger _logger = LoggerFactory.getLogger(LoginSessionController.class);
 
@@ -66,7 +64,7 @@ public class LoginSessionController {
     LoginHistoryRepository loginHistoryRepository;
     
     @Autowired
-    OnlineTicketService onlineTicketServices;
+    OnlineTicketService onlineTicketService;
 
     /**
      * 查询登录日志.
@@ -74,15 +72,15 @@ public class LoginSessionController {
      * @param logsAuth
      * @return
      */
-    @RequestMapping(value = { "/sessionList/fetch" })
+    @RequestMapping(value = { "/fetch" })
     @ResponseBody
     public ResponseEntity<?> fetch(
     			@ModelAttribute("historyLogin") HistoryLogin historyLogin,
     			@CurrentUser UserInfo currentUser) {
         _logger.debug("history/session/fetch {}" , historyLogin);
-        historyLogin.setInstId(WebContext.getUserInfo().getInstId());
+        historyLogin.setInstId(currentUser.getInstId());
         return new Message<JpaPageResults<HistoryLogin>>(
-        			historyLoginService.queryPageResults(historyLogin)
+        			historyLoginService.queryOnlineSession(historyLogin)
         		).buildResponse();
     }
 
@@ -90,23 +88,19 @@ public class LoginSessionController {
     
     @ResponseBody
     @RequestMapping(value="/terminate")  
-    public ResponseEntity<?> deleteUsersById(@RequestParam("id") String ids,@CurrentUser UserInfo currentUser) {
+    public ResponseEntity<?> terminate(@RequestParam("ids") String ids,@CurrentUser UserInfo currentUser) {
         _logger.debug(ids);
         boolean isTerminated = false;
         try {
-            String currentUserSessionId = "";
-            if(WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID) != null) {
-                currentUserSessionId = WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID).toString();
-            }
             for(String sessionId : StringUtils.string2List(ids, ",")) {
                 _logger.trace("terminate session Id {} ",sessionId);
-                if(currentUserSessionId.contains(sessionId)) {
+                if(currentUser.getOnlineTicket().contains(sessionId)) {
                     continue;//skip current session
                 }
                 String lastLogoffTime = DateUtils.formatDateTime(new Date());
                 loginRepository.updateLastLogoff(currentUser);
                 loginHistoryRepository.logoff(lastLogoffTime, sessionId);
-                onlineTicketServices.remove("OT-" + sessionId);
+                onlineTicketService.remove("OT-" + sessionId);
             }
             isTerminated = true;
         }catch(Exception e) {
@@ -119,6 +113,7 @@ public class LoginSessionController {
         	return new Message<HistoryLogin>(Message.ERROR).buildResponse();
         }
     }
+    
     @InitBinder
     public void initBinder(WebDataBinder binder) {
         SimpleDateFormat dateFormat = new SimpleDateFormat(DateUtils.FORMAT_DATE_HH_MM_SS);

+ 1 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/package-info.java

@@ -0,0 +1 @@
+package org.maxkey.web.access.contorller;

+ 0 - 150
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/apps/contorller/AdaptersController.java

@@ -1,150 +0,0 @@
-/*
- * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-package org.maxkey.web.apps.contorller;
-
-import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.constants.ConstsOperateMessage;
-import org.maxkey.entity.apps.AppsAdapters;
-import org.maxkey.persistence.service.AppsAdaptersService;
-import org.maxkey.web.WebContext;
-import org.maxkey.web.message.Message;
-import org.maxkey.web.message.MessageType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
-
-
-@Controller
-@RequestMapping(value={"/apps/adapters"})
-public class AdaptersController {
-	final static Logger _logger = LoggerFactory.getLogger(AdaptersController.class);
-	
-	@Autowired
-	@Qualifier("appsAdaptersService")
-	AppsAdaptersService appsAdaptersService;
-
-	
-	
-	@RequestMapping(value={"/list"})
-	public ModelAndView rolesList(){
-		return new ModelAndView("apps/adapters/adaptersList");
-	}
-	
-	@RequestMapping(value={"/selectAdaptersList"})
-	public ModelAndView selectAdaptersList(@RequestParam(name="protocol",required=false) String protocol){
-		ModelAndView modelAndView=new ModelAndView("apps/adapters/selectAdaptersList");
-		modelAndView.addObject("protocol", protocol);
-		return modelAndView;
-	}
-	
-	
-	@RequestMapping(value = { "/grid" })
-	@ResponseBody
-	public JpaPageResults<AppsAdapters> queryDataGrid(@ModelAttribute("appsAdapter") AppsAdapters appsAdapter) {
-		_logger.debug(""+appsAdapter);
-		return appsAdaptersService.queryPageResults(appsAdapter);
-	}
-
-	
-	@RequestMapping(value = { "/forwardAdd" })
-	public ModelAndView forwardAdd() {
-		return new ModelAndView("apps/adapters/adapterAdd");
-	}
-	
-	@RequestMapping(value = { "/forwardUpdate/{id}" })
-	public ModelAndView forwardUpdate(@PathVariable("id") String id) {
-		ModelAndView modelAndView=new ModelAndView("apps/adapters/adapterUpdate");
-		AppsAdapters appsAdapter=appsAdaptersService.get(id);
-		modelAndView.addObject("model",appsAdapter);
-		return modelAndView;
-	}
-	
-	@ResponseBody
-	@RequestMapping(value={"/add"})
-	public Message insert(@ModelAttribute("appsAdapter") AppsAdapters appsAdapter) {
-		_logger.debug("-Add  :" + appsAdapter);
-		
-		if (appsAdaptersService.insert(appsAdapter)) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.error);
-		}
-		
-	}
-	
-	/**
-	 * 查询
-	 * @param role
-	 * @return
-	 */
-	@ResponseBody
-	@RequestMapping(value={"/query"}) 
-	public Message query(@ModelAttribute("appsAdapter") AppsAdapters appsAdapter) {
-		_logger.debug("-query  :" + appsAdapter);
-		if (appsAdaptersService.load(appsAdapter)!=null) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_ERROR),MessageType.error);
-		}
-		
-	}
-	
-	/**
-	 * 修改
-	 * @param role
-	 * @return
-	 */
-	@ResponseBody
-	@RequestMapping(value={"/update"})  
-	public Message update(@ModelAttribute("appsAdapter") AppsAdapters appsAdapter) {
-		_logger.debug("-update  appsAdapter :" + appsAdapter);
-		
-		if (appsAdaptersService.update(appsAdapter)) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_ERROR),MessageType.error);
-		}
-		
-	}
-	
-
-	@ResponseBody
-	@RequestMapping(value={"/delete"})
-	public Message delete(@ModelAttribute("appsAdapter") AppsAdapters appsAdapter) {
-		_logger.debug("-delete  appsAdapter :" + appsAdapter);
-		
-		if (appsAdaptersService.deleteBatch(appsAdapter.getId())) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.DELETE_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.DELETE_SUCCESS),MessageType.error);
-		}
-		
-	}
-}

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/AccountsStrategyController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/AccountsStrategyController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.config.contorller;
 
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
 import org.maxkey.constants.ConstsOperateMessage;

+ 106 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/AdaptersController.java

@@ -0,0 +1,106 @@
+/*
+ * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.config.contorller;
+
+import org.apache.mybatis.jpa.persistence.JpaPageResults;
+import org.maxkey.authn.annotation.CurrentUser;
+import org.maxkey.entity.Message;
+import org.maxkey.entity.UserInfo;
+import org.maxkey.entity.apps.AppsAdapters;
+import org.maxkey.persistence.service.AppsAdaptersService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+
+@Controller
+@RequestMapping(value={"/config/adapters"})
+public class AdaptersController {
+	final static Logger _logger = LoggerFactory.getLogger(AdaptersController.class);
+	
+	@Autowired
+	AppsAdaptersService appsAdaptersService;	
+	
+	@RequestMapping(value = { "/fetch" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	@ResponseBody
+	public ResponseEntity<?> fetch(@ModelAttribute AppsAdapters appsAdapter) {
+		_logger.debug(""+appsAdapter);
+		return new Message<JpaPageResults<AppsAdapters>>(
+				appsAdaptersService.queryPageResults(appsAdapter)).buildResponse();
+	}
+
+	@ResponseBody
+	@RequestMapping(value={"/query"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> query(@ModelAttribute AppsAdapters appsAdapter,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-query  :" + appsAdapter);
+		if (appsAdaptersService.load(appsAdapter)!=null) {
+			 return new Message<AppsAdapters>(Message.SUCCESS).buildResponse();
+		} else {
+			 return new Message<AppsAdapters>(Message.SUCCESS).buildResponse();
+		}
+	}
+	
+	@RequestMapping(value = { "/get/{id}" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> get(@PathVariable("id") String id) {
+		AppsAdapters appsAdapter=appsAdaptersService.get(id);
+		return new Message<AppsAdapters>(appsAdapter).buildResponse();
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/add"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> insert(@RequestBody  AppsAdapters appsAdapter,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-Add  :" + appsAdapter);
+		
+		if (appsAdaptersService.insert(appsAdapter)) {
+			return new Message<AppsAdapters>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<AppsAdapters>(Message.FAIL).buildResponse();
+		}
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> update(@RequestBody  AppsAdapters appsAdapter,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-update  :" + appsAdapter);
+		if (appsAdaptersService.update(appsAdapter)) {
+		    return new Message<AppsAdapters>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<AppsAdapters>(Message.FAIL).buildResponse();
+		}
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/delete"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> delete(@RequestParam("ids") String ids,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-delete  ids : {} " , ids);
+		if (appsAdaptersService.deleteBatch(ids)) {
+			 return new Message<AppsAdapters>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<AppsAdapters>(Message.FAIL).buildResponse();
+		}
+	}
+}

+ 80 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/EmailSendersController.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.config.contorller;
+
+import org.apache.commons.lang3.StringUtils;
+import org.maxkey.authn.annotation.CurrentUser;
+import org.maxkey.crypto.password.PasswordReciprocal;
+import org.maxkey.entity.EmailSenders;
+import org.maxkey.entity.Message;
+import org.maxkey.entity.UserInfo;
+import org.maxkey.persistence.service.EmailSendersService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping(value={"/config/emailsenders"})
+public class EmailSendersController {
+	final static Logger _logger = LoggerFactory.getLogger(EmailSendersController.class);
+	
+	@Autowired
+	private EmailSendersService emailSendersService;
+
+	@RequestMapping(value={"/get"})
+	public ResponseEntity<?> get(@CurrentUser UserInfo currentUser){
+		EmailSenders emailSenders = emailSendersService.get(currentUser.getInstId());
+		if(emailSenders != null && StringUtils.isNotBlank(emailSenders.getCredentials())) {
+			emailSenders.setCredentials(PasswordReciprocal.getInstance().decoder(emailSenders.getCredentials()));
+		}else {
+			emailSenders =new EmailSenders();
+			emailSenders.setProtocol("smtp");
+			emailSenders.setEncoding("utf-8");
+		}
+		return new Message<EmailSenders>(emailSenders).buildResponse();	
+	}
+
+	@RequestMapping(value={"/update"})
+	@ResponseBody
+	public ResponseEntity<?> update( @RequestBody  EmailSenders emailSenders,@CurrentUser UserInfo currentUser,BindingResult result) {
+		_logger.debug("update emailSenders : "+emailSenders);
+		emailSenders.setInstId(currentUser.getInstId());
+		emailSenders.setCredentials(PasswordReciprocal.getInstance().encode(emailSenders.getCredentials()));
+		if(StringUtils.isBlank(emailSenders.getId())) {
+			emailSenders.setId(emailSenders.getInstId());
+			if(emailSendersService.insert(emailSenders)) {
+				return new Message<EmailSenders>(Message.SUCCESS).buildResponse();
+			}else {
+				return new Message<EmailSenders>(Message.ERROR).buildResponse();
+			}
+		}else {
+			if(emailSendersService.update(emailSenders)) {
+				return new Message<EmailSenders>(Message.SUCCESS).buildResponse();
+			}else {
+				return new Message<EmailSenders>(Message.ERROR).buildResponse();
+			}
+		}
+		
+	}
+}

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/InstitutionsController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/InstitutionsController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.config.contorller;
 
 import org.maxkey.constants.ConstsOperateMessage;
 import org.maxkey.entity.Institutions;

+ 74 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/LdapContextController.java

@@ -0,0 +1,74 @@
+/*
+ * Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.config.contorller;
+
+import org.apache.commons.lang3.StringUtils;
+import org.maxkey.authn.annotation.CurrentUser;
+import org.maxkey.crypto.password.PasswordReciprocal;
+import org.maxkey.entity.LdapContext;
+import org.maxkey.entity.Message;
+import org.maxkey.entity.UserInfo;
+import org.maxkey.persistence.service.LdapContextService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping(value={"/config/ldapcontext"})
+public class LdapContextController {
+	final static Logger _logger = LoggerFactory.getLogger(LdapContextController.class);
+	
+	@Autowired
+	private LdapContextService ldapContextService;
+
+	@RequestMapping(value={"/get"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> get(@CurrentUser UserInfo currentUser){
+		LdapContext ldapContext = ldapContextService.get(currentUser.getInstId());
+		if(ldapContext != null && StringUtils.isNoneBlank(ldapContext.getCredentials())) {
+			ldapContext.setCredentials(PasswordReciprocal.getInstance().decoder(ldapContext.getCredentials()));
+		}
+		return new Message<LdapContext>(ldapContext).buildResponse();
+	}
+
+	@RequestMapping(value={"/update"})
+	@ResponseBody
+	public ResponseEntity<?> update( @RequestBody LdapContext ldapContext,@CurrentUser UserInfo currentUser,BindingResult result) {
+		_logger.debug("update ldapContext : "+ldapContext);
+		ldapContext.setCredentials(PasswordReciprocal.getInstance().encode(ldapContext.getCredentials()));
+		ldapContext.setInstId(currentUser.getInstId());
+		boolean updateResult = false;
+		if(StringUtils.isBlank(ldapContext.getId())) {
+			ldapContext.setId(ldapContext.getInstId());
+			updateResult = ldapContextService.insert(ldapContext);
+		}else {
+			updateResult = ldapContextService.update(ldapContext);
+		}
+		if(updateResult) {
+			return new Message<LdapContext>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<LdapContext>(Message.FAIL).buildResponse();
+		}
+	}
+}

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LocalizationController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/LocalizationController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.config.contorller;
 
 import org.apache.commons.lang3.StringUtils;
 import org.maxkey.constants.ConstsOperateMessage;

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/NoticesController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/NoticesController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.config.contorller;
 
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
 import org.maxkey.constants.ConstsOperateMessage;

+ 104 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/PasswordPolicyController.java

@@ -0,0 +1,104 @@
+/*
+ * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.config.contorller;
+
+import javax.validation.Valid;
+
+import org.maxkey.authn.annotation.CurrentUser;
+import org.maxkey.entity.Message;
+import org.maxkey.entity.PasswordPolicy;
+import org.maxkey.entity.UserInfo;
+import org.maxkey.persistence.service.PasswordPolicyService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Controller
+@RequestMapping(value={"/config/passwordpolicy"})
+public class PasswordPolicyController {
+	final static Logger _logger = LoggerFactory.getLogger(PasswordPolicyController.class);
+		
+	@Autowired
+	private PasswordPolicyService passwordPolicyService;
+	
+	@RequestMapping(value={"/get"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> get(@CurrentUser UserInfo currentUser){
+		PasswordPolicy passwordPolicy = passwordPolicyService.get(currentUser.getInstId());
+		return new Message<PasswordPolicy>(passwordPolicy).buildResponse();
+	}
+
+	@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> update(@Valid @RequestBody PasswordPolicy passwordPolicy,@CurrentUser UserInfo currentUser,BindingResult result) {
+		_logger.debug("updateRole passwordPolicy : "+passwordPolicy);
+		//Message message = this.validate(result, passwordPolicy);
+		
+		if(passwordPolicyService.update(passwordPolicy)) {
+			return new Message<PasswordPolicy>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<PasswordPolicy>(Message.ERROR).buildResponse();
+		}
+	}
+	
+	public Message validate(BindingResult result,PasswordPolicy passwordPolicy) {
+		if (result.hasErrors()) {
+			return new Message(result);
+		}
+		if(passwordPolicy.getMinLength() < 3) {
+			FieldError fe = new FieldError("passwordPolicy", "minLength",
+					passwordPolicy.getMinLength(), true,
+					new String[]{"ui.passwordpolicy.xe00000001"},//密码最小长度不能小于3位字符
+					null, null);
+			result.addError(fe);
+			return new Message(result);
+		}
+		if(passwordPolicy.getMinLength() > passwordPolicy.getMaxLength()) {
+			FieldError fe = new FieldError("passwordPolicy", "maxLength",
+					passwordPolicy.getMinLength(), true,
+					new String[]{"ui.passwordpolicy.xe00000002"},//密码最大长度不能小于最小长度
+					null, null);
+			result.addError(fe);
+			return new Message(result);
+		}
+		
+		if(passwordPolicy.getDigits() + passwordPolicy.getLowerCase() + passwordPolicy.getUpperCase() + passwordPolicy.getSpecialChar() < 2) {
+			FieldError fe = new FieldError("passwordPolicy", "specialChar",
+					2, true,
+					new String[]{"ui.passwordpolicy.xe00000003"},//密码包含小写字母、大写字母、数字、特殊字符的个数不能小于2
+					null, null);
+			result.addError(fe);
+			return new Message(result);
+		}
+		
+		if(passwordPolicy.getDigits() + passwordPolicy.getLowerCase() + passwordPolicy.getUpperCase() + passwordPolicy.getSpecialChar() > passwordPolicy.getMaxLength()) {
+			FieldError fe = new FieldError("passwordPolicy", "specialChar",
+					passwordPolicy.getMinLength(), true,
+					new String[]{"ui.passwordpolicy.xe00000004"},//密码包含小写字母、大写字母、数字、特殊字符的个数不能大于密码的最大长度
+					null, null);
+			result.addError(fe);
+			return new Message(result);
+		}
+		return null;
+	}
+}

+ 74 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/SmsProviderController.java

@@ -0,0 +1,74 @@
+/*
+ * Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.config.contorller;
+
+import org.apache.commons.lang3.StringUtils;
+import org.maxkey.authn.annotation.CurrentUser;
+import org.maxkey.crypto.password.PasswordReciprocal;
+import org.maxkey.entity.Message;
+import org.maxkey.entity.SmsProvider;
+import org.maxkey.entity.UserInfo;
+import org.maxkey.persistence.service.SmsProviderService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping(value={"/config/smsprovider"})
+public class SmsProviderController {
+	final static Logger _logger = LoggerFactory.getLogger(SmsProviderController.class);
+	
+	@Autowired
+	private SmsProviderService smsProviderService;
+
+	@RequestMapping(value={"/get"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> get(@CurrentUser UserInfo currentUser){
+		SmsProvider smsProvider = smsProviderService.get(currentUser.getInstId());
+		if(smsProvider != null && StringUtils.isNoneBlank(smsProvider.getId())) {
+			smsProvider.setAppSecret(PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()));
+		}
+		return new Message<SmsProvider>(smsProvider).buildResponse();
+	}
+
+	@RequestMapping(value={"/update"})
+	@ResponseBody
+	public ResponseEntity<?> update( @RequestBody SmsProvider smsProvider,@CurrentUser UserInfo currentUser,BindingResult result) {
+		_logger.debug("update smsProvider : "+smsProvider);
+		smsProvider.setAppSecret(PasswordReciprocal.getInstance().encode(smsProvider.getAppSecret()));
+		smsProvider.setInstId(currentUser.getInstId());
+		boolean updateResult = false;
+		if(StringUtils.isBlank(smsProvider.getId())) {
+			smsProvider.setId(smsProvider.getInstId());
+			updateResult = smsProviderService.insert(smsProvider);
+		}else {
+			updateResult = smsProviderService.update(smsProvider);
+		}
+		if(updateResult) {
+			return new Message<SmsProvider>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<SmsProvider>(Message.FAIL).buildResponse();
+		}
+	}
+}

+ 115 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/SocialsProviderController.java

@@ -0,0 +1,115 @@
+/*
+ * Copyright [2021] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.config.contorller;
+
+import org.apache.mybatis.jpa.persistence.JpaPageResults;
+import org.maxkey.authn.annotation.CurrentUser;
+import org.maxkey.crypto.password.PasswordReciprocal;
+import org.maxkey.entity.Message;
+import org.maxkey.entity.SocialsProvider;
+import org.maxkey.entity.UserInfo;
+import org.maxkey.persistence.service.SocialsProviderService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+
+@Controller
+@RequestMapping(value={"/config/socialsprovider"})
+public class SocialsProviderController {
+	final static Logger _logger = LoggerFactory.getLogger(SocialsProviderController.class);
+	
+	@Autowired
+	SocialsProviderService socialsProviderService;
+	
+	@RequestMapping(value = { "/fetch" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	@ResponseBody
+	public ResponseEntity<?> fetch(@ModelAttribute SocialsProvider socialsProvider,@CurrentUser UserInfo currentUser) {
+		_logger.debug(""+socialsProvider);
+		socialsProvider.setInstId(currentUser.getInstId());
+		return new Message<JpaPageResults<SocialsProvider>>(
+				socialsProviderService.queryPageResults(socialsProvider)).buildResponse();
+	}
+
+	@ResponseBody
+	@RequestMapping(value={"/query"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> query(@ModelAttribute SocialsProvider socialsProvider,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-query  :" + socialsProvider);
+		socialsProvider.setInstId(currentUser.getInstId());
+		if (socialsProviderService.load(socialsProvider)!=null) {
+			 return new Message<SocialsProvider>(Message.SUCCESS).buildResponse();
+		} else {
+			 return new Message<SocialsProvider>(Message.SUCCESS).buildResponse();
+		}
+	}
+	
+	@RequestMapping(value = { "/get/{id}" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> get(@PathVariable("id") String id) {
+		SocialsProvider socialsProvider=socialsProviderService.get(id);
+		socialsProvider.setClientSecret(PasswordReciprocal.getInstance().decoder(socialsProvider.getClientSecret()));
+		return new Message<SocialsProvider>(socialsProvider).buildResponse();
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/add"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> insert(@RequestBody  SocialsProvider socialsProvider,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-Add  :" + socialsProvider);
+		socialsProvider.setInstId(currentUser.getInstId());
+		socialsProvider.setClientSecret(PasswordReciprocal.getInstance().encode(socialsProvider.getClientSecret()));
+		if (socialsProviderService.insert(socialsProvider)) {
+			return new Message<SocialsProvider>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<SocialsProvider>(Message.FAIL).buildResponse();
+		}
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> update(@RequestBody  SocialsProvider socialsProvider,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-update  :" + socialsProvider);
+		socialsProvider.setInstId(currentUser.getInstId());
+		socialsProvider.setClientSecret(PasswordReciprocal.getInstance().encode(socialsProvider.getClientSecret()));
+		if (socialsProviderService.update(socialsProvider)) {
+		    return new Message<SocialsProvider>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<SocialsProvider>(Message.FAIL).buildResponse();
+		}
+	}
+	
+	
+	@ResponseBody
+	@RequestMapping(value={"/delete"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> delete(@RequestParam("ids") String ids,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-delete  ids : {} " , ids);
+		if (socialsProviderService.deleteBatch(ids)) {
+			 return new Message<SocialsProvider>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<SocialsProvider>(Message.FAIL).buildResponse();
+		}
+	}
+
+}

+ 27 - 53
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/SynchronizersController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/SynchronizersController.java

@@ -15,100 +15,73 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.config.contorller;
 
 import java.util.List;
 
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.constants.ConstsOperateMessage;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.crypto.password.PasswordReciprocal;
+import org.maxkey.entity.Message;
 import org.maxkey.entity.Synchronizers;
+import org.maxkey.entity.UserInfo;
 import org.maxkey.persistence.service.SynchronizersService;
 import org.maxkey.synchronizer.ISynchronizerService;
 import org.maxkey.util.StringUtils;
 import org.maxkey.web.WebContext;
-import org.maxkey.web.message.Message;
-import org.maxkey.web.message.MessageType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
-
 
 @Controller
-@RequestMapping(value={"/synchronizers"})
+@RequestMapping(value={"/config/synchronizers"})
 public class SynchronizersController {
 	final static Logger _logger = LoggerFactory.getLogger(SynchronizersController.class);
 	
 	@Autowired
-	@Qualifier("synchronizersService")
 	SynchronizersService synchronizersService;
 	
-	@RequestMapping(value={"/list"})
-	public ModelAndView groupsList(){
-		return new ModelAndView("synchronizers/synchronizersList");
-	}
-	
-	
-	
-	@RequestMapping(value = { "/grid" })
+	@RequestMapping(value = { "/fetch" }, produces = {MediaType.APPLICATION_JSON_VALUE})
 	@ResponseBody
-	public JpaPageResults<Synchronizers> queryDataGrid(@ModelAttribute("synchronizers") Synchronizers synchronizers) {
+	public ResponseEntity<?> fetch(Synchronizers synchronizers,@CurrentUser UserInfo currentUser) {
 		_logger.debug(""+synchronizers);
-		synchronizers.setInstId(WebContext.getUserInfo().getInstId());
-		return synchronizersService.queryPageResults(synchronizers);
+		synchronizers.setInstId(currentUser.getInstId());
+		return new Message<JpaPageResults<Synchronizers>>(
+				synchronizersService.queryPageResults(synchronizers)).buildResponse();
 	}
-
 	
-
-	
-	@RequestMapping(value = { "/forwardUpdate/{id}" })
-	public ModelAndView forwardUpdate(@PathVariable("id") String id) {
-		ModelAndView modelAndView=new ModelAndView("synchronizers/synchronizerUpdate");
+	@RequestMapping(value = { "/get/{id}" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> get(@PathVariable("id") String id) {
 		Synchronizers synchronizers=synchronizersService.get(id);
 		synchronizers.setCredentials(PasswordReciprocal.getInstance().decoder(synchronizers.getCredentials()));
-		modelAndView.addObject("model",synchronizers);
-		return modelAndView;
+		return new Message<Synchronizers>(synchronizers).buildResponse();
 	}
 	
-
-	
-	/**
-	 * 修改
-	 * @param group
-	 * @return
-	 */
 	@ResponseBody
-	@RequestMapping(value={"/update"})  
-	public Message update(@ModelAttribute("synchronizers") Synchronizers synchronizers) {
-		_logger.debug("-update  synchronizers :" + synchronizers);
-		synchronizers.setInstId(WebContext.getUserInfo().getInstId());
+	@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> update(@RequestBody  Synchronizers synchronizers,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-update  :" + synchronizers);
+		synchronizers.setInstId(currentUser.getInstId());
 		synchronizers.setCredentials(PasswordReciprocal.getInstance().encode(synchronizers.getCredentials()));
 		if (synchronizersService.update(synchronizers)) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_SUCCESS),MessageType.success);
-			
+		    return new Message<Synchronizers>(Message.SUCCESS).buildResponse();
 		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_ERROR),MessageType.error);
+			return new Message<Synchronizers>(Message.FAIL).buildResponse();
 		}
-		
 	}
 	
-	/**
-	 * 修改
-	 * @param group
-	 * @return
-	 */
 	@ResponseBody
 	@RequestMapping(value={"/sync"})  
-	public Message sync(@RequestParam("id") String id) {
-		_logger.debug("-update  synchronizers ids :" + id);
+	public ResponseEntity<?> sync(@RequestParam("id") String id) {
+		_logger.debug("-sync ids :" + id);
 		
 		List<String> ids = StringUtils.string2List(id, ",");
 		try {
@@ -122,9 +95,10 @@ public class SynchronizersController {
 			}
 		}catch(Exception e) {
 			_logger.error("synchronizer Exception " , e);
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_ERROR),MessageType.error);
+			return new Message<Synchronizers>(Message.FAIL).buildResponse();
+			
 		}
-		return new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_SUCCESS),MessageType.success);
+		return new Message<Synchronizers>(Message.SUCCESS).buildResponse();
 	}
 
 }

+ 1 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/config/contorller/package-info.java

@@ -0,0 +1 @@
+package org.maxkey.web.config.contorller;

+ 4 - 4
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/endpoint/IndexEndpoint.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/DashboardController.java

@@ -15,11 +15,11 @@
  */
  
 
-package org.maxkey.web.endpoint;
+package org.maxkey.web.contorller;
 
 import java.util.HashMap;
 
-import org.maxkey.authn.CurrentUser;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.entity.Message;
 import org.maxkey.entity.UserInfo;
 import org.maxkey.persistence.service.ReportService;
@@ -37,9 +37,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
  *
  */
 @Controller
-public class IndexEndpoint {
+public class DashboardController {
 	
-	private static Logger _logger = LoggerFactory.getLogger(IndexEndpoint.class);
+	private static Logger _logger = LoggerFactory.getLogger(DashboardController.class);
 	@Autowired
 	@Qualifier("reportService")
 	ReportService reportService;

+ 0 - 93
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/EmailSendersController.java

@@ -1,93 +0,0 @@
-/*
- * Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-package org.maxkey.web.contorller;
-
-import org.apache.commons.lang3.StringUtils;
-import org.maxkey.authn.CurrentUser;
-import org.maxkey.crypto.password.PasswordReciprocal;
-import org.maxkey.entity.EmailSenders;
-import org.maxkey.entity.Message;
-import org.maxkey.entity.UserInfo;
-import org.maxkey.persistence.service.EmailSendersService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-@Controller
-@RequestMapping(value={"/config/emailsenders"})
-public class EmailSendersController {
-
-
-		final static Logger _logger = LoggerFactory.getLogger(EmailSendersController.class);
-		
-		@Autowired
-		private EmailSendersService emailSendersService;
-		
-		/**
-		 * 读取
-		 * @return
-		 */
-		@RequestMapping(value={"/get"})
-		public ResponseEntity<?> get(@CurrentUser UserInfo currentUser){
-			EmailSenders emailSenders = emailSendersService.get(currentUser.getInstId());
-			if(emailSenders != null && StringUtils.isNotBlank(emailSenders.getCredentials())) {
-				emailSenders.setCredentials(PasswordReciprocal.getInstance().decoder(emailSenders.getCredentials()));
-			}else {
-				emailSenders =new EmailSenders();
-				emailSenders.setProtocol("smtp");
-				emailSenders.setEncoding("utf-8");
-			}
-			return new Message<EmailSenders>(emailSenders).buildResponse();	
-		}
-		
-		/**
-		 * 更新
-		 * @param emailSenders
-		 * @return
-		 */
-		@RequestMapping(value={"/update"})
-		@ResponseBody
-		public ResponseEntity<?> update( @RequestBody  EmailSenders emailSenders,@CurrentUser UserInfo currentUser,BindingResult result) {
-			_logger.debug("update emailSenders : "+emailSenders);
-			emailSenders.setInstId(currentUser.getInstId());
-			emailSenders.setCredentials(PasswordReciprocal.getInstance().encode(emailSenders.getCredentials()));
-			if(StringUtils.isBlank(emailSenders.getId())) {
-				emailSenders.setId(emailSenders.getInstId());
-				if(emailSendersService.insert(emailSenders)) {
-					return new Message<EmailSenders>(Message.SUCCESS).buildResponse();
-				}else {
-					return new Message<EmailSenders>(Message.ERROR).buildResponse();
-				}
-			}else {
-				if(emailSendersService.update(emailSenders)) {
-					return new Message<EmailSenders>(Message.SUCCESS).buildResponse();
-				}else {
-					return new Message<EmailSenders>(Message.ERROR).buildResponse();
-				}
-			}
-			
-		}
-		
-
-}

+ 0 - 151
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/GroupsController.java

@@ -1,151 +0,0 @@
-/*
- * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-package org.maxkey.web.contorller;
-
-import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.constants.ConstsOperateMessage;
-import org.maxkey.entity.Groups;
-import org.maxkey.persistence.service.GroupsService;
-import org.maxkey.web.WebContext;
-import org.maxkey.web.message.Message;
-import org.maxkey.web.message.MessageType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
-
-
-@Controller
-@RequestMapping(value={"/groups"})
-public class GroupsController {
-	final static Logger _logger = LoggerFactory.getLogger(GroupsController.class);
-	
-	@Autowired
-	@Qualifier("groupsService")
-	GroupsService groupsService;
-
-	
-	
-	@RequestMapping(value={"/list"})
-	public ModelAndView groupsList(){
-		return new ModelAndView("groups/groupsList");
-	}
-	
-	@RequestMapping(value={"/selectGroupsList"})
-	public ModelAndView selectGroupsList(){
-		return new ModelAndView("groups/selectGroupsList");
-	}
-	
-	
-	@RequestMapping(value = { "/grid" })
-	@ResponseBody
-	public JpaPageResults<Groups> queryDataGrid(@ModelAttribute("groups") Groups groups) {
-		_logger.debug(""+groups);
-		groups.setInstId(WebContext.getUserInfo().getInstId());
-		return groupsService.queryPageResults(groups);
-	}
-
-	
-	@RequestMapping(value = { "/forwardAdd" })
-	public ModelAndView forwardAdd() {
-		return new ModelAndView("groups/groupAdd");
-	}
-	
-	@RequestMapping(value = { "/forwardUpdate/{id}" })
-	public ModelAndView forwardUpdate(@PathVariable("id") String id) {
-		ModelAndView modelAndView=new ModelAndView("groups/groupUpdate");
-		Groups group=groupsService.get(id);
-		modelAndView.addObject("model",group);
-		return modelAndView;
-	}
-	
-	@ResponseBody
-	@RequestMapping(value={"/add"})
-	public Message insert(@ModelAttribute("group") Groups group) {
-		_logger.debug("-Add  :" + group);
-		group.setInstId(WebContext.getUserInfo().getInstId());
-		if (groupsService.insert(group)) {
-		    groupsService.refreshDynamicGroups(group);
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.error);
-		}
-		
-	}
-	
-	/**
-	 * 查询
-	 * @param group
-	 * @return
-	 */
-	@ResponseBody
-	@RequestMapping(value={"/query"}) 
-	public Message query(@ModelAttribute("group") Groups group) {
-		_logger.debug("-query  :" + group);
-		group.setInstId(WebContext.getUserInfo().getInstId());
-		if (groupsService.load(group)!=null) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_ERROR),MessageType.error);
-		}
-		
-	}
-	
-	/**
-	 * 修改
-	 * @param group
-	 * @return
-	 */
-	@ResponseBody
-	@RequestMapping(value={"/update"})  
-	public Message update(@ModelAttribute("group") Groups group) {
-		_logger.debug("-update  group :" + group);
-		group.setInstId(WebContext.getUserInfo().getInstId());
-		if (groupsService.update(group)) {
-		    groupsService.refreshDynamicGroups(group);
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_ERROR),MessageType.error);
-		}
-		
-	}
-	
-
-	@ResponseBody
-	@RequestMapping(value={"/delete"})
-	public Message delete(@ModelAttribute("group") Groups group) {
-		_logger.debug("-delete  group :" + group);
-		
-		if (groupsService.deleteById(group.getId())) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.DELETE_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.DELETE_SUCCESS),MessageType.error);
-		}
-		
-	}
-}

+ 0 - 87
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LdapContextController.java

@@ -1,87 +0,0 @@
-/*
- * Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-package org.maxkey.web.contorller;
-
-import org.apache.commons.lang3.StringUtils;
-import org.maxkey.authn.CurrentUser;
-import org.maxkey.crypto.password.PasswordReciprocal;
-import org.maxkey.entity.LdapContext;
-import org.maxkey.entity.Message;
-import org.maxkey.entity.UserInfo;
-import org.maxkey.persistence.service.LdapContextService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-@Controller
-@RequestMapping(value={"/config/ldapcontext"})
-public class LdapContextController {
-
-
-		final static Logger _logger = LoggerFactory.getLogger(LdapContextController.class);
-		
-		@Autowired
-		private LdapContextService ldapContextService;
-		
-		/**
-		 * 读取
-		 * @return
-		 */
-		@RequestMapping(value={"/get"}, produces = {MediaType.APPLICATION_JSON_VALUE})
-		public ResponseEntity<?> get(@CurrentUser UserInfo currentUser){
-			LdapContext ldapContext = ldapContextService.get(currentUser.getInstId());
-			if(ldapContext != null && StringUtils.isNoneBlank(ldapContext.getCredentials())) {
-				ldapContext.setCredentials(PasswordReciprocal.getInstance().decoder(ldapContext.getCredentials()));
-			}
-			return new Message<LdapContext>(ldapContext).buildResponse();
-		}
-		
-		/**
-		 * 更新
-		 * @param sysConfig
-		 * @return
-		 */
-		@RequestMapping(value={"/update"})
-		@ResponseBody
-		public ResponseEntity<?> update( @RequestBody LdapContext ldapContext,@CurrentUser UserInfo currentUser,BindingResult result) {
-			_logger.debug("update ldapContext : "+ldapContext);
-			ldapContext.setCredentials(PasswordReciprocal.getInstance().encode(ldapContext.getCredentials()));
-			ldapContext.setInstId(currentUser.getInstId());
-			boolean updateResult = false;
-			if(StringUtils.isBlank(ldapContext.getId())) {
-				ldapContext.setId(ldapContext.getInstId());
-				updateResult = ldapContextService.insert(ldapContext);
-			}else {
-				updateResult = ldapContextService.update(ldapContext);
-			}
-			if(updateResult) {
-				return new Message<LdapContext>(Message.SUCCESS).buildResponse();
-			} else {
-				return new Message<LdapContext>(Message.FAIL).buildResponse();
-			}
-		}
-		
-
-}

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/endpoint/LoginEndpoint.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LoginEndpoint.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.endpoint;
+package org.maxkey.web.contorller;
 
 import org.maxkey.authn.AbstractAuthenticationProvider;
 import org.maxkey.authn.LoginCredential;

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/endpoint/LogoutEndpoint.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.endpoint;
+package org.maxkey.web.contorller;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

+ 0 - 121
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/PasswordPolicyController.java

@@ -1,121 +0,0 @@
-/*
- * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-package org.maxkey.web.contorller;
-
-import javax.validation.Valid;
-
-import org.maxkey.authn.CurrentUser;
-import org.maxkey.entity.Message;
-import org.maxkey.entity.PasswordPolicy;
-import org.maxkey.entity.UserInfo;
-import org.maxkey.persistence.service.PasswordPolicyService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.validation.BindingResult;
-import org.springframework.validation.FieldError;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-@Controller
-@RequestMapping(value={"/config/passwordpolicy"})
-public class PasswordPolicyController {
-
-
-		final static Logger _logger = LoggerFactory.getLogger(PasswordPolicyController.class);
-		
-		@Autowired
-		private PasswordPolicyService passwordPolicyService;
-		
-		/**
-		 * 读取
-		 * @return
-		 */
-		@RequestMapping(value={"/get"}, produces = {MediaType.APPLICATION_JSON_VALUE})
-		public ResponseEntity<?> get(@CurrentUser UserInfo currentUser){
-			PasswordPolicy passwordPolicy = passwordPolicyService.get(currentUser.getInstId());
-			return new Message<PasswordPolicy>(passwordPolicy).buildResponse();
-		}
-		
-		/**
-		 * 更新
-		 * @param sysConfig
-		 * @return
-		 */
-		@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
-		public ResponseEntity<?> update(@Valid @RequestBody PasswordPolicy passwordPolicy,@CurrentUser UserInfo currentUser,BindingResult result) {
-			_logger.debug("updateRole passwordPolicy : "+passwordPolicy);
-			//Message message = this.validate(result, passwordPolicy);
-			
-			if(passwordPolicyService.update(passwordPolicy)) {
-				return new Message<PasswordPolicy>(Message.SUCCESS).buildResponse();
-			} else {
-				return new Message<PasswordPolicy>(Message.ERROR).buildResponse();
-			}
-		}
-		
-		/**
-		 * 验证函数
-		 * @param result
-		 * @param passwordPolicy
-		 * @return
-		 */
-		public Message validate(BindingResult result,PasswordPolicy passwordPolicy) {
-			if (result.hasErrors()) {
-				return new Message(result);
-			}
-			if(passwordPolicy.getMinLength() < 3) {
-				FieldError fe = new FieldError("passwordPolicy", "minLength",
-						passwordPolicy.getMinLength(), true,
-						new String[]{"ui.passwordpolicy.xe00000001"},//密码最小长度不能小于3位字符
-						null, null);
-				result.addError(fe);
-				return new Message(result);
-			}
-			if(passwordPolicy.getMinLength() > passwordPolicy.getMaxLength()) {
-				FieldError fe = new FieldError("passwordPolicy", "maxLength",
-						passwordPolicy.getMinLength(), true,
-						new String[]{"ui.passwordpolicy.xe00000002"},//密码最大长度不能小于最小长度
-						null, null);
-				result.addError(fe);
-				return new Message(result);
-			}
-			
-			if(passwordPolicy.getDigits() + passwordPolicy.getLowerCase() + passwordPolicy.getUpperCase() + passwordPolicy.getSpecialChar() < 2) {
-				FieldError fe = new FieldError("passwordPolicy", "specialChar",
-						2, true,
-						new String[]{"ui.passwordpolicy.xe00000003"},//密码包含小写字母、大写字母、数字、特殊字符的个数不能小于2
-						null, null);
-				result.addError(fe);
-				return new Message(result);
-			}
-			
-			if(passwordPolicy.getDigits() + passwordPolicy.getLowerCase() + passwordPolicy.getUpperCase() + passwordPolicy.getSpecialChar() > passwordPolicy.getMaxLength()) {
-				FieldError fe = new FieldError("passwordPolicy", "specialChar",
-						passwordPolicy.getMinLength(), true,
-						new String[]{"ui.passwordpolicy.xe00000004"},//密码包含小写字母、大写字母、数字、特殊字符的个数不能大于密码的最大长度
-						null, null);
-				result.addError(fe);
-				return new Message(result);
-			}
-			return null;
-		}
-}

+ 0 - 151
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/RolesController.java

@@ -1,151 +0,0 @@
-/*
- * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-package org.maxkey.web.contorller;
-
-import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.constants.ConstsOperateMessage;
-import org.maxkey.entity.Roles;
-import org.maxkey.persistence.service.RolesService;
-import org.maxkey.web.WebContext;
-import org.maxkey.web.message.Message;
-import org.maxkey.web.message.MessageType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
-
-
-@Controller
-@RequestMapping(value={"/roles"})
-public class RolesController {
-	final static Logger _logger = LoggerFactory.getLogger(RolesController.class);
-	
-	@Autowired
-	@Qualifier("rolesService")
-	RolesService rolesService;
-
-	
-	
-	@RequestMapping(value={"/list"})
-	public ModelAndView rolesList(){
-		return new ModelAndView("roles/rolesList");
-	}
-	
-	@RequestMapping(value={"/selectRolesList"})
-	public ModelAndView selectRolesList(){
-		return new ModelAndView("roles/selectRolesList");
-	}
-	
-	
-	@RequestMapping(value = { "/grid" })
-	@ResponseBody
-	public JpaPageResults<Roles> queryDataGrid(@ModelAttribute("roles") Roles roles) {
-		_logger.debug(""+roles);
-		roles.setInstId(WebContext.getUserInfo().getInstId());
-		return rolesService.queryPageResults(roles);
-	}
-
-	
-	@RequestMapping(value = { "/forwardAdd" })
-	public ModelAndView forwardAdd() {
-		return new ModelAndView("roles/roleAdd");
-	}
-	
-	@RequestMapping(value = { "/forwardUpdate/{id}" })
-	public ModelAndView forwardUpdate(@PathVariable("id") String id) {
-		ModelAndView modelAndView=new ModelAndView("roles/roleUpdate");
-		Roles role=rolesService.get(id);
-		modelAndView.addObject("model",role);
-		return modelAndView;
-	}
-	
-	@ResponseBody
-	@RequestMapping(value={"/add"})
-	public Message insert(@ModelAttribute("role") Roles role) {
-		_logger.debug("-Add  :" + role);
-		role.setInstId(WebContext.getUserInfo().getInstId());
-		if (rolesService.insert(role)) {
-		    rolesService.refreshDynamicRoles(role);
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.error);
-		}
-		
-	}
-	
-	/**
-	 * 查询
-	 * @param role
-	 * @return
-	 */
-	@ResponseBody
-	@RequestMapping(value={"/query"}) 
-	public Message query(@ModelAttribute("role") Roles role) {
-		_logger.debug("-query  :" + role);
-		role.setInstId(WebContext.getUserInfo().getInstId());
-		if (rolesService.load(role)!=null) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_ERROR),MessageType.error);
-		}
-		
-	}
-	
-	/**
-	 * 修改
-	 * @param role
-	 * @return
-	 */
-	@ResponseBody
-	@RequestMapping(value={"/update"})  
-	public Message update(@ModelAttribute("role") Roles role) {
-		_logger.debug("-update  role :" + role);
-		role.setInstId(WebContext.getUserInfo().getInstId());
-		if (rolesService.update(role)) {
-		    rolesService.refreshDynamicRoles(role);
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_ERROR),MessageType.error);
-		}
-		
-	}
-	
-
-	@ResponseBody
-	@RequestMapping(value={"/delete"})
-	public Message delete(@ModelAttribute("role") Roles role) {
-		_logger.debug("-delete  role :" + role);
-		
-		if (rolesService.deleteById(role.getId())) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.DELETE_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.DELETE_SUCCESS),MessageType.error);
-		}
-		
-	}
-}

+ 0 - 86
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/SmsProviderController.java

@@ -1,86 +0,0 @@
-/*
- * Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-package org.maxkey.web.contorller;
-
-import org.apache.commons.lang3.StringUtils;
-import org.maxkey.authn.CurrentUser;
-import org.maxkey.crypto.password.PasswordReciprocal;
-import org.maxkey.entity.Message;
-import org.maxkey.entity.SmsProvider;
-import org.maxkey.entity.UserInfo;
-import org.maxkey.persistence.service.SmsProviderService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-@Controller
-@RequestMapping(value={"/config/smsprovider"})
-public class SmsProviderController {
-
-		final static Logger _logger = LoggerFactory.getLogger(SmsProviderController.class);
-		
-		@Autowired
-		private SmsProviderService smsProviderService;
-		
-		/**
-		 * 读取
-		 * @return
-		 */
-		@RequestMapping(value={"/get"}, produces = {MediaType.APPLICATION_JSON_VALUE})
-		public ResponseEntity<?> get(@CurrentUser UserInfo currentUser){
-			SmsProvider smsProvider = smsProviderService.get(currentUser.getInstId());
-			if(smsProvider != null && StringUtils.isNoneBlank(smsProvider.getId())) {
-				smsProvider.setAppSecret(PasswordReciprocal.getInstance().decoder(smsProvider.getAppSecret()));
-			}
-			return new Message<SmsProvider>(smsProvider).buildResponse();
-		}
-		
-		/**
-		 * 更新
-		 * @param sysConfig
-		 * @return
-		 */
-		@RequestMapping(value={"/update"})
-		@ResponseBody
-		public ResponseEntity<?> update( @RequestBody SmsProvider smsProvider,@CurrentUser UserInfo currentUser,BindingResult result) {
-			_logger.debug("update smsProvider : "+smsProvider);
-			smsProvider.setAppSecret(PasswordReciprocal.getInstance().encode(smsProvider.getAppSecret()));
-			smsProvider.setInstId(currentUser.getInstId());
-			boolean updateResult = false;
-			if(StringUtils.isBlank(smsProvider.getId())) {
-				smsProvider.setId(smsProvider.getInstId());
-				updateResult = smsProviderService.insert(smsProvider);
-			}else {
-				updateResult = smsProviderService.update(smsProvider);
-			}
-			if(updateResult) {
-				return new Message<SmsProvider>(Message.SUCCESS).buildResponse();
-			} else {
-				return new Message<SmsProvider>(Message.FAIL).buildResponse();
-			}
-		}
-		
-
-}

+ 0 - 144
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/SocialsProviderController.java

@@ -1,144 +0,0 @@
-/*
- * Copyright [2021] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-package org.maxkey.web.contorller;
-
-import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.constants.ConstsOperateMessage;
-import org.maxkey.crypto.password.PasswordReciprocal;
-import org.maxkey.entity.SocialsProvider;
-import org.maxkey.persistence.service.SocialsProviderService;
-import org.maxkey.web.WebContext;
-import org.maxkey.web.message.Message;
-import org.maxkey.web.message.MessageType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.ModelAndView;
-
-
-@Controller
-@RequestMapping(value={"/socialsprovider"})
-public class SocialsProviderController {
-	final static Logger _logger = LoggerFactory.getLogger(SocialsProviderController.class);
-	
-	@Autowired
-	SocialsProviderService socialsProviderService;
-
-	@RequestMapping(value={"/list"})
-	public ModelAndView noticesList(){
-		return new ModelAndView("socialsprovider/socialsProviderList");
-	}
-
-	
-	@RequestMapping(value = { "/grid" })
-	@ResponseBody
-	public JpaPageResults<SocialsProvider> queryDataGrid(@ModelAttribute("socialsProvider") SocialsProvider socialsProvider) {
-		_logger.debug(""+socialsProvider);
-		socialsProvider.setInstId(WebContext.getUserInfo().getInstId());
-		return socialsProviderService.queryPageResults(socialsProvider);
-	}
-
-	
-	@RequestMapping(value = { "/forwardAdd" })
-	public ModelAndView forwardAdd() {
-		return new ModelAndView("socialsprovider/socialsProviderAdd");
-	}
-	
-	@RequestMapping(value = { "/forwardUpdate/{id}" })
-	public ModelAndView forwardUpdate(@PathVariable("id") String id) {
-		ModelAndView modelAndView=new ModelAndView("socialsprovider/socialsProviderUpdate");
-		SocialsProvider socialsProvider = socialsProviderService.get(id);
-		socialsProvider.setClientSecret(PasswordReciprocal.getInstance().decoder(socialsProvider.getClientSecret()));
-		modelAndView.addObject("model",socialsProvider);
-		return modelAndView;
-	}
-	
-	@ResponseBody
-	@RequestMapping(value={"/add"})
-	public Message insert(@ModelAttribute("socialsProvider") SocialsProvider socialsProvider) {
-		_logger.debug("-Add  :" + socialsProvider);
-		socialsProvider.setInstId(WebContext.getUserInfo().getInstId());
-		socialsProvider.setClientSecret(PasswordReciprocal.getInstance().encode(socialsProvider.getClientSecret()));
-		if (socialsProviderService.insert(socialsProvider)) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.error);
-		}
-		
-	}
-	
-	/**
-	 * 查询
-	 * @param role
-	 * @return
-	 */
-	@ResponseBody
-	@RequestMapping(value={"/query"}) 
-	public Message query(@ModelAttribute("socialsProvider") SocialsProvider socialsProvider) {
-		_logger.debug("-query  :" + socialsProvider);
-		socialsProvider.setInstId(WebContext.getUserInfo().getInstId());
-		if (socialsProviderService.load(socialsProvider)!=null) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_ERROR),MessageType.error);
-		}
-		
-	}
-	
-	/**
-	 * 修改
-	 * @param role
-	 * @return
-	 */
-	@ResponseBody
-	@RequestMapping(value={"/update"})  
-	public Message update(@ModelAttribute("socialsProvider") SocialsProvider socialsProvider) {
-		_logger.debug("-update  socialsProvider :" + socialsProvider);
-		socialsProvider.setInstId(WebContext.getUserInfo().getInstId());
-		socialsProvider.setClientSecret(PasswordReciprocal.getInstance().encode(socialsProvider.getClientSecret()));
-		if (socialsProviderService.update(socialsProvider)) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.UPDATE_ERROR),MessageType.error);
-		}
-		
-	}
-	
-
-	@ResponseBody
-	@RequestMapping(value={"/delete"})
-	public Message delete(@ModelAttribute("socialsProvider") SocialsProvider socialsProvider) {
-		_logger.debug("-delete  socialsProvider :" + socialsProvider);
-		
-		if (socialsProviderService.deleteBatch(socialsProvider.getId())) {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.DELETE_SUCCESS),MessageType.success);
-			
-		} else {
-			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.DELETE_SUCCESS),MessageType.error);
-		}
-		
-	}
-}

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/ConnectorHistoryController.java

@@ -20,7 +20,7 @@ package org.maxkey.web.historys.contorller;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.authn.CurrentUser;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.entity.HistoryConnector;
 import org.maxkey.entity.Message;
 import org.maxkey.entity.UserInfo;
@@ -59,7 +59,7 @@ final static Logger _logger = LoggerFactory.getLogger(ConnectorHistoryController
      * @param historySynchronizer
      * @return
      */
-    @RequestMapping(value={"/connectorHistoryList/fetch"})
+    @RequestMapping(value={"/connectorHistory/fetch"})
     @ResponseBody
     public ResponseEntity<?> fetch(
     		@ModelAttribute("historyConnector") HistoryConnector historyConnector,

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/LoginAppsHistoryController.java

@@ -20,7 +20,7 @@ package org.maxkey.web.historys.contorller;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.authn.CurrentUser;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.entity.HistoryLoginApps;
 import org.maxkey.entity.Message;
 import org.maxkey.entity.UserInfo;
@@ -57,7 +57,7 @@ final static Logger _logger = LoggerFactory.getLogger(LoginAppsHistoryController
 	 * @param loginAppsHistory
 	 * @return
 	 */
-	@RequestMapping(value={"/loginAppsHistoryList/fetch"})
+	@RequestMapping(value={"/loginAppsHistory/fetch"})
 	@ResponseBody
 	public ResponseEntity<?> fetch(
 				@ModelAttribute("historyLoginApp") HistoryLoginApps historyLoginApp,

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/LoginHistoryController.java

@@ -20,7 +20,7 @@ package org.maxkey.web.historys.contorller;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.authn.CurrentUser;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.entity.HistoryLogin;
 import org.maxkey.entity.Message;
 import org.maxkey.entity.UserInfo;
@@ -57,7 +57,7 @@ final static Logger _logger = LoggerFactory.getLogger(LoginHistoryController.cla
 	 * @param HistoryLogin
 	 * @return
 	 */
-	@RequestMapping(value={"/loginHistoryList/fetch"})
+	@RequestMapping(value={"/loginHistory/fetch"})
 	@ResponseBody
 	public ResponseEntity<?> fetch(
 				@ModelAttribute("historyLogin") HistoryLogin historyLogin,

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/SynchronizerHistoryController.java

@@ -20,7 +20,7 @@ package org.maxkey.web.historys.contorller;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.authn.CurrentUser;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.entity.HistorySynchronizer;
 import org.maxkey.entity.Message;
 import org.maxkey.entity.UserInfo;
@@ -59,7 +59,7 @@ final static Logger _logger = LoggerFactory.getLogger(SynchronizerHistoryControl
      * @param historySynchronizer
      * @return
      */
-    @RequestMapping(value={"/synchronizerHistoryList/fetch"})
+    @RequestMapping(value={"/synchronizerHistory/fetch"})
     @ResponseBody
     public ResponseEntity<?> fetch(
     			@ModelAttribute("historySynchronizer") HistorySynchronizer historySynchronizer,

+ 2 - 2
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/historys/contorller/SystemLogsController.java

@@ -20,7 +20,7 @@ package org.maxkey.web.historys.contorller;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
-import org.maxkey.authn.CurrentUser;
+import org.maxkey.authn.annotation.CurrentUser;
 import org.maxkey.entity.HistoryLogs;
 import org.maxkey.entity.Message;
 import org.maxkey.entity.UserInfo;
@@ -58,7 +58,7 @@ final static Logger _logger = LoggerFactory.getLogger(SystemLogsController.class
 	 * @param logs
 	 * @return
 	 */
-	@RequestMapping(value={"/systemLogsList/fetch"})
+	@RequestMapping(value={"/systemLogs/fetch"})
 	@ResponseBody
 	public ResponseEntity<?> fetch(@ModelAttribute("historyLog") HistoryLogs historyLog,
 			@CurrentUser UserInfo currentUser){

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/PermissionsController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/PermissionsController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.permissions.contorller;
 
 import java.util.ArrayList;
 import java.util.HashMap;

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/ResourcesController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/ResourcesController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.permissions.contorller;
 
 import java.util.HashMap;
 import java.util.List;

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/RoleMemberController.java → maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/RoleMemberController.java

@@ -15,7 +15,7 @@
  */
  
 
-package org.maxkey.web.contorller;
+package org.maxkey.web.permissions.contorller;
 
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
 import org.maxkey.constants.ConstsOperateMessage;

+ 114 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/RolesController.java

@@ -0,0 +1,114 @@
+/*
+ * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.permissions.contorller;
+
+import org.apache.mybatis.jpa.persistence.JpaPageResults;
+import org.maxkey.authn.annotation.CurrentUser;
+import org.maxkey.entity.Message;
+import org.maxkey.entity.Roles;
+import org.maxkey.entity.UserInfo;
+import org.maxkey.persistence.service.RolesService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+
+@Controller
+@RequestMapping(value={"/permissions/roles"})
+public class RolesController {
+	final static Logger _logger = LoggerFactory.getLogger(RolesController.class);
+	
+	@Autowired
+	RolesService rolesService;
+
+	@RequestMapping(value = { "/fetch" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	@ResponseBody
+	public ResponseEntity<?> fetch(@ModelAttribute Roles roles,@CurrentUser UserInfo currentUser) {
+		_logger.debug(""+roles);
+		roles.setInstId(currentUser.getInstId());
+		return new Message<JpaPageResults<Roles>>(
+				rolesService.queryPageResults(roles)).buildResponse();
+	}
+
+	@ResponseBody
+	@RequestMapping(value={"/query"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> query(@ModelAttribute Roles role,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-query  :" + role);
+		role.setInstId(currentUser.getInstId());
+		if (rolesService.load(role)!=null) {
+			 return new Message<Roles>(Message.SUCCESS).buildResponse();
+		} else {
+			 return new Message<Roles>(Message.SUCCESS).buildResponse();
+		}
+		
+	}
+
+	@RequestMapping(value = { "/get/{id}" }, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> get(@PathVariable("id") String id) {
+		Roles role=rolesService.get(id);
+		return new Message<Roles>(role).buildResponse();
+	}
+
+	@ResponseBody
+	@RequestMapping(value={"/add"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> insert(@RequestBody  Roles role,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-Add  :" + role);
+		role.setInstId(currentUser.getInstId());
+		if (rolesService.insert(role)) {
+		    rolesService.refreshDynamicRoles(role);
+		    return new Message<Roles>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<Roles>(Message.FAIL).buildResponse();
+		}
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> update(@RequestBody  Roles role,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-update  :" + role);
+		role.setInstId(currentUser.getInstId());
+		if (rolesService.update(role)) {
+		    rolesService.refreshDynamicRoles(role);
+		    return new Message<Roles>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<Roles>(Message.FAIL).buildResponse();
+		}
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/delete"}, produces = {MediaType.APPLICATION_JSON_VALUE})
+	public ResponseEntity<?> delete(@RequestParam("ids") String ids,@CurrentUser UserInfo currentUser) {
+		_logger.debug("-delete ids : {} " , ids);
+		
+		if (rolesService.deleteBatch(ids)) {
+			 return new Message<Roles>(Message.SUCCESS).buildResponse();
+		} else {
+			return new Message<Roles>(Message.FAIL).buildResponse();
+		}
+		
+	}
+}

+ 1 - 0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/package-info.java

@@ -0,0 +1 @@
+package org.maxkey.web.permissions.contorller;