diff --git a/build.gradle b/build.gradle index 899b9d16a..3ffc9601f 100644 --- a/build.gradle +++ b/build.gradle @@ -275,9 +275,6 @@ subprojects { implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}" implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}" implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}" - //spring-session - implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}" - implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}" //implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}" //implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}" diff --git a/config/build_docker.gradle b/config/build_docker.gradle index d2b9c8214..0c2942eaf 100644 --- a/config/build_docker.gradle +++ b/config/build_docker.gradle @@ -240,10 +240,7 @@ subprojects { implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}" implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}" implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}" - //spring-session - implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}" - implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}" - + //implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}" //implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}" //spring cloud diff --git a/config/build_jar.gradle b/config/build_jar.gradle index 256003e8a..ebfe5275f 100644 --- a/config/build_jar.gradle +++ b/config/build_jar.gradle @@ -240,10 +240,7 @@ subprojects { implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}" implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}" implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}" - //spring-session - implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}" - implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}" - + //implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}" //implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}" //spring cloud diff --git a/config/build_standard.gradle b/config/build_standard.gradle index 8da1face8..8e03c0681 100644 --- a/config/build_standard.gradle +++ b/config/build_standard.gradle @@ -275,10 +275,7 @@ subprojects { implementation group: 'org.springframework.data', name: 'spring-data-commons', version: "${springDataVersion}" implementation group: 'org.springframework.data', name: 'spring-data-keyvalue', version: "${springDataVersion}" implementation group: 'org.springframework.data', name: 'spring-data-redis', version: "${springDataVersion}" - //spring-session - implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}" - implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}" - + //implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}" //implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}" //spring cloud diff --git a/gradle.properties b/gradle.properties index d52a587c6..f6095fd72 100644 --- a/gradle.properties +++ b/gradle.properties @@ -63,8 +63,8 @@ tomcatVersion =9.0.62 tomcatembedloggingjuliVersion =8.5.2 #spring springVersion =5.3.20 -springBootVersion =2.6.7 -springSecurityVersion =5.6.4 +springBootVersion =2.6.8 +springSecurityVersion =5.6.5 springDataVersion =2.6.4 springSessionVersion =2.6.3 springkafkaVersion =2.8.2 @@ -95,8 +95,8 @@ knife4jVersion =3.0.3 #database postgresqlVersion =42.3.3 mysqlconnectorjavaVersion =8.0.26 -druidVersion =1.2.8 -druidspringbootstarterVersion =1.2.8 +druidVersion =1.2.9 +druidspringbootstarterVersion =1.2.9 jedisVersion =3.8.0 ehcacheVersion =3.9.6 caffeineVersion =2.9.2 diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionManager.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionManager.java index a27bddb0e..b0d5793c6 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionManager.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionManager.java @@ -17,8 +17,7 @@ package org.maxkey.authn.session; -import java.time.Duration; -import java.time.LocalTime; +import java.time.LocalDateTime; import java.util.List; import java.util.concurrent.TimeUnit; @@ -43,6 +42,7 @@ public class InMemorySessionManager implements SessionManager{ public InMemorySessionManager(int validitySeconds) { super(); + this.validitySeconds = validitySeconds; sessionStore = Caffeine.newBuilder() .expireAfterWrite(validitySeconds, TimeUnit.SECONDS) @@ -53,6 +53,7 @@ public class InMemorySessionManager implements SessionManager{ @Override public void create(String sessionId, Session session) { + session.setExpiredTime(session.getLastAccessTime().plusSeconds(validitySeconds)); sessionStore.put(sessionId, session); } @@ -70,10 +71,15 @@ public class InMemorySessionManager implements SessionManager{ } @Override - public Session refresh(String sessionId,LocalTime refreshTime) { + public Session refresh(String sessionId,LocalDateTime refreshTime) { Session session = get(sessionId); - session.setLastAccessTime(refreshTime); - create(sessionId , session); + if(session != null) { + _logger.debug("refresh session Id {} at refreshTime {}",sessionId,refreshTime); + session.setLastAccessTime(refreshTime); + //invalidate sessionId then renew one + sessionStore.invalidate(sessionId); + create(sessionId , session); + } return session; } @@ -81,18 +87,21 @@ public class InMemorySessionManager implements SessionManager{ public Session refresh(String sessionId) { Session session = get(sessionId); - LocalTime currentTime = LocalTime.now(); - Duration duration = Duration.between(currentTime, session.getLastAccessTime()); - - _logger.trace("Session duration " + duration.getSeconds()); - - if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) { + if(session != null) { + LocalDateTime currentTime = LocalDateTime.now(); + _logger.debug("refresh session Id {} at time {}",sessionId,currentTime); session.setLastAccessTime(currentTime); - return refresh(sessionId,currentTime); + //invalidate sessionId then renew one + sessionStore.invalidate(sessionId); + create(sessionId , session); } return session; } + public int getValiditySeconds() { + return validitySeconds; + } + @Override public List querySessions() { // TODO Auto-generated method stub diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionManager.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionManager.java index 604f7f4ee..fa52eec92 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionManager.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionManager.java @@ -17,8 +17,7 @@ package org.maxkey.authn.session; -import java.time.Duration; -import java.time.LocalTime; +import java.time.LocalDateTime; import java.util.List; import org.maxkey.entity.HistoryLogin; @@ -65,6 +64,7 @@ public class RedisSessionManager implements SessionManager { @Override public void create(String sessionId, Session session) { + session.setExpiredTime(session.getLastAccessTime().plusSeconds(validitySeconds)); RedisConnection conn = connectionFactory.getConnection(); conn.setexObject( getKey(sessionId), validitySeconds, session); conn.close(); @@ -97,25 +97,24 @@ public class RedisSessionManager implements SessionManager { } @Override - public Session refresh(String sessionId,LocalTime refreshTime) { + public Session refresh(String sessionId,LocalDateTime refreshTime) { Session session = get(sessionId); - session.setLastAccessTime(refreshTime); - create(sessionId , session); + if(session != null) { + _logger.debug("refresh session Id {} at {}",sessionId,refreshTime); + session.setLastAccessTime(refreshTime); + create(sessionId , session); + } return session; } @Override public Session refresh(String sessionId) { Session session = get(sessionId); - - LocalTime currentTime = LocalTime.now(); - Duration duration = Duration.between(currentTime, session.getLastAccessTime()); - - _logger.trace("Session duration " + duration.getSeconds()); - - if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) { + if(session != null) { + LocalDateTime currentTime = LocalDateTime.now(); + _logger.debug("refresh session Id {} at time {}",sessionId,currentTime); session.setLastAccessTime(currentTime); - return refresh(sessionId,currentTime); + create(sessionId , session); } return session; } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/Session.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/Session.java index bf17b91df..030a029e0 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/Session.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/Session.java @@ -18,7 +18,7 @@ package org.maxkey.authn.session; import java.io.Serializable; -import java.time.LocalTime; +import java.time.LocalDateTime; import java.util.HashMap; import org.maxkey.entity.apps.Apps; @@ -34,9 +34,11 @@ public class Session implements Serializable{ public String id; - public LocalTime startTimestamp; + public LocalDateTime startTimestamp; - public LocalTime lastAccessTime; + public LocalDateTime lastAccessTime; + + public LocalDateTime expiredTime; public Authentication authentication; @@ -45,23 +47,23 @@ public class Session implements Serializable{ public Session() { super(); this.id = WebContext.genId();; - this.startTimestamp = LocalTime.now(); - this.lastAccessTime = LocalTime.now(); + this.startTimestamp = LocalDateTime.now(); + this.lastAccessTime = LocalDateTime.now(); } public Session(String sessionId) { super(); this.id = sessionId; - this.startTimestamp = LocalTime.now(); - this.lastAccessTime = LocalTime.now(); + this.startTimestamp = LocalDateTime.now(); + this.lastAccessTime = LocalDateTime.now(); } public Session(String sessionId,Authentication authentication) { super(); this.id = sessionId; this.authentication = authentication; - this.startTimestamp = LocalTime.now(); - this.lastAccessTime = LocalTime.now(); + this.startTimestamp = LocalDateTime.now(); + this.lastAccessTime = LocalDateTime.now(); } public String getId() { @@ -77,22 +79,30 @@ public class Session implements Serializable{ } - public LocalTime getStartTimestamp() { + public LocalDateTime getStartTimestamp() { return startTimestamp; } - public void setStartTimestamp(LocalTime startTimestamp) { + public void setStartTimestamp(LocalDateTime startTimestamp) { this.startTimestamp = startTimestamp; } - public LocalTime getLastAccessTime() { + public LocalDateTime getLastAccessTime() { return lastAccessTime; } - public void setLastAccessTime(LocalTime lastAccessTime) { + public void setLastAccessTime(LocalDateTime lastAccessTime) { this.lastAccessTime = lastAccessTime; } + public LocalDateTime getExpiredTime() { + return expiredTime; + } + + public void setExpiredTime(LocalDateTime expiredTime) { + this.expiredTime = expiredTime; + } + public Authentication getAuthentication() { return authentication; } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManager.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManager.java index e8520c574..c2f9ce7c4 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManager.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManager.java @@ -17,7 +17,7 @@ package org.maxkey.authn.session; -import java.time.LocalTime; +import java.time.LocalDateTime; import java.util.List; import org.maxkey.entity.HistoryLogin; @@ -30,11 +30,13 @@ public interface SessionManager { public Session get(String sessionId); - public Session refresh(String sessionId ,LocalTime refreshTime); + public Session refresh(String sessionId ,LocalDateTime refreshTime); public Session refresh(String sessionId); public List querySessions(); + public int getValiditySeconds(); + public void terminate(String sessionId,String userId,String username); } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManagerFactory.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManagerFactory.java index 7992e970b..054aed656 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManagerFactory.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManagerFactory.java @@ -20,7 +20,7 @@ package org.maxkey.authn.session; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; -import java.time.LocalTime; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -34,6 +34,14 @@ import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; +/** + * SessionManager + * Level 1 in memory,store in Caffeine + * Level 2 in Redis + * user session status in database + * @author shimh + * + */ public class SessionManagerFactory implements SessionManager{ private static final Logger _logger = LoggerFactory.getLogger(SessionManagerFactory.class); @@ -53,12 +61,15 @@ public class SessionManagerFactory implements SessionManager{ private RedisSessionManager redisSessionManager; - private boolean isRedis = false; + private boolean isRedis = false; + + private int validitySeconds ; public SessionManagerFactory(int persistence, JdbcTemplate jdbcTemplate, RedisConnectionFactory redisConnFactory, int validitySeconds) { + this.validitySeconds = validitySeconds; this.jdbcTemplate = jdbcTemplate; this.inMemorySessionManager = new InMemorySessionManager(validitySeconds); @@ -94,11 +105,12 @@ public class SessionManagerFactory implements SessionManager{ return session; } - public Session refresh(String sessionId, LocalTime refreshTime) { + public Session refresh(String sessionId, LocalDateTime refreshTime) { Session session = null; if(isRedis) { session = redisSessionManager.refresh(sessionId,refreshTime); //renew one + inMemorySessionManager.remove(sessionId); inMemorySessionManager.create(sessionId, session); }else { session = inMemorySessionManager.refresh(sessionId,refreshTime); @@ -111,6 +123,7 @@ public class SessionManagerFactory implements SessionManager{ if(isRedis) { session = redisSessionManager.refresh(sessionId); //renew one + inMemorySessionManager.remove(sessionId); inMemorySessionManager.create(sessionId, session); }else { session = inMemorySessionManager.refresh(sessionId); @@ -142,12 +155,16 @@ public class SessionManagerFactory implements SessionManager{ public void terminate(String sessionId, String userId, String username) { String lastLogoffTime = DateUtils.formatDateTime(new Date()); - _logger.trace("{} user {} terminate Ticket {} ." ,lastLogoffTime,username, sessionId); + _logger.trace("{} user {} terminate session {} ." ,lastLogoffTime,username, sessionId); this.profileLastLogoffTime(userId, lastLogoffTime); this.sessionLogoff(sessionId, lastLogoffTime); this.remove(sessionId); } + public int getValiditySeconds() { + return validitySeconds; + } + private final class OnlineTicketRowMapper implements RowMapper { @Override public HistoryLogin mapRow(ResultSet rs, int rowNum) diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/LoginRefreshPoint.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/LoginTokenRefreshPoint.java similarity index 97% rename from maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/LoginRefreshPoint.java rename to maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/LoginTokenRefreshPoint.java index 7dab660b0..af38e6cd5 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/LoginRefreshPoint.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/LoginTokenRefreshPoint.java @@ -35,8 +35,8 @@ import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping(value = "/auth") -public class LoginRefreshPoint { - private static final Logger _logger = LoggerFactory.getLogger(LoginRefreshPoint.class); +public class LoginTokenRefreshPoint { + private static final Logger _logger = LoggerFactory.getLogger(LoginTokenRefreshPoint.class); @Autowired AuthTokenService authTokenService; diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/package-info.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/package-info.java deleted file mode 100644 index 4d4749b90..000000000 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/package-info.java +++ /dev/null @@ -1,18 +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.authn.web; diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java index f4120eb94..53e75e7eb 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java @@ -202,7 +202,7 @@ public class AuthenticationAutoConfiguration implements InitializingBean { RedisConnectionFactory redisConnFactory, @Value("${maxkey.session.timeout:1800}") int timeout ) { - _logger.trace("session timeout " + timeout); + _logger.debug("session timeout " + timeout); SessionManager sessionManager = new SessionManagerFactory( persistence, jdbcTemplate, redisConnFactory,timeout); diff --git a/maxkey-core/src/main/java/org/maxkey/entity/GroupPrivileges.java b/maxkey-core/src/main/java/org/maxkey/entity/GroupPrivileges.java index d4cd28506..32dbdb6d8 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/GroupPrivileges.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/GroupPrivileges.java @@ -49,9 +49,14 @@ public class GroupPrivileges extends Apps implements Serializable{ String id; @Column private String groupId; + + private String groupName; + @Column private String appId; + private String appName; + @Column private String instId; @@ -130,6 +135,26 @@ public class GroupPrivileges extends Apps implements Serializable{ } + public String getGroupName() { + return groupName; + } + + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + + + public String getAppName() { + return appName; + } + + + public void setAppName(String appName) { + this.appName = appName; + } + + @Override public String toString() { StringBuilder builder = new StringBuilder(); diff --git a/maxkey-core/src/main/java/org/maxkey/persistence/repository/PasswordPolicyValidator.java b/maxkey-core/src/main/java/org/maxkey/persistence/repository/PasswordPolicyValidator.java index f2366e099..f13439c7d 100644 --- a/maxkey-core/src/main/java/org/maxkey/persistence/repository/PasswordPolicyValidator.java +++ b/maxkey-core/src/main/java/org/maxkey/persistence/repository/PasswordPolicyValidator.java @@ -128,7 +128,7 @@ public class PasswordPolicyValidator { DateTime badPasswordTime = DateTime.parse(badPasswordTimeString, DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")); Duration duration = new Duration(badPasswordTime, currentdateTime); - int intDuration = Integer.parseInt(duration.getStandardHours() + ""); + int intDuration = Integer.parseInt(duration.getStandardMinutes() + ""); _logger.debug("bad Password duration {} , " + "password policy Duration {} , "+ "validate result {}" , diff --git a/maxkey-core/src/main/resources/messages/passwordpolicy_message.properties b/maxkey-core/src/main/resources/messages/passwordpolicy_message.properties index 69570ac5a..d2f07ef2d 100644 --- a/maxkey-core/src/main/resources/messages/passwordpolicy_message.properties +++ b/maxkey-core/src/main/resources/messages/passwordpolicy_message.properties @@ -1,48 +1,48 @@ #password -PasswordPolicy.HISTORY_VIOLATION=\u5bc6\u7801\u5339\u914d\u4e86{0}\u5386\u53f2\u5bc6\u7801. -PasswordPolicy.ILLEGAL_WORD=\u5bc6\u7801\u5305\u542b\u5728\u5bc6\u7801\u5b57\u5178{0}. -PasswordPolicy.ILLEGAL_WORD_REVERSED=\u5bc6\u7801\u5305\u542b\u5728\u5bc6\u7801\u5b57\u5178\u5012\u5e8f{0}. -PasswordPolicy.ILLEGAL_DIGEST_WORD=\u5bc6\u7801\u5305\u542b\u5728\u5b57\u5178\u4e2d. -PasswordPolicy.ILLEGAL_DIGEST_WORD_REVERSED=\u5bc6\u7801\u5305\u542b\u5728\u5b57\u5178\u5012\u5e8f\u4e2d. -PasswordPolicy.ILLEGAL_MATCH=\u5bc6\u7801\u5339\u914d\u975e\u6cd5\u89c4\u5219{0}. -PasswordPolicy.ALLOWED_MATCH=\u5bc6\u7801\u5fc5\u987b\u5339\u914d\u89c4\u5219{0}. -PasswordPolicy.ILLEGAL_CHAR=\u5bc6\u7801{1}\u5305\u542b\u975e\u6cd5\u5b57\u7b26{0}. -PasswordPolicy.ALLOWED_CHAR=\u5bc6\u7801{1}\u975e\u6cd5\u5b57\u7b26{0}. -PasswordPolicy.ILLEGAL_QWERTY_SEQUENCE=\u5bc6\u7801\u5305\u542b\u952e\u76d8\u5e8f\u5217{0}. -PasswordPolicy.ILLEGAL_ALPHABETICAL_SEQUENCE=\u5bc6\u7801\u5305\u542b\u5b57\u7b26\u5e8f\u5217{0}. -PasswordPolicy.ILLEGAL_NUMERICAL_SEQUENCE=\u5bc6\u7801\u5305\u542b\u6570\u5b57\u5e8f\u5217{0}. -PasswordPolicy.ILLEGAL_USERNAME=\u5bc6\u7801\u4e0d\u80fd\u5305\u542b\u767b\u5f55\u540d{0}. -PasswordPolicy.ILLEGAL_USERNAME_REVERSED=\u5bc6\u7801{1} \u5305\u542b\u767b\u5f55\u540d{0}\u5012\u5e8f. -PasswordPolicy.ILLEGAL_WHITESPACE=\u5bc6\u7801{1}\u5305\u542b\u7a7a\u683c. -PasswordPolicy.ILLEGAL_NUMBER_RANGE=\u5bc6\u7801{1}\u6570\u5b57 {0}. -PasswordPolicy.ILLEGAL_REPEATED_CHARS=\u5bc6\u7801{2}\u5e8f\u5217{0}\u6216\u8005\u591a\u4e2a\u5b57\u7b26, \u4f46{1}\u5141\u8bb8:{3}\u6b21. -PasswordPolicy.INSUFFICIENT_UPPERCASE=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u5927\u5199\u5b57\u6bcd. -PasswordPolicy.INSUFFICIENT_LOWERCASE=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u5c0f\u5199\u5b57\u6bcd. -PasswordPolicy.INSUFFICIENT_ALPHABETICAL=\u5bc6\u7801\u5305\u542b\u5b57\u7b26\u5e8f\u5217{0}. -PasswordPolicy.INSUFFICIENT_DIGIT=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u6570\u5b57\u5b57\u6bcd. -PasswordPolicy.INSUFFICIENT_SPECIAL=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u7279\u6b8a\u5b57\u7b26. -PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5bc6\u7801\u5339\u914d {0} of{2}\u5b57\u7b26\u89c4\u5219, \u4f46{1} \u5fc5\u987b. -PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5bc6\u7801\u9047\u5230{1}\u590d\u6742\u89c4\u5219, \u4f46{2}\u5fc5\u987b. -PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6ca1\u6709\u914d\u7f6e\u5bc6\u7801\u957f\u5ea6\u89c4\u5219 {0}. -PasswordPolicy.SOURCE_VIOLATION=\u5bc6\u7801\u4e0d\u80fd\u5305\u542b{0}\u5bc6\u7801. -PasswordPolicy.TOO_LONG=\u5bc6\u7801\u6700\u591a{1}\u4f4d\u5b57\u7b26. -PasswordPolicy.TOO_SHORT=\u5bc6\u7801\u81f3\u5c11{0}\u4f4d\u5b57\u7b26. -PasswordPolicy.TOO_MANY_OCCURRENCES=\u5bc6\u7801\u5305\u542b{0}\u51fa\u73b0{1}, \u6700\u591a{2} \u6b21. -PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539f\u5bc6\u7801\u4e0d\u5339\u914d. -PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65b0\u5bc6\u7801\u4e0e\u786e\u8ba4\u5bc6\u7801\u4e0d\u4e00\u81f4. -PasswordPolicy.OLD_PASSWORD_MATCH=\u65b0\u5bc6\u7801\u4e0d\u80fd\u4e0e\u65e7\u5bc6\u7801\u4e00\u81f4. +PasswordPolicy.HISTORY_VIOLATION=\u5BC6\u7801\u5339\u914D\u4E86{0}\u5386\u53F2\u5BC6\u7801. +PasswordPolicy.ILLEGAL_WORD=\u5BC6\u7801\u5305\u542B\u5728\u5BC6\u7801\u5B57\u5178{0}. +PasswordPolicy.ILLEGAL_WORD_REVERSED=\u5BC6\u7801\u5305\u542B\u5728\u5BC6\u7801\u5B57\u5178\u5012\u5E8F{0}. +PasswordPolicy.ILLEGAL_DIGEST_WORD=\u5BC6\u7801\u5305\u542B\u5728\u5B57\u5178\u4E2D. +PasswordPolicy.ILLEGAL_DIGEST_WORD_REVERSED=\u5BC6\u7801\u5305\u542B\u5728\u5B57\u5178\u5012\u5E8F\u4E2D. +PasswordPolicy.ILLEGAL_MATCH=\u5BC6\u7801\u5339\u914D\u975E\u6CD5\u89C4\u5219{0}. +PasswordPolicy.ALLOWED_MATCH=\u5BC6\u7801\u5FC5\u987B\u5339\u914D\u89C4\u5219{0}. +PasswordPolicy.ILLEGAL_CHAR=\u5BC6\u7801{1}\u5305\u542B\u975E\u6CD5\u5B57\u7B26{0}. +PasswordPolicy.ALLOWED_CHAR=\u5BC6\u7801{1}\u975E\u6CD5\u5B57\u7B26{0}. +PasswordPolicy.ILLEGAL_QWERTY_SEQUENCE=\u5BC6\u7801\u5305\u542B\u952E\u76D8\u5E8F\u5217{0}. +PasswordPolicy.ILLEGAL_ALPHABETICAL_SEQUENCE=\u5BC6\u7801\u5305\u542B\u5B57\u7B26\u5E8F\u5217{0}. +PasswordPolicy.ILLEGAL_NUMERICAL_SEQUENCE=\u5BC6\u7801\u5305\u542B\u6570\u5B57\u5E8F\u5217{0}. +PasswordPolicy.ILLEGAL_USERNAME=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u767B\u5F55\u540D{0}. +PasswordPolicy.ILLEGAL_USERNAME_REVERSED=\u5BC6\u7801{1} \u5305\u542B\u767B\u5F55\u540D{0}\u5012\u5E8F. +PasswordPolicy.ILLEGAL_WHITESPACE=\u5BC6\u7801{1}\u5305\u542B\u7A7A\u683C. +PasswordPolicy.ILLEGAL_NUMBER_RANGE=\u5BC6\u7801{1}\u6570\u5B57 {0}. +PasswordPolicy.ILLEGAL_REPEATED_CHARS=\u5BC6\u7801{2}\u5E8F\u5217{0}\u6216\u8005\u591A\u4E2A\u5B57\u7B26, \u4F46{1}\u5141\u8BB8:{3}\u6B21. +PasswordPolicy.INSUFFICIENT_UPPERCASE=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u5927\u5199\u5B57\u6BCD. +PasswordPolicy.INSUFFICIENT_LOWERCASE=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u5C0F\u5199\u5B57\u6BCD. +PasswordPolicy.INSUFFICIENT_ALPHABETICAL=\u5BC6\u7801\u5305\u542B\u5B57\u7B26\u5E8F\u5217{0}. +PasswordPolicy.INSUFFICIENT_DIGIT=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u6570\u5B57\u5B57\u6BCD. +PasswordPolicy.INSUFFICIENT_SPECIAL=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u7279\u6B8A\u5B57\u7B26. +PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5BC6\u7801\u5339\u914D {0} of{2}\u5B57\u7B26\u89C4\u5219, \u4F46{1} \u5FC5\u987B. +PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5BC6\u7801\u9047\u5230{1}\u590D\u6742\u89C4\u5219, \u4F46{2}\u5FC5\u987B. +PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6CA1\u6709\u914D\u7F6E\u5BC6\u7801\u957F\u5EA6\u89C4\u5219 {0}. +PasswordPolicy.SOURCE_VIOLATION=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B{0}\u5BC6\u7801. +PasswordPolicy.TOO_LONG=\u5BC6\u7801\u6700\u591A{1}\u4F4D\u5B57\u7B26. +PasswordPolicy.TOO_SHORT=\u5BC6\u7801\u81F3\u5C11{0}\u4F4D\u5B57\u7B26. +PasswordPolicy.TOO_MANY_OCCURRENCES=\u5BC6\u7801\u5305\u542B{0}\u51FA\u73B0{1}, \u6700\u591A{2} \u6B21. +PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539F\u5BC6\u7801\u4E0D\u5339\u914D. +PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65B0\u5BC6\u7801\u4E0E\u786E\u8BA4\u5BC6\u7801\u4E0D\u4E00\u81F4. +PasswordPolicy.OLD_PASSWORD_MATCH=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u4E00\u81F4. -#\u7528\u6237\u767b\u5f55\u9519\u8bef\u63d0\u9192 -login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8fbe\u6700\u5927\u9650\u5236{0}\u6b21,\u8bf7{1}\u5C0F\u65F6\u540e\u91CD\u8BD5. -login.error.locked=\u7528\u6237\u88ab\u9501\u5b9a. -login.error.inactive=\u7528\u6237\u975e\u6d3b\u52a8\u72b6\u6001. -login.error.password=\u7528\u6237\u540D\u6216\u5bc6\u7801\u65e0\u6548. -login.error.password.attempts=\u767B\u5F55\u5931\u8D25{0}\u6B21, \u5931\u8D25{1}\u6B21\u5C06\u9501\u5B9A{2}\u5C0F\u65F6. -login.error.username=\u7528\u6237\u540D\u6216\u5bc6\u7801\u65e0\u6548. -login.error.username.null=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a. -login.error.email.null=\u767b\u5f55\u90ae\u7bb1\u4e0d\u80fd\u4e3a\u7a7a. -login.error.password.null=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a. -login.error.captcha=\u9a8c\u8bc1\u7801\u9519\u8bef\uff0c\u8bf7\u91cd\u65b0\u767B\u5F55. -login.error.authtype=\u767b\u5f55\u8ba4\u8bc1\u7c7b\u578b\u9519\u8bef. -login.error.session=\u767b\u5f55\u4f1a\u8bdd\u5931\u6548\uff0c\u8bf7\u91cd\u65b0\u767b\u9646. -login.error.social=\u793e\u4ea4\u8d26\u53f7\u6388\u6743\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5. \ No newline at end of file +#\u7528\u6237\u767B\u5F55\u9519\u8BEF\u63D0\u9192 +login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8FBE\u6700\u5927\u9650\u5236{0}\u6B21,\u8BF7{1}\u5206\u949F\u540E\u91CD\u8BD5. +login.error.locked=\u7528\u6237\u88AB\u9501\u5B9A. +login.error.inactive=\u7528\u6237\u975E\u6D3B\u52A8\u72B6\u6001. +login.error.password=\u7528\u6237\u540D\u6216\u5BC6\u7801\u65E0\u6548. +login.error.password.attempts=\u767B\u5F55\u5931\u8D25{0}\u6B21, \u5931\u8D25{1}\u6B21\u5C06\u9501\u5B9A{2}\u5206\u949F. +login.error.username=\u7528\u6237\u540D\u6216\u5BC6\u7801\u65E0\u6548. +login.error.username.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A. +login.error.email.null=\u767B\u5F55\u90AE\u7BB1\u4E0D\u80FD\u4E3A\u7A7A. +login.error.password.null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A. +login.error.captcha=\u9A8C\u8BC1\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55. +login.error.authtype=\u767B\u5F55\u8BA4\u8BC1\u7C7B\u578B\u9519\u8BEF. +login.error.session=\u767B\u5F55\u4F1A\u8BDD\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u9646. +login.error.social=\u793E\u4EA4\u8D26\u53F7\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5. \ No newline at end of file diff --git a/maxkey-core/src/main/resources/messages/passwordpolicy_message_en.properties b/maxkey-core/src/main/resources/messages/passwordpolicy_message_en.properties index 4de646dd0..81230420e 100644 --- a/maxkey-core/src/main/resources/messages/passwordpolicy_message_en.properties +++ b/maxkey-core/src/main/resources/messages/passwordpolicy_message_en.properties @@ -33,11 +33,11 @@ PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=new password not match confirm password PasswordPolicy.OLD_PASSWORD_MATCH=new password match old password. #for user login -login.error.attempts=login attempts the maximum {0} times, please login {1} hours later. +login.error.attempts=login attempts the maximum {0} times, please login {1} minutes later. login.error.locked=The user is locked. login.error.inactive=User inactive state. login.error.password=Invalid username or password. -login.error.password.attempts=login fail {0} times, fail {1} times will lock {2} hours. +login.error.password.attempts=login fail {0} times, fail {1} times will lock {2} minutes. login.error.username=Invalid username or password. login.error.username.null=username cannot be empty. login.error.email.null=email cannot be empty. diff --git a/maxkey-core/src/main/resources/messages/passwordpolicy_message_zh_CN.properties b/maxkey-core/src/main/resources/messages/passwordpolicy_message_zh_CN.properties index 69570ac5a..d2f07ef2d 100644 --- a/maxkey-core/src/main/resources/messages/passwordpolicy_message_zh_CN.properties +++ b/maxkey-core/src/main/resources/messages/passwordpolicy_message_zh_CN.properties @@ -1,48 +1,48 @@ #password -PasswordPolicy.HISTORY_VIOLATION=\u5bc6\u7801\u5339\u914d\u4e86{0}\u5386\u53f2\u5bc6\u7801. -PasswordPolicy.ILLEGAL_WORD=\u5bc6\u7801\u5305\u542b\u5728\u5bc6\u7801\u5b57\u5178{0}. -PasswordPolicy.ILLEGAL_WORD_REVERSED=\u5bc6\u7801\u5305\u542b\u5728\u5bc6\u7801\u5b57\u5178\u5012\u5e8f{0}. -PasswordPolicy.ILLEGAL_DIGEST_WORD=\u5bc6\u7801\u5305\u542b\u5728\u5b57\u5178\u4e2d. -PasswordPolicy.ILLEGAL_DIGEST_WORD_REVERSED=\u5bc6\u7801\u5305\u542b\u5728\u5b57\u5178\u5012\u5e8f\u4e2d. -PasswordPolicy.ILLEGAL_MATCH=\u5bc6\u7801\u5339\u914d\u975e\u6cd5\u89c4\u5219{0}. -PasswordPolicy.ALLOWED_MATCH=\u5bc6\u7801\u5fc5\u987b\u5339\u914d\u89c4\u5219{0}. -PasswordPolicy.ILLEGAL_CHAR=\u5bc6\u7801{1}\u5305\u542b\u975e\u6cd5\u5b57\u7b26{0}. -PasswordPolicy.ALLOWED_CHAR=\u5bc6\u7801{1}\u975e\u6cd5\u5b57\u7b26{0}. -PasswordPolicy.ILLEGAL_QWERTY_SEQUENCE=\u5bc6\u7801\u5305\u542b\u952e\u76d8\u5e8f\u5217{0}. -PasswordPolicy.ILLEGAL_ALPHABETICAL_SEQUENCE=\u5bc6\u7801\u5305\u542b\u5b57\u7b26\u5e8f\u5217{0}. -PasswordPolicy.ILLEGAL_NUMERICAL_SEQUENCE=\u5bc6\u7801\u5305\u542b\u6570\u5b57\u5e8f\u5217{0}. -PasswordPolicy.ILLEGAL_USERNAME=\u5bc6\u7801\u4e0d\u80fd\u5305\u542b\u767b\u5f55\u540d{0}. -PasswordPolicy.ILLEGAL_USERNAME_REVERSED=\u5bc6\u7801{1} \u5305\u542b\u767b\u5f55\u540d{0}\u5012\u5e8f. -PasswordPolicy.ILLEGAL_WHITESPACE=\u5bc6\u7801{1}\u5305\u542b\u7a7a\u683c. -PasswordPolicy.ILLEGAL_NUMBER_RANGE=\u5bc6\u7801{1}\u6570\u5b57 {0}. -PasswordPolicy.ILLEGAL_REPEATED_CHARS=\u5bc6\u7801{2}\u5e8f\u5217{0}\u6216\u8005\u591a\u4e2a\u5b57\u7b26, \u4f46{1}\u5141\u8bb8:{3}\u6b21. -PasswordPolicy.INSUFFICIENT_UPPERCASE=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u5927\u5199\u5b57\u6bcd. -PasswordPolicy.INSUFFICIENT_LOWERCASE=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u5c0f\u5199\u5b57\u6bcd. -PasswordPolicy.INSUFFICIENT_ALPHABETICAL=\u5bc6\u7801\u5305\u542b\u5b57\u7b26\u5e8f\u5217{0}. -PasswordPolicy.INSUFFICIENT_DIGIT=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u6570\u5b57\u5b57\u6bcd. -PasswordPolicy.INSUFFICIENT_SPECIAL=\u5bc6\u7801\u81f3\u5c11\u5305\u542b{0}\u4f4d\u7279\u6b8a\u5b57\u7b26. -PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5bc6\u7801\u5339\u914d {0} of{2}\u5b57\u7b26\u89c4\u5219, \u4f46{1} \u5fc5\u987b. -PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5bc6\u7801\u9047\u5230{1}\u590d\u6742\u89c4\u5219, \u4f46{2}\u5fc5\u987b. -PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6ca1\u6709\u914d\u7f6e\u5bc6\u7801\u957f\u5ea6\u89c4\u5219 {0}. -PasswordPolicy.SOURCE_VIOLATION=\u5bc6\u7801\u4e0d\u80fd\u5305\u542b{0}\u5bc6\u7801. -PasswordPolicy.TOO_LONG=\u5bc6\u7801\u6700\u591a{1}\u4f4d\u5b57\u7b26. -PasswordPolicy.TOO_SHORT=\u5bc6\u7801\u81f3\u5c11{0}\u4f4d\u5b57\u7b26. -PasswordPolicy.TOO_MANY_OCCURRENCES=\u5bc6\u7801\u5305\u542b{0}\u51fa\u73b0{1}, \u6700\u591a{2} \u6b21. -PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539f\u5bc6\u7801\u4e0d\u5339\u914d. -PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65b0\u5bc6\u7801\u4e0e\u786e\u8ba4\u5bc6\u7801\u4e0d\u4e00\u81f4. -PasswordPolicy.OLD_PASSWORD_MATCH=\u65b0\u5bc6\u7801\u4e0d\u80fd\u4e0e\u65e7\u5bc6\u7801\u4e00\u81f4. +PasswordPolicy.HISTORY_VIOLATION=\u5BC6\u7801\u5339\u914D\u4E86{0}\u5386\u53F2\u5BC6\u7801. +PasswordPolicy.ILLEGAL_WORD=\u5BC6\u7801\u5305\u542B\u5728\u5BC6\u7801\u5B57\u5178{0}. +PasswordPolicy.ILLEGAL_WORD_REVERSED=\u5BC6\u7801\u5305\u542B\u5728\u5BC6\u7801\u5B57\u5178\u5012\u5E8F{0}. +PasswordPolicy.ILLEGAL_DIGEST_WORD=\u5BC6\u7801\u5305\u542B\u5728\u5B57\u5178\u4E2D. +PasswordPolicy.ILLEGAL_DIGEST_WORD_REVERSED=\u5BC6\u7801\u5305\u542B\u5728\u5B57\u5178\u5012\u5E8F\u4E2D. +PasswordPolicy.ILLEGAL_MATCH=\u5BC6\u7801\u5339\u914D\u975E\u6CD5\u89C4\u5219{0}. +PasswordPolicy.ALLOWED_MATCH=\u5BC6\u7801\u5FC5\u987B\u5339\u914D\u89C4\u5219{0}. +PasswordPolicy.ILLEGAL_CHAR=\u5BC6\u7801{1}\u5305\u542B\u975E\u6CD5\u5B57\u7B26{0}. +PasswordPolicy.ALLOWED_CHAR=\u5BC6\u7801{1}\u975E\u6CD5\u5B57\u7B26{0}. +PasswordPolicy.ILLEGAL_QWERTY_SEQUENCE=\u5BC6\u7801\u5305\u542B\u952E\u76D8\u5E8F\u5217{0}. +PasswordPolicy.ILLEGAL_ALPHABETICAL_SEQUENCE=\u5BC6\u7801\u5305\u542B\u5B57\u7B26\u5E8F\u5217{0}. +PasswordPolicy.ILLEGAL_NUMERICAL_SEQUENCE=\u5BC6\u7801\u5305\u542B\u6570\u5B57\u5E8F\u5217{0}. +PasswordPolicy.ILLEGAL_USERNAME=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u767B\u5F55\u540D{0}. +PasswordPolicy.ILLEGAL_USERNAME_REVERSED=\u5BC6\u7801{1} \u5305\u542B\u767B\u5F55\u540D{0}\u5012\u5E8F. +PasswordPolicy.ILLEGAL_WHITESPACE=\u5BC6\u7801{1}\u5305\u542B\u7A7A\u683C. +PasswordPolicy.ILLEGAL_NUMBER_RANGE=\u5BC6\u7801{1}\u6570\u5B57 {0}. +PasswordPolicy.ILLEGAL_REPEATED_CHARS=\u5BC6\u7801{2}\u5E8F\u5217{0}\u6216\u8005\u591A\u4E2A\u5B57\u7B26, \u4F46{1}\u5141\u8BB8:{3}\u6B21. +PasswordPolicy.INSUFFICIENT_UPPERCASE=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u5927\u5199\u5B57\u6BCD. +PasswordPolicy.INSUFFICIENT_LOWERCASE=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u5C0F\u5199\u5B57\u6BCD. +PasswordPolicy.INSUFFICIENT_ALPHABETICAL=\u5BC6\u7801\u5305\u542B\u5B57\u7B26\u5E8F\u5217{0}. +PasswordPolicy.INSUFFICIENT_DIGIT=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u6570\u5B57\u5B57\u6BCD. +PasswordPolicy.INSUFFICIENT_SPECIAL=\u5BC6\u7801\u81F3\u5C11\u5305\u542B{0}\u4F4D\u7279\u6B8A\u5B57\u7B26. +PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5BC6\u7801\u5339\u914D {0} of{2}\u5B57\u7B26\u89C4\u5219, \u4F46{1} \u5FC5\u987B. +PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5BC6\u7801\u9047\u5230{1}\u590D\u6742\u89C4\u5219, \u4F46{2}\u5FC5\u987B. +PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6CA1\u6709\u914D\u7F6E\u5BC6\u7801\u957F\u5EA6\u89C4\u5219 {0}. +PasswordPolicy.SOURCE_VIOLATION=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B{0}\u5BC6\u7801. +PasswordPolicy.TOO_LONG=\u5BC6\u7801\u6700\u591A{1}\u4F4D\u5B57\u7B26. +PasswordPolicy.TOO_SHORT=\u5BC6\u7801\u81F3\u5C11{0}\u4F4D\u5B57\u7B26. +PasswordPolicy.TOO_MANY_OCCURRENCES=\u5BC6\u7801\u5305\u542B{0}\u51FA\u73B0{1}, \u6700\u591A{2} \u6B21. +PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539F\u5BC6\u7801\u4E0D\u5339\u914D. +PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65B0\u5BC6\u7801\u4E0E\u786E\u8BA4\u5BC6\u7801\u4E0D\u4E00\u81F4. +PasswordPolicy.OLD_PASSWORD_MATCH=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u4E00\u81F4. -#\u7528\u6237\u767b\u5f55\u9519\u8bef\u63d0\u9192 -login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8fbe\u6700\u5927\u9650\u5236{0}\u6b21,\u8bf7{1}\u5C0F\u65F6\u540e\u91CD\u8BD5. -login.error.locked=\u7528\u6237\u88ab\u9501\u5b9a. -login.error.inactive=\u7528\u6237\u975e\u6d3b\u52a8\u72b6\u6001. -login.error.password=\u7528\u6237\u540D\u6216\u5bc6\u7801\u65e0\u6548. -login.error.password.attempts=\u767B\u5F55\u5931\u8D25{0}\u6B21, \u5931\u8D25{1}\u6B21\u5C06\u9501\u5B9A{2}\u5C0F\u65F6. -login.error.username=\u7528\u6237\u540D\u6216\u5bc6\u7801\u65e0\u6548. -login.error.username.null=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a. -login.error.email.null=\u767b\u5f55\u90ae\u7bb1\u4e0d\u80fd\u4e3a\u7a7a. -login.error.password.null=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a. -login.error.captcha=\u9a8c\u8bc1\u7801\u9519\u8bef\uff0c\u8bf7\u91cd\u65b0\u767B\u5F55. -login.error.authtype=\u767b\u5f55\u8ba4\u8bc1\u7c7b\u578b\u9519\u8bef. -login.error.session=\u767b\u5f55\u4f1a\u8bdd\u5931\u6548\uff0c\u8bf7\u91cd\u65b0\u767b\u9646. -login.error.social=\u793e\u4ea4\u8d26\u53f7\u6388\u6743\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5. \ No newline at end of file +#\u7528\u6237\u767B\u5F55\u9519\u8BEF\u63D0\u9192 +login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8FBE\u6700\u5927\u9650\u5236{0}\u6B21,\u8BF7{1}\u5206\u949F\u540E\u91CD\u8BD5. +login.error.locked=\u7528\u6237\u88AB\u9501\u5B9A. +login.error.inactive=\u7528\u6237\u975E\u6D3B\u52A8\u72B6\u6001. +login.error.password=\u7528\u6237\u540D\u6216\u5BC6\u7801\u65E0\u6548. +login.error.password.attempts=\u767B\u5F55\u5931\u8D25{0}\u6B21, \u5931\u8D25{1}\u6B21\u5C06\u9501\u5B9A{2}\u5206\u949F. +login.error.username=\u7528\u6237\u540D\u6216\u5BC6\u7801\u65E0\u6548. +login.error.username.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A. +login.error.email.null=\u767B\u5F55\u90AE\u7BB1\u4E0D\u80FD\u4E3A\u7A7A. +login.error.password.null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A. +login.error.captcha=\u9A8C\u8BC1\u7801\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55. +login.error.authtype=\u767B\u5F55\u8BA4\u8BC1\u7C7B\u578B\u9519\u8BEF. +login.error.session=\u767B\u5F55\u4F1A\u8BDD\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u9646. +login.error.social=\u793E\u4EA4\u8D26\u53F7\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5. \ No newline at end of file diff --git a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/AccountsService.java b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/AccountsService.java index 9ec586c3f..06a3db7ef 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/AccountsService.java +++ b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/AccountsService.java @@ -143,6 +143,7 @@ public class AccountsService extends JpaBaseService{ account.setRelatedUsername(generateAccount(user,strategy)); account.setRelatedPassword(PasswordReciprocal.getInstance().encode(userInfoService.randomPassword())); + account.setInstId(strategy.getInstId()); account.setCreateType("automatic"); account.setStatus(ConstsStatus.ACTIVE); account.setStrategyId(strategy.getId()); diff --git a/maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/GroupPrivilegesMapper.xml b/maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/GroupPrivilegesMapper.xml index 3dccb3556..30e9f33a6 100644 --- a/maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/GroupPrivilegesMapper.xml +++ b/maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/GroupPrivilegesMapper.xml @@ -22,8 +22,10 @@ select gp.id, gp.groupid, + g.name groupname, gp.appid, apps.name, + apps.name appname, apps.icon, apps.loginurl, apps.protocol, @@ -33,12 +35,18 @@ apps.vendorurl from mxk_apps apps, - mxk_group_privileges gp + mxk_group_privileges gp, + mxk_groups g where apps.instid = #{instId} and gp.instid = #{instId} - and gp.appid = apps.id - and gp.groupid = #{groupId} + and g.instid = #{instId} + and gp.appid = apps.id + and gp.groupid = g.id + + and gp.groupid = #{groupId} + and g.id = #{groupId} + diff --git a/maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/ReportMapper.xml b/maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/ReportMapper.xml index 1c1cf30ca..29bbff961 100644 --- a/maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/ReportMapper.xml +++ b/maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/ReportMapper.xml @@ -37,15 +37,40 @@ + +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
- + - + Id {{ 'mxk.users.username' | i18n }} {{ 'mxk.users.displayName' | i18n }} @@ -58,18 +43,17 @@ - - {{ data.username }} - {{ data.displayName }} - {{ data.employeeNumber }} - {{ data.department }} - {{ data.jobTitle }} - {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }} - + + {{ data.username }} + {{ data.displayName }} + {{ data.employeeNumber }} + {{ data.department }} + {{ data.jobTitle }} + {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | + i18n) }} + @@ -77,4 +61,4 @@
-
+ \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/group-members/group-members.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/group-members/group-members.component.html index cd1024cdf..61dece466 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/group-members/group-members.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/group-members/group-members.component.html @@ -8,18 +8,12 @@ {{ 'mxk.groups.name' | i18n }} - + - + @@ -28,23 +22,18 @@ {{ 'mxk.users.username' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -55,69 +44,49 @@ + }}
- + - + {{ 'mxk.groups.name' | i18n }} {{ 'mxk.users.username' | i18n }} - {{ 'mxk.users.displayName' | i18n }} {{ 'mxk.users.employeeNumber' | i18n }} + {{ 'mxk.users.displayName' | i18n }} {{ 'mxk.users.department' | i18n }} {{ 'mxk.users.jobTitle' | i18n }} {{ 'mxk.users.gender' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - - {{ data.groupName }} - {{ data.username }} - {{ data.displayName }} - {{ data.employeeNumber }} - {{ data.department }} - {{ data.jobTitle }} - {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }} -
-
+ + {{ data.groupName }} + {{ data.username }} + {{ data.employeeNumber }} + {{ data.displayName }} + {{ data.department }} + {{ data.jobTitle }} + {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | + i18n) }} + +
+ +
+
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/groups.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/groups.component.html index f2ca68f80..83fcbf1d3 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/groups.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/groups.component.html @@ -7,17 +7,19 @@ {{ 'mxk.groups.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -27,61 +29,46 @@ + }} - + - + Id {{ 'mxk.groups.name' | i18n }} {{ 'mxk.groups.dynamic' | i18n }} {{ 'mxk.text.description' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} {{ data.name }} - + {{ data.description }} -
- + }}
+ }} + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/select-groups/select-groups.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/select-groups/select-groups.component.html index 20f8477be..dcd985074 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/select-groups/select-groups.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/select-groups/select-groups.component.html @@ -6,37 +6,28 @@ {{ 'mxk.groups.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
- + @@ -47,16 +38,14 @@ - + {{ data.id }} - {{ data.name }} - + {{ data.name }} + @@ -64,4 +53,4 @@
-
+ \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/privileges/privileges.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/privileges/privileges.component.html index ceac9d2f6..246ab103e 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/privileges/privileges.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/privileges/privileges.component.html @@ -8,18 +8,12 @@ {{ 'mxk.groups.name' | i18n }} - + - + @@ -28,16 +22,18 @@ {{ 'mxk.apps.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -48,58 +44,75 @@ + }}
- + - + Id + {{ 'mxk.groups.name' | i18n }} {{ 'mxk.apps.icon' | i18n }} {{ 'mxk.apps.name' | i18n }} {{ 'mxk.apps.protocol' | i18n }} {{ 'mxk.apps.category' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - + + {{ data.groupName }} - {{ data.name }} - {{ data.protocol }} - {{ data.category }} -
+ {{ data.name }} + {{ data.protocol }} + +
{{ 'mxk.apps.category.none' | i18n }}
+
{{ 'mxk.apps.category.1011' | i18n }}
+
{{ 'mxk.apps.category.1012' | i18n }}
+
{{ 'mxk.apps.category.1013' | i18n }}
+
{{ 'mxk.apps.category.1014' | i18n }}
+
{{ 'mxk.apps.category.1015' | i18n }}
+
{{ 'mxk.apps.category.1016' | i18n }}
+
{{ 'mxk.apps.category.1017' | i18n }}
+
{{ 'mxk.apps.category.1111' | i18n }}
+
{{ 'mxk.apps.category.1112' | i18n }}
+
{{ 'mxk.apps.category.1113' | i18n }}
+
{{ 'mxk.apps.category.1114' | i18n }}
+
{{ 'mxk.apps.category.1211' | i18n }}
+
{{ 'mxk.apps.category.1212' | i18n }}
+
{{ 'mxk.apps.category.1213' | i18n }}
+
{{ 'mxk.apps.category.1214' | i18n }}
+
{{ 'mxk.apps.category.1215' | i18n }}
+
{{ 'mxk.apps.category.1311' | i18n }}
+
{{ 'mxk.apps.category.1411' | i18n }}
+
{{ 'mxk.apps.category.1511' | i18n }}
+
{{ 'mxk.apps.category.1512' | i18n }}
+
{{ 'mxk.apps.category.1611' | i18n }}
+
{{ 'mxk.apps.category.1711' | i18n }}
+
{{ 'mxk.apps.category.1712' | i18n }}
+
{{ 'mxk.apps.category.1811' | i18n }}
+
{{ 'mxk.apps.category.1812' | i18n }}
+
{{ 'mxk.apps.category.1911' | i18n }}
+
{{ 'mxk.apps.category.1912' | i18n }}
+ + +
+ }} +
+
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/accounts/accounts.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/accounts/accounts.component.html index 3d27cd7c1..d223e19cf 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/accounts/accounts.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/accounts/accounts.component.html @@ -5,39 +5,35 @@
- {{ 'mxk.accounts.username' | i18n }} + {{ 'mxk.accounts.appName' | i18n }} - + + + + + +
- {{ 'mxk.accounts.appName' | i18n }} + {{ 'mxk.accounts.username' | i18n }} - - - - - - +
+
- + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -47,44 +43,29 @@ + }} - + - + Id {{ 'mxk.accounts.username' | i18n }} {{ 'mxk.accounts.displayName' | i18n }} {{ 'mxk.accounts.appName' | i18n }} {{ 'mxk.accounts.relatedUsername' | i18n }} {{ 'mxk.text.status' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} @@ -92,18 +73,20 @@ {{ data.displayName }} {{ data.appName }} {{ data.relatedUsername }} - -
- + }}
+ }} + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/accounts/accounts.component.ts b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/accounts/accounts.component.ts index 4b9f5e184..17f84f84c 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/accounts/accounts.component.ts +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/accounts/accounts.component.ts @@ -36,7 +36,7 @@ import { AccountEditerComponent } from './account-editer/account-editer.componen export class AccountsComponent implements OnInit { query: { params: { - name: String; + username: String; displayName: String; employeeNumber: String; appName: String; @@ -60,7 +60,7 @@ export class AccountsComponent implements OnInit { checked: boolean; } = { params: { - name: '', + username: '', displayName: '', employeeNumber: '', appName: '', diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/apps.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/apps.component.html index 28a0bc34e..a0c5bac70 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/apps.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/apps.component.html @@ -7,7 +7,8 @@ {{ 'mxk.apps.name' | i18n }} - + @@ -16,6 +17,7 @@ {{ 'mxk.apps.protocol' | i18n }} + @@ -32,12 +34,13 @@
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }} +
@@ -63,63 +66,80 @@ + }} - + - + Id {{ 'mxk.apps.icon' | i18n }} {{ 'mxk.apps.name' | i18n }} {{ 'mxk.apps.protocol' | i18n }} {{ 'mxk.apps.category' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.status' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} - {{ data.name }} - {{ data.protocol }} - {{ data.category }} -
- + }}
+ }} + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/select-apps/select-apps.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/select-apps/select-apps.component.html index 5f178a06f..479a966d1 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/select-apps/select-apps.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/select-apps/select-apps.component.html @@ -6,37 +6,28 @@ {{ 'mxk.apps.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
- + @@ -49,19 +40,45 @@ - + {{ data.id }} - - {{ data.name }} - {{ data.protocol }} - {{ data.category }} + + {{ data.name }} + {{ data.protocol }} + +
{{ 'mxk.apps.category.none' | i18n }}
+
{{ 'mxk.apps.category.1011' | i18n }}
+
{{ 'mxk.apps.category.1012' | i18n }}
+
{{ 'mxk.apps.category.1013' | i18n }}
+
{{ 'mxk.apps.category.1014' | i18n }}
+
{{ 'mxk.apps.category.1015' | i18n }}
+
{{ 'mxk.apps.category.1016' | i18n }}
+
{{ 'mxk.apps.category.1017' | i18n }}
+
{{ 'mxk.apps.category.1111' | i18n }}
+
{{ 'mxk.apps.category.1112' | i18n }}
+
{{ 'mxk.apps.category.1113' | i18n }}
+
{{ 'mxk.apps.category.1114' | i18n }}
+
{{ 'mxk.apps.category.1211' | i18n }}
+
{{ 'mxk.apps.category.1212' | i18n }}
+
{{ 'mxk.apps.category.1213' | i18n }}
+
{{ 'mxk.apps.category.1214' | i18n }}
+
{{ 'mxk.apps.category.1215' | i18n }}
+
{{ 'mxk.apps.category.1311' | i18n }}
+
{{ 'mxk.apps.category.1411' | i18n }}
+
{{ 'mxk.apps.category.1511' | i18n }}
+
{{ 'mxk.apps.category.1512' | i18n }}
+
{{ 'mxk.apps.category.1611' | i18n }}
+
{{ 'mxk.apps.category.1711' | i18n }}
+
{{ 'mxk.apps.category.1712' | i18n }}
+
{{ 'mxk.apps.category.1811' | i18n }}
+
{{ 'mxk.apps.category.1812' | i18n }}
+
{{ 'mxk.apps.category.1911' | i18n }}
+
{{ 'mxk.apps.category.1912' | i18n }}
+
@@ -69,4 +86,4 @@
-
+ \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/accounts-strategy/accounts-strategy.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/accounts-strategy/accounts-strategy.component.html index 43fc36265..d8b976f3f 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/accounts-strategy/accounts-strategy.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/accounts-strategy/accounts-strategy.component.html @@ -7,17 +7,19 @@ {{ 'mxk.accountsstrategy.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -27,64 +29,51 @@ + }} - + - + Id {{ 'mxk.accountsstrategy.name' | i18n }} {{ 'mxk.accountsstrategy.appIcon' | i18n }} {{ 'mxk.accountsstrategy.appName' | i18n }} {{ 'mxk.accountsstrategy.createType' | i18n }} {{ 'mxk.text.status' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} - {{ data.name }} + {{ data.name }} - {{ data.appName }} - {{ data.createType == 'manual' ? ('mxk.text.manual' | i18n) : ('mxk.text.manual' | i18n) }} - {{ data.status == '1' ? ('mxk.text.status.active' | i18n) : ('mxk.text.inactive' | i18n) }} -
- + }}
+ }} + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/adapters/adapters.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/adapters/adapters.component.html index 9276fcd0b..975af30d2 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/adapters/adapters.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/adapters/adapters.component.html @@ -7,17 +7,19 @@ {{ 'mxk.adapters.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -27,62 +29,47 @@ + }} - + - + Id {{ 'mxk.adapters.name' | i18n }} {{ 'mxk.adapters.protocol' | i18n }} {{ 'mxk.text.sortIndex' | i18n }} {{ 'mxk.text.description' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} {{ data.name }} - {{ data.protocol }} + {{ data.protocol }} {{ data.sortIndex }} {{ data.description }} -
- + }}
+ }} + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/ldap-context/ldap-context.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/ldap-context/ldap-context.component.html index 4bab74c96..e0cd56689 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/ldap-context/ldap-context.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/ldap-context/ldap-context.component.html @@ -4,11 +4,13 @@ {{ 'mxk.text.id' | i18n }} - + - {{ 'mxk.ldapcontext.product' | i18n }} + {{ 'mxk.ldapcontext.product' | i18n }} + @@ -20,87 +22,81 @@ {{ 'mxk.text.status' | i18n }} - + - {{ 'mxk.ldapcontext.providerUrl' | i18n }} - - + {{ 'mxk.ldapcontext.providerUrl' | i18n }} + + + - {{ 'mxk.ldapcontext.accountMapping' | i18n }} + {{ 'mxk.ldapcontext.accountMapping' | i18n + }} - + + - {{ 'mxk.ldapcontext.principal' | i18n }} + {{ 'mxk.ldapcontext.principal' | i18n }} + - + - {{ 'mxk.ldapcontext.credentials' | i18n }} + {{ 'mxk.ldapcontext.credentials' | i18n }} + - + - - {{ 'mxk.ldapcontext.filters' | i18n }} - - - - - - {{ 'mxk.ldapcontext.basedn' | i18n }} + + {{ 'mxk.ldapcontext.basedn' | i18n }} + - + + + + {{ 'mxk.ldapcontext.filters' | i18n }} + + + + + + {{ 'mxk.ldapcontext.msadDomain' | i18n }} - + {{ 'mxk.ldapcontext.sslSwitch' | i18n }} - + @@ -108,19 +104,16 @@ {{ 'mxk.ldapcontext.trustStore' | i18n }} - + - {{ 'mxk.ldapcontext.trustStorePassword' | i18n }} + {{ 'mxk.ldapcontext.trustStorePassword' | i18n }} + - + @@ -129,4 +122,4 @@ - + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/password-policy/password-policy.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/password-policy/password-policy.component.html index 2fdeea3d2..07d73675b 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/password-policy/password-policy.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/password-policy/password-policy.component.html @@ -4,237 +4,152 @@ id - + - {{ 'mxk.passwordpolicy.minLength' | i18n }} + {{ 'mxk.passwordpolicy.minLength' | i18n }} + - + - {{ 'mxk.passwordpolicy.maxLength' | i18n }} + {{ 'mxk.passwordpolicy.maxLength' | i18n }} + - + - {{ 'mxk.passwordpolicy.lowerCase' | i18n }} + {{ 'mxk.passwordpolicy.lowerCase' | i18n }} + - + - {{ 'mxk.passwordpolicy.upperCase' | i18n }} + {{ 'mxk.passwordpolicy.upperCase' | i18n }} + - + - {{ 'mxk.passwordpolicy.digits' | i18n }} + {{ 'mxk.passwordpolicy.digits' | i18n }} + - + - {{ 'mxk.passwordpolicy.specialChar' | i18n }} + {{ 'mxk.passwordpolicy.specialChar' | i18n }} + - + - {{ 'mxk.passwordpolicy.attempts' | i18n }} + {{ 'mxk.passwordpolicy.attempts' | i18n }} + - + - {{ 'mxk.passwordpolicy.duration' | i18n }} + {{ 'mxk.passwordpolicy.duration' | i18n }} + - - + + - {{ 'mxk.passwordpolicy.occurances' | i18n }} + {{ 'mxk.passwordpolicy.occurances' | i18n }} + - + - {{ 'mxk.passwordpolicy.expiration' | i18n }} + {{ 'mxk.passwordpolicy.expiration' | i18n }} + - + - {{ 'mxk.passwordpolicy.history' | i18n }} + {{ 'mxk.passwordpolicy.history' | i18n }} + - + - {{ 'mxk.passwordpolicy.username' | i18n }} + {{ 'mxk.passwordpolicy.username' | i18n }} + - + - {{ 'mxk.passwordpolicy.dictionary' | i18n }} + {{ 'mxk.passwordpolicy.dictionary' | i18n }} + - + - {{ 'mxk.passwordpolicy.alphabetical' | i18n }} + {{ 'mxk.passwordpolicy.alphabetical' | i18n + }} - + + - {{ 'mxk.passwordpolicy.numerical' | i18n }} + {{ 'mxk.passwordpolicy.numerical' | i18n }} + - + - {{ 'mxk.passwordpolicy.qwerty' | i18n }} + {{ 'mxk.passwordpolicy.qwerty' | i18n }} + - + @@ -246,4 +161,4 @@
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/socials-provider/socials-provider.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/socials-provider/socials-provider.component.html index b0a9f6791..c848fec75 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/socials-provider/socials-provider.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/socials-provider/socials-provider.component.html @@ -7,24 +7,19 @@ {{ 'mxk.socialsproviders.providerName' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -34,64 +29,50 @@ + }} - + - + Id {{ 'mxk.socialsproviders.icon' | i18n }} {{ 'mxk.socialsproviders.provider' | i18n }} {{ 'mxk.socialsproviders.providerName' | i18n }} {{ 'mxk.text.sortIndex' | i18n }} - {{ 'mxk.text.description' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.status' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} - - {{ data.provider }} - {{ data.providerName }} + + {{ data.provider }} + {{ data.providerName }} {{ data.sortIndex }} - {{ data.description }} -
- + }}
+ }} + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/synchronizers/synchronizers.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/synchronizers/synchronizers.component.html index a33908306..0226d3abf 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/synchronizers/synchronizers.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/config/synchronizers/synchronizers.component.html @@ -7,17 +7,19 @@ {{ 'mxk.synchronizers.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -27,64 +29,51 @@ + }} - + - + Id {{ 'mxk.synchronizers.name' | i18n }} {{ 'mxk.synchronizers.scheduler' | i18n }} - {{ 'mxk.text.description' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.status' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} - {{ data.name }} - {{ data.scheduler }} - {{ data.description }} -
- - + + }}
+ }} + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/dashboard/home/home.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/dashboard/home/home.component.html index 357439491..8bf159230 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/dashboard/home/home.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/dashboard/home/home.component.html @@ -17,16 +17,8 @@

{{ 'mxk.home.onlineUsers' | i18n }}

- +
@@ -37,16 +29,8 @@

{{ 'mxk.home.dayCount' | i18n }}

- +
@@ -57,16 +41,8 @@

{{ 'mxk.home.newUsers' | i18n }}

- +
@@ -77,16 +53,8 @@

{{ 'mxk.home.activeUsers' | i18n }}

- +
@@ -97,7 +65,8 @@ {{ 'mxk.home.dayAccessCount' | i18n }} - + +
@@ -146,4 +115,4 @@
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organizations.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organizations.component.html index e80f24444..a5be892e0 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organizations.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organizations.component.html @@ -7,16 +7,18 @@ {{ 'mxk.organizations.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -27,18 +29,11 @@ + }} -
- +
+ @@ -58,58 +53,47 @@
-
- +
+ - + {{ 'mxk.organizations.code' | i18n }} {{ 'mxk.organizations.name' | i18n }} {{ 'mxk.text.sortIndex' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.status' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} - {{ data.name }} + {{ data.name }} {{ data.sortIndex }} -
- + + +
+
+ }} +
+
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/privileges/privileges.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/privileges/privileges.component.html index 4216ef6c8..a9a882791 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/privileges/privileges.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/privileges/privileges.component.html @@ -3,41 +3,37 @@
-
- - {{ 'mxk.roles.name' | i18n }} - - - - -
{{ 'mxk.resources.appName' | i18n }} - + - +
+
+ + {{ 'mxk.roles.name' | i18n }} + + + + +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -47,59 +43,10 @@
-
- - - - - - Id - {{ 'mxk.roles.name' | i18n }} - {{ 'mxk.roles.dynamic' | i18n }} - - - - - - - {{ data.id }} - - {{ data.name }} - - - - -
-
- +
+ @@ -113,5 +60,35 @@
+
+ + + + + + Id + {{ 'mxk.roles.name' | i18n }} + {{ 'mxk.roles.dynamic' | i18n }} + + + + + + + {{ data.id }} + + {{ data.name }} + + + + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resources.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resources.component.html index effa6c1c5..a90863036 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resources.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resources.component.html @@ -8,18 +8,12 @@ {{ 'mxk.resources.appName' | i18n }} - + - + @@ -28,16 +22,18 @@ {{ 'mxk.resources.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -48,18 +44,11 @@ + }} -
- +
+ @@ -79,60 +68,49 @@
-
- +
+ - + {{ 'mxk.resources.appName' | i18n }} {{ 'mxk.resources.name' | i18n }} {{ 'mxk.resources.resourceType' | i18n }} {{ 'mxk.text.sortIndex' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.status' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.appName }} - {{ data.name }} - {{ data.resourceType }} + {{ data.name }} + {{ data.resourceType }} {{ data.sortIndex }} -
- + }}
+ }} +
+
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members-editer/role-members-editer.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members-editer/role-members-editer.component.html index 5277faba2..f72e2e410 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members-editer/role-members-editer.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members-editer/role-members-editer.component.html @@ -6,47 +6,32 @@ {{ 'mxk.users.username' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
- + - + Id {{ 'mxk.users.username' | i18n }} {{ 'mxk.users.displayName' | i18n }} @@ -58,18 +43,17 @@ - - {{ data.username }} - {{ data.displayName }} - {{ data.employeeNumber }} - {{ data.department }} - {{ data.jobTitle }} - {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }} - + + {{ data.username }} + {{ data.displayName }} + {{ data.employeeNumber }} + {{ data.department }} + {{ data.jobTitle }} + {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | + i18n) }} + @@ -77,4 +61,4 @@
-
+ \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members.component.html index 884c9e830..d6b62da87 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members.component.html @@ -8,18 +8,12 @@ {{ 'mxk.roles.name' | i18n }} - + - + @@ -28,23 +22,18 @@ {{ 'mxk.users.username' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -55,69 +44,49 @@ + }}
- + - + {{ 'mxk.roles.name' | i18n }} {{ 'mxk.users.username' | i18n }} - {{ 'mxk.users.displayName' | i18n }} {{ 'mxk.users.employeeNumber' | i18n }} + {{ 'mxk.users.displayName' | i18n }} {{ 'mxk.users.department' | i18n }} {{ 'mxk.users.jobTitle' | i18n }} {{ 'mxk.users.gender' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - - {{ data.roleName }} - {{ data.username }} - {{ data.displayName }} - {{ data.employeeNumber }} - {{ data.department }} - {{ data.jobTitle }} - {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }} -
-
+ + {{ data.roleName }} + {{ data.username }} + {{ data.employeeNumber }} + {{ data.displayName }} + {{ data.department }} + {{ data.jobTitle }} + {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | + i18n) }} + +
+ +
+
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/roles/roles.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/roles/roles.component.html index ba31470c9..437588200 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/roles/roles.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/roles/roles.component.html @@ -7,17 +7,19 @@ {{ 'mxk.roles.name' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -27,61 +29,46 @@ + }} - + - + Id {{ 'mxk.roles.name' | i18n }} {{ 'mxk.roles.dynamic' | i18n }} {{ 'mxk.text.description' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} {{ data.name }} - + {{ data.description }} -
- + }}
+ }} + +
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/users/select-user/select-user.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/users/select-user/select-user.component.html index 7b60c3074..03b775310 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/users/select-user/select-user.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/users/select-user/select-user.component.html @@ -7,23 +7,18 @@ {{ 'mxk.users.username' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -32,15 +27,8 @@
- + @@ -55,26 +43,15 @@
- + - + {{ 'mxk.text.id' | i18n }} {{ 'mxk.users.username' | i18n }} {{ 'mxk.users.displayName' | i18n }} @@ -82,30 +59,26 @@ {{ 'mxk.users.department' | i18n }} {{ 'mxk.users.jobTitle' | i18n }} {{ 'mxk.users.gender' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} - {{ data.username }} - {{ data.displayName }} - {{ data.employeeNumber }} - {{ data.department }} - {{ data.jobTitle }} - {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }} + {{ data.username }} + {{ data.displayName }} + {{ data.employeeNumber }} + {{ data.department }} + {{ data.jobTitle }} + {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | + i18n) }}
-
+ \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/users/users.component.html b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/users/users.component.html index 34f3b5558..07c1cd923 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/users/users.component.html +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/users/users.component.html @@ -7,23 +7,18 @@ {{ 'mxk.users.username' | i18n }} - +
- - + + + {{ query.expandForm ? ('mxk.text.collapse' | i18n) : ('mxk.text.expand' | i18n) }}
@@ -34,18 +29,11 @@ + }} -
- +
+ @@ -65,27 +53,16 @@
-
- +
+ - + {{ 'mxk.text.id' | i18n }} {{ 'mxk.users.username' | i18n }} {{ 'mxk.users.displayName' | i18n }} @@ -93,40 +70,44 @@ {{ 'mxk.users.department' | i18n }} {{ 'mxk.users.jobTitle' | i18n }} {{ 'mxk.users.gender' | i18n }} - {{ 'mxk.text.action' | i18n }} + {{ 'mxk.text.status' | i18n }} + {{ 'mxk.text.action' | i18n }} - + {{ data.id }} - {{ data.username }} - {{ data.displayName }} - {{ data.employeeNumber }} - {{ data.department }} - {{ data.jobTitle }} - {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }} -
- + }}
+ }} +
+
- + \ No newline at end of file diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/en-US.json b/maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/en-US.json index 6e7695b35..71beb4d6f 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/en-US.json +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/en-US.json @@ -252,7 +252,7 @@ "sslSwitch": "SSL", "filters": "Filters", "basedn": "Base DN", - "msadDomain": "Active Directory Domain", + "msadDomain": "MSAD Domain", "accountMapping": "Account Mapping", "trustStore": "TrustStore", "trustStorePassword": "TrustStore Password" @@ -267,7 +267,7 @@ "isdefault":"Is Default" }, "accountsstrategy" :{ - "name":"Strategy", + "name":"Strategy Name", "appIcon":"App Icon", "appId":"App Id", "appName":"App Name", diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-CN.json b/maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-CN.json index be82dbb1d..3a3c8ccc4 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-CN.json +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-CN.json @@ -57,11 +57,11 @@ }, "audit" : { "": "日志审计", - "logins": "登录日志", + "logins": "系统登录日志", "loginapps": "应用登录日志", "synchronizer": "同步器日志", "connector": "连接器日志", - "operate": "管理日志" + "operate": "系统管理日志" } }, "home":{ @@ -211,7 +211,7 @@ "accounts":{ "userId":"用户编号", "username":"登录账号", - "displayName":"用户名", + "displayName":"姓名", "appName":"应用名称", "appId":"应用编号", "relatedUsername":"应用账号", @@ -253,7 +253,7 @@ "sslSwitch": "SSL", "filters": "过滤器", "basedn": "基本DN", - "msadDomain": "Active Directory域", + "msadDomain": "AD域名", "accountMapping": "账号映射", "trustStore": "证书", "trustStorePassword": "证书密钥" @@ -269,7 +269,7 @@ }, "accountsstrategy" :{ "id":"策略编码", - "name":"策略", + "name":"策略名称", "appIcon":"应用图标", "appId":"应用编码", "appName":"应用名称", @@ -568,7 +568,7 @@ "login.id":"编号", "login.sessionId":"会话", "login.username":"登录名", - "login.displayName":"用户名称", + "login.displayName":"姓名", "login.provider":"提供商", "login.message":"状态", "login.loginType":"登录方式", @@ -586,7 +586,7 @@ "loginapps.sessionId":"会话", "loginapps.userId":"用户编号", "loginapps.username":"登录名", - "loginapps.displayName":"用户名", + "loginapps.displayName":"姓名", "loginapps.appId":"应用编号", "loginapps.appName":"应用名称", "loginapps.loginTime":"登录时间", diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/style-icons-auto.ts b/maxkey-web-frontend/maxkey-web-mgt-app/src/style-icons-auto.ts index 083ab1c9e..badd1eb3c 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/style-icons-auto.ts +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/style-icons-auto.ts @@ -1,19 +1,18 @@ /* * 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. */ - /* * Automatically generated by 'ng g ng-alain:plugin icon' @@ -50,6 +49,7 @@ import { LaptopOutline, LikeOutline, LockOutline, + LockFill, LogoutOutline, MailOutline, MenuFoldOutline, @@ -65,6 +65,7 @@ import { ShoppingCartOutline, SoundOutline, StarOutline, + StopFill, TaobaoCircleOutline, TaobaoOutline, TeamOutline, @@ -137,6 +138,7 @@ export const ICONS_AUTO = [ LaptopOutline, LikeOutline, LockOutline, + LockFill, LogoutOutline, MailOutline, MenuFoldOutline, @@ -156,6 +158,7 @@ export const ICONS_AUTO = [ ShoppingCartOutline, SoundOutline, StarOutline, + StopFill, TaobaoCircleOutline, TaobaoOutline, TeamOutline, diff --git a/maxkey-web-frontend/maxkey-web-mgt-app/src/styles/theme.less b/maxkey-web-frontend/maxkey-web-mgt-app/src/styles/theme.less index a8dce242e..e4bb46171 100644 --- a/maxkey-web-frontend/maxkey-web-mgt-app/src/styles/theme.less +++ b/maxkey-web-frontend/maxkey-web-mgt-app/src/styles/theme.less @@ -58,4 +58,8 @@ color: white; /** background-color: aliceblue */ +} + +.grid-border{ + border: 1px solid #f0f0f0; } \ No newline at end of file diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtListenerConfig.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtListenerConfig.java index 9333969c2..8c06c2528 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtListenerConfig.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtListenerConfig.java @@ -46,7 +46,7 @@ public class MaxKeyMgtListenerConfig implements InitializingBean { SessionListenerAdapter.class, scheduler, new ListenerParameter().add("sessionManager",sessionManager).build(), - "0 0/10 * * * ?",//10 minutes + "0 0/1 * * * ?",//10 minutes SessionListenerAdapter.class.getSimpleName() ); _logger.debug("Session ListenerAdapter inited ."); diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/listener/SessionListenerAdapter.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/listener/SessionListenerAdapter.java index ee3d0d06e..ec50fb392 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/listener/SessionListenerAdapter.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/listener/SessionListenerAdapter.java @@ -16,9 +16,12 @@ package org.maxkey.listener; import java.io.Serializable; +import java.util.Date; +import org.maxkey.authn.session.Session; import org.maxkey.authn.session.SessionManager; import org.maxkey.entity.HistoryLogin; +import org.maxkey.util.DateUtils; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -41,14 +44,32 @@ public class SessionListenerAdapter extends ListenerAdapter implements Job , S jobStatus = JOBSTATUS.RUNNING; try { if(sessionManager != null) { - for (HistoryLogin onlineSession : sessionManager.querySessions()) { - if(sessionManager.get(onlineSession.getSessionId()) == null) { + int sessionCount = 0; + for (HistoryLogin login : sessionManager.querySessions()) { + Session session = sessionManager.get(login.getSessionId()); + if(session == null) { + _logger.debug("user {} session {} Login at {} and TimeOut at {} ." , + login.getUsername(), + login.getId(), + login.getLoginTime(), + DateUtils.formatDateTime(new Date()) + ); sessionManager.terminate( - onlineSession.getSessionId(), - onlineSession.getUserId(), - onlineSession.getUsername()); + login.getSessionId(), + login.getUserId(), + login.getUsername()); + }else { + _logger.debug("user {} session {} Login at {} , Last Access at {} will Expired at {}." , + login.getUsername(), + login.getId(), + session.getStartTimestamp(), + session.getLastAccessTime(), + session.getExpiredTime() + ); + sessionCount ++ ; } } + _logger.debug("current session count {} ." ,sessionCount); } _logger.debug("finished " ); jobStatus = JOBSTATUS.FINISHED; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/application-http.properties b/maxkey-webs/maxkey-web-mgt/src/main/resources/application-http.properties index 589e1f484..421d2b863 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/application-http.properties +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/application-http.properties @@ -40,11 +40,11 @@ maxkey.server.persistence =0 #identity none, Kafka ,RocketMQ maxkey.server.message.queue =${SERVER_MESSAGE_QUEUE:none} -maxkey.session.timeout =${SERVER_SESSION_TIMEOUT:1800} +maxkey.session.timeout =${SERVER_SESSION_TIMEOUT:600} maxkey.auth.jwt.issuer =${maxkey.server.uri} - -maxkey.auth.jwt.expires =900 +#default 900 +maxkey.auth.jwt.expires =300 maxkey.auth.jwt.secret =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg maxkey.auth.jwt.refresh.secret =7heM-14BtxjyKPuH3ITIm7q2-ps5MuBirWCsrrdbzzSAOuSPrbQYiaJ54AeA0uH2XdkYy3hHAkTFIsieGkyqxOJZ_dQzrCbaYISH9rhUZAKYx8tUY0wkE4ArOC6LqHDJarR6UIcMsARakK9U4dhoOPO1cj74XytemI-w6ACYfzRUn_Rn4e-CQMcnD1C56oNEukwalf06xVgXl41h6K8IBEzLVod58y_VfvFn-NGWpNG0fy_Qxng6dg8Dgva2DobvzMN2eejHGLGB-x809MvC4zbG7CKNVlcrzMYDt2Gt2sOVDrt2l9YqJNfgaLFjrOEVw5cuXemGkX1MvHj6TAsbLg ############################################################################