Browse Source

name to real name

MaxKey 3 years ago
parent
commit
451af2dbac
82 changed files with 1376 additions and 1459 deletions
  1. 39 0
      maxkey-core/src/main/java/org/maxkey/constants/ConstsRoles.java
  2. 19 19
      maxkey-core/src/main/java/org/maxkey/entity/Organizations.java
  3. 20 20
      maxkey-core/src/main/java/org/maxkey/entity/Resources.java
  4. 64 45
      maxkey-core/src/main/java/org/maxkey/entity/Roles.java
  5. 17 17
      maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java
  6. 1 1
      maxkey-core/src/main/java/org/maxkey/entity/apps/AppsOAuth20Details.java
  7. 14 9
      maxkey-core/src/main/java/org/maxkey/persistence/repository/LoginRepository.java
  8. 2 2
      maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimGroupController.java
  9. 5 5
      maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimOrganizationController.java
  10. 1 1
      maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimUserController.java
  11. 4 4
      maxkey-persistence/src/main/java/org/maxkey/persistence/service/HistorySystemLogsService.java
  12. 2 2
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/AccountsStrategyMapper.xml
  13. 7 7
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/AppsMapper.xml
  14. 4 4
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/OrganizationsMapper.xml
  15. 5 5
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/ResourcesMapper.xml
  16. 5 5
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/RoleMemberMapper.xml
  17. 4 5
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/RolePermissionsMapper.xml
  18. 4 4
      maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/RolesMapper.xml
  19. 1 1
      maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/AuthorizeBaseEndpoint.java
  20. 1 1
      maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/AuthorizeCredentialEndpoint.java
  21. 1 1
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/approval/endpoint/OAuth20AccessConfirmationEndpoint.java
  22. 8 8
      maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryOrganizationService.java
  23. 2 2
      maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java
  24. 4 4
      maxkey-synchronizers/maxkey-synchronizer-dingtalk/src/main/java/org/maxkey/synchronizer/dingtalk/DingtalkOrganizationService.java
  25. 4 4
      maxkey-synchronizers/maxkey-synchronizer-feishu/src/main/java/org/maxkey/synchronizer/feishu/FeishuOrganizationService.java
  26. 8 8
      maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapOrganizationService.java
  27. 2 2
      maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapUsersService.java
  28. 3 3
      maxkey-synchronizers/maxkey-synchronizer-reorgdept/src/main/java/org/maxkey/synchronizer/workweixin/service/ReorgDeptService.java
  29. 4 4
      maxkey-synchronizers/maxkey-synchronizer-workweixin/src/main/java/org/maxkey/synchronizer/workweixin/WorkweixinOrganizationService.java
  30. 4 4
      maxkey-synchronizers/maxkey-synchronizer/src/main/java/org/maxkey/synchronizer/AbstractSynchronizerService.java
  31. 4 8
      maxkey-web-frontend/maxkey-web-app/src/app/routes/dashboard/home/home.component.html
  32. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/entity/Apps.ts
  33. 5 6
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/entity/Organizations.ts
  34. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/entity/Resources.ts
  35. 2 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/entity/Roles.ts
  36. 4 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/permissions/permissions-editer/permissions-editer.component.html
  37. 2 2
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/permissions/permissions-editer/permissions-editer.component.ts
  38. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/permissions/permissions.component.ts
  39. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/role-members/member-roles-editer/member-roles-editer.component.html
  40. 3 3
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/role-members/role-members.component.html
  41. 4 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/role-members/role-members.component.ts
  42. 12 5
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/role-editer/role-editer.component.html
  43. 4 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/roles.component.html
  44. 2 2
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/roles.component.ts
  45. 4 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/select-roles/select-roles.component.html
  46. 2 2
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/select-roles/select-roles.component.ts
  47. 87 99
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-basic-details-editer/app-basic-details-editer.component.html
  48. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-basic-details-editer/app-basic-details-editer.component.ts
  49. 4 3
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-cas-details-editer/app-cas-details-editer.component.html
  50. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-cas-details-editer/app-cas-details-editer.component.ts
  51. 119 139
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-extend-api-details-editer/app-extend-api-details-editer.component.html
  52. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-extend-api-details-editer/app-extend-api-details-editer.component.ts
  53. 133 171
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-form-based-details-editer/app-form-based-details-editer.component.html
  54. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-form-based-details-editer/app-form-based-details-editer.component.ts
  55. 153 168
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-jwt-details-editer/app-jwt-details-editer.component.html
  56. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-jwt-details-editer/app-jwt-details-editer.component.ts
  57. 169 212
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-oauth20-details-editer/app-oauth20-details-editer.component.html
  58. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-oauth20-details-editer/app-oauth20-details-editer.component.ts
  59. 191 221
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-saml20-details-editer/app-saml20-details-editer.component.html
  60. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-saml20-details-editer/app-saml20-details-editer.component.ts
  61. 121 141
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-token-based-details-editer/app-token-based-details-editer.component.html
  62. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-token-based-details-editer/app-token-based-details-editer.component.ts
  63. 8 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/apps.component.html
  64. 9 2
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/apps.component.ts
  65. 4 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/select-apps/select-apps.component.html
  66. 5 6
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/select-apps/select-apps.component.ts
  67. 6 6
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organization-editer/organization-editer.component.html
  68. 4 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organizations.component.html
  69. 2 2
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organizations.component.ts
  70. 4 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/privileges/privileges.component.html
  71. 3 3
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/privileges/privileges.component.ts
  72. 4 2
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resource-editer/resource-editer.component.html
  73. 4 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resources.component.html
  74. 13 4
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resources.component.ts
  75. 1 1
      maxkey-web-frontend/maxkey-web-mgt-app/src/app/shared/consts.ts
  76. 1 0
      maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/en-US.json
  77. 1 0
      maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-CN.json
  78. 1 0
      maxkey-web-frontend/maxkey-web-mgt-app/src/assets/i18n/zh-TW.json
  79. 1 1
      maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistorySignOnAppInterceptor.java
  80. 5 0
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/RolesController.java
  81. 3 3
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/OrganizationsController.java
  82. 1 1
      maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/ResourcesController.java

+ 39 - 0
maxkey-core/src/main/java/org/maxkey/constants/ConstsRoles.java

@@ -0,0 +1,39 @@
+/*
+ * 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.constants;
+
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+
+/**
+ * PROTOCOLS.
+ * @author Crystal.Sea
+ *
+ */
+public final class ConstsRoles {
+
+    public static final SimpleGrantedAuthority ROLE_ADMINISTRATORS 	= new SimpleGrantedAuthority("ROLE_ADMINISTRATORS");
+
+    public static final SimpleGrantedAuthority ROLE_MANAGERS 		= new SimpleGrantedAuthority("ROLE_MANAGERS");
+    
+    public static final SimpleGrantedAuthority ROLE_USER 			= new SimpleGrantedAuthority("ROLE_USER");
+    
+    public static final SimpleGrantedAuthority ROLE_ALL_USER 		= new SimpleGrantedAuthority("ROLE_ALL_USER");
+    
+    public static final SimpleGrantedAuthority ROLE_ORDINARY_USER 	= new SimpleGrantedAuthority("ROLE_ORDINARY_USER");
+    
+}

+ 19 - 19
maxkey-core/src/main/java/org/maxkey/entity/Organizations.java

@@ -39,9 +39,9 @@ public class Organizations extends JpaBaseEntity implements Serializable {
     @GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid")
     private String id;
     @Column
-    private String code;
+    private String orgCode;
     @Column
-    private String name;
+    private String orgName;
     @Column
     private String fullName;
     @Column
@@ -131,23 +131,23 @@ public class Organizations extends JpaBaseEntity implements Serializable {
         this.id = id;
     }
 
-    public String getCode() {
-        return code;
-    }
+    public String getOrgCode() {
+		return orgCode;
+	}
 
-    public void setCode(String code) {
-        this.code = code;
-    }
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
 
-    public String getName() {
-        return name;
-    }
+	public String getOrgName() {
+		return orgName;
+	}
 
-    public void setName(String name) {
-        this.name = name;
-    }
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
 
-    public String getFullName() {
+	public String getFullName() {
         return fullName;
     }
 
@@ -445,10 +445,10 @@ public class Organizations extends JpaBaseEntity implements Serializable {
         StringBuilder builder = new StringBuilder();
         builder.append("Organizations [id=");
         builder.append(id);
-        builder.append(", code=");
-        builder.append(code);
-        builder.append(", name=");
-        builder.append(name);
+        builder.append(", orgCode=");
+        builder.append(orgCode);
+        builder.append(", orgName=");
+        builder.append(orgName);
         builder.append(", fullName=");
         builder.append(fullName);
         builder.append(", parentId=");

+ 20 - 20
maxkey-core/src/main/java/org/maxkey/entity/Resources.java

@@ -35,7 +35,17 @@ public class Resources  extends JpaBaseEntity implements Serializable {
     @GeneratedValue(strategy = GenerationType.AUTO,generator = "snowflakeid")
     String id;
     @Column
-    String name;
+    String resourceName;
+    @Column
+    String resourceType;
+    @Column
+    String resourceIcon;
+    @Column
+    String resourceStyle;
+    @Column
+    String resourceUrl;
+    @Column
+    String resourceAction;
     @Column
     String permission;
     @Column
@@ -48,16 +58,6 @@ public class Resources  extends JpaBaseEntity implements Serializable {
     @Column
     String parentName;
     @Column
-    String resourceType;
-    @Column
-    String resourceIcon;
-    @Column
-    String resourceStyle;
-    @Column
-    String resourceUrl;
-    @Column
-    String resourceAction;
-    @Column
     String status;
     @Column
     String description;
@@ -86,15 +86,15 @@ public class Resources  extends JpaBaseEntity implements Serializable {
         this.id = id;
     }
 
-    public String getName() {
-        return name;
-    }
+    public String getResourceName() {
+		return resourceName;
+	}
 
-    public void setName(String name) {
-        this.name = name;
-    }
+	public void setResourceName(String resourceName) {
+		this.resourceName = resourceName;
+	}
 
-    public String getAppId() {
+	public String getAppId() {
         return appId;
     }
 
@@ -251,8 +251,8 @@ public class Resources  extends JpaBaseEntity implements Serializable {
         StringBuilder builder = new StringBuilder();
         builder.append("Resources [id=");
         builder.append(id);
-        builder.append(", name=");
-        builder.append(name);
+        builder.append(", resourceName=");
+        builder.append(resourceName);
         builder.append(", sortIndex=");
         builder.append(sortIndex);
         builder.append(", appId=");

+ 64 - 45
maxkey-core/src/main/java/org/maxkey/entity/Roles.java

@@ -38,7 +38,11 @@ public class Roles extends JpaBaseEntity implements Serializable {
 
     @Length(max = 60)
     @Column
-    String name;
+    String roleCode;
+    
+    @Length(max = 60)
+    @Column
+    String roleName;
     
     @Column
     String dynamic;
@@ -86,22 +90,15 @@ public class Roles extends JpaBaseEntity implements Serializable {
      * @param name String
      * @param isdefault int
      */
-    public Roles(String id, String name, int isdefault) {
+    public Roles(String id,String roleCode, String roleName, int isdefault) {
         super();
         this.id = id;
-        this.name = name;
+        this.roleCode = roleCode;
+        this.roleName = roleName;
         this.isdefault = isdefault;
     }
 
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getId() {
+	public String getId() {
         return id;
     }
 
@@ -109,6 +106,22 @@ public class Roles extends JpaBaseEntity implements Serializable {
         this.id = id;
     }
 
+    public String getRoleCode() {
+		return roleCode;
+	}
+
+	public void setRoleCode(String roleCode) {
+		this.roleCode = roleCode;
+	}
+
+	public String getRoleName() {
+		return roleName;
+	}
+
+	public void setRoleName(String roleName) {
+		this.roleName = roleName;
+	}
+	
     public int getIsdefault() {
         return isdefault;
     }
@@ -234,38 +247,44 @@ public class Roles extends JpaBaseEntity implements Serializable {
 	}
 
 	@Override
-    public String toString() {
-        StringBuilder builder = new StringBuilder();
-        builder.append("Groups [id=");
-        builder.append(id);
-        builder.append(", name=");
-        builder.append(name);
-        builder.append(", dynamic=");
-        builder.append(dynamic);
-        builder.append(", filters=");
-        builder.append(filters);
-        builder.append(", orgIdsList=");
-        builder.append(orgIdsList);
-        builder.append(", resumeTime=");
-        builder.append(resumeTime);
-        builder.append(", suspendTime=");
-        builder.append(suspendTime);
-        builder.append(", isdefault=");
-        builder.append(isdefault);
-        builder.append(", description=");
-        builder.append(description);
-        builder.append(", createdBy=");
-        builder.append(createdBy);
-        builder.append(", createdDate=");
-        builder.append(createdDate);
-        builder.append(", modifiedBy=");
-        builder.append(modifiedBy);
-        builder.append(", modifiedDate=");
-        builder.append(modifiedDate);
-        builder.append(", status=");
-        builder.append(status);
-        builder.append("]");
-        return builder.toString();
-    }
+	public String toString() {
+		StringBuilder builder = new StringBuilder();
+		builder.append("Roles [id=");
+		builder.append(id);
+		builder.append(", roleCode=");
+		builder.append(roleCode);
+		builder.append(", roleName=");
+		builder.append(roleName);
+		builder.append(", dynamic=");
+		builder.append(dynamic);
+		builder.append(", filters=");
+		builder.append(filters);
+		builder.append(", orgIdsList=");
+		builder.append(orgIdsList);
+		builder.append(", resumeTime=");
+		builder.append(resumeTime);
+		builder.append(", suspendTime=");
+		builder.append(suspendTime);
+		builder.append(", isdefault=");
+		builder.append(isdefault);
+		builder.append(", description=");
+		builder.append(description);
+		builder.append(", createdBy=");
+		builder.append(createdBy);
+		builder.append(", createdDate=");
+		builder.append(createdDate);
+		builder.append(", modifiedBy=");
+		builder.append(modifiedBy);
+		builder.append(", modifiedDate=");
+		builder.append(modifiedDate);
+		builder.append(", status=");
+		builder.append(status);
+		builder.append(", instId=");
+		builder.append(instId);
+		builder.append(", instName=");
+		builder.append(instName);
+		builder.append("]");
+		return builder.toString();
+	}
 
 }

+ 17 - 17
maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java

@@ -61,7 +61,7 @@ public class Apps extends JpaBaseEntity implements Serializable {
      * 
      */
     @Column
-    private String name;
+    private String appName;
     /*
      * Login url
      */
@@ -173,19 +173,7 @@ public class Apps extends JpaBaseEntity implements Serializable {
         credential = CREDENTIALS.NONE;
     }
 
-    /**
-     * @return the name
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * @param name the name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
+  
 
     public String getId() {
         return id;
@@ -195,7 +183,19 @@ public class Apps extends JpaBaseEntity implements Serializable {
         this.id = id;
     }
 
-    /**
+    public String getAppName() {
+		return appName;
+	}
+
+
+
+	public void setAppName(String appName) {
+		this.appName = appName;
+	}
+
+
+
+	/**
      * @return the loginUrl
      */
     public String getLoginUrl() {
@@ -619,8 +619,8 @@ public class Apps extends JpaBaseEntity implements Serializable {
 		StringBuilder builder = new StringBuilder();
 		builder.append("Apps [id=");
 		builder.append(id);
-		builder.append(", name=");
-		builder.append(name);
+		builder.append(", appName=");
+		builder.append(appName);
 		builder.append(", loginUrl=");
 		builder.append(loginUrl);
 		builder.append(", category=");

+ 1 - 1
maxkey-core/src/main/java/org/maxkey/entity/apps/AppsOAuth20Details.java

@@ -91,7 +91,7 @@ public class AppsOAuth20Details extends Apps {
     public AppsOAuth20Details(Apps application, BaseClientDetails baseClientDetails) {
         super();
         this.id = application.getId();
-        this.setName(application.getName());
+        this.setAppName(application.getAppName());
         this.setLoginUrl(application.getLoginUrl());
         this.setLogoutUrl(application.getLogoutUrl());
         this.setCategory(application.getCategory());

+ 14 - 9
maxkey-core/src/main/java/org/maxkey/persistence/repository/LoginRepository.java

@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+import org.maxkey.constants.ConstsRoles;
 import org.maxkey.constants.ConstsStatus;
 import org.maxkey.entity.Roles;
 import org.maxkey.entity.UserInfo;
@@ -51,7 +52,7 @@ public class LoginRepository {
 
 
 
-    private static final String ROLES_SELECT_STATEMENT = "select distinct r.id,r.name from mxk_userinfo u,mxk_roles r,mxk_role_member rm where u.id = ?  and u.id=rm.memberid and rm.roleid=r.id ";
+    private static final String ROLES_SELECT_STATEMENT = "select distinct r.id,r.rolecode,r.rolename from mxk_userinfo u,mxk_roles r,mxk_role_member rm where u.id = ?  and u.id=rm.memberid and rm.roleid=r.id ";
 
     private static final String DEFAULT_USERINFO_SELECT_STATEMENT = "select * from  mxk_userinfo where username = ? ";
     
@@ -59,7 +60,7 @@ public class LoginRepository {
     
     private static final String DEFAULT_USERINFO_SELECT_STATEMENT_USERNAME_MOBILE_EMAIL = "select * from  mxk_userinfo where (username = ? or mobile = ? or email = ?) ";
     
-    private static final String DEFAULT_MYAPPS_SELECT_STATEMENT = "select distinct app.id,app.name from mxk_apps app,mxk_role_permissions pm,mxk_roles r  where app.id=pm.appid and pm.roleid=r.id and r.id in(%s)";
+    private static final String DEFAULT_MYAPPS_SELECT_STATEMENT = "select distinct app.id,app.appname from mxk_apps app,mxk_role_permissions pm,mxk_roles r  where app.id=pm.appid and pm.roleid=r.id and r.id in(%s)";
     
     protected JdbcTemplate jdbcTemplate;
     
@@ -214,7 +215,7 @@ public class LoginRepository {
     public List<Roles> queryRoles(UserInfo userInfo) {
         List<Roles> listRoles = jdbcTemplate.query(ROLES_SELECT_STATEMENT, new RowMapper<Roles>() {
             public Roles mapRow(ResultSet rs, int rowNum) throws SQLException {
-                Roles role = new Roles(rs.getString("id"), rs.getString("name"), 0);
+                Roles role = new Roles(rs.getString("id"), rs.getString("rolecode"),rs.getString("rolename"), 0);
 
                 return role;
             }
@@ -232,15 +233,19 @@ public class LoginRepository {
      */
     public ArrayList<GrantedAuthority> grantAuthority(UserInfo userInfo) {
         // query roles for user
-        List<Roles> listGroups = queryRoles(userInfo);
+        List<Roles> listRoles = queryRoles(userInfo);
 
         //set default roles
         ArrayList<GrantedAuthority> grantedAuthority = new ArrayList<GrantedAuthority>();
-        grantedAuthority.add(new SimpleGrantedAuthority("ROLE_USER"));
-        grantedAuthority.add(new SimpleGrantedAuthority("ROLE_ORDINARY_USER"));
-        grantedAuthority.add(new SimpleGrantedAuthority("ROLE_ALL_USER"));
-        for (Roles group : listGroups) {
-            grantedAuthority.add(new SimpleGrantedAuthority(group.getId()));
+        grantedAuthority.add(ConstsRoles.ROLE_USER);
+        grantedAuthority.add(ConstsRoles.ROLE_ALL_USER);
+        grantedAuthority.add(ConstsRoles.ROLE_ORDINARY_USER);
+        for (Roles role : listRoles) {
+            grantedAuthority.add(new SimpleGrantedAuthority(role.getId()));
+            if(role.getRoleCode().startsWith("ROLE_") 
+            		&& !grantedAuthority.contains(new SimpleGrantedAuthority(role.getRoleCode()))) {
+            	grantedAuthority.add(new SimpleGrantedAuthority(role.getRoleCode()));
+            }
         }
         _logger.debug("Authority : " + grantedAuthority);
 

+ 2 - 2
maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimGroupController.java

@@ -133,7 +133,7 @@ public class ScimGroupController {
     	ScimGroup scimGroup = new ScimGroup();
     	scimGroup.setId(group.getId());
     	scimGroup.setExternalId(group.getId());
-    	scimGroup.setDisplayName(group.getName());
+    	scimGroup.setDisplayName(group.getRoleName());
     	
     	ScimMeta meta = new ScimMeta("Group");
         if(StringUtils.isNotBlank(group.getCreatedDate())){
@@ -152,7 +152,7 @@ public class ScimGroupController {
     public Roles scimGroup2Role(ScimGroup scimGroup) {
     	Roles role = new Roles();
     	role.setId(scimGroup.getId());
-    	role.setName(scimGroup.getDisplayName());
+    	role.setRoleName(scimGroup.getDisplayName());
     	return role;
     }
 }

+ 5 - 5
maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimOrganizationController.java

@@ -126,9 +126,9 @@ public class ScimOrganizationController {
     public ScimOrganization org2ScimOrg(Organizations org) {
     	ScimOrganization 	scimOrg = new ScimOrganization();
         scimOrg.setId(org.getId());
-        scimOrg.setCode(org.getCode());
-        scimOrg.setName(org.getName());
-        scimOrg.setDisplayName(org.getName());
+        scimOrg.setCode(org.getOrgCode());
+        scimOrg.setName(org.getOrgName());
+        scimOrg.setDisplayName(org.getOrgName());
         scimOrg.setFullName(org.getFullName());
         scimOrg.setType(org.getType());
         scimOrg.setLevel(org.getLevel());
@@ -168,9 +168,9 @@ public class ScimOrganizationController {
     public Organizations scimOrg2Org(ScimOrganization 	scimOrg) {
     	Organizations org = new Organizations();
     	org.setId(scimOrg.getId());
-    	org.setCode(scimOrg.getCode());
+    	org.setOrgCode(scimOrg.getCode());
     	org.setFullName(scimOrg.getFullName());
-    	org.setName(StringUtils.isNotBlank(scimOrg.getName()) ? scimOrg.getName():scimOrg.getDisplayName());
+    	org.setOrgName(StringUtils.isNotBlank(scimOrg.getName()) ? scimOrg.getName():scimOrg.getDisplayName());
     	org.setParentId(StringUtils.isNotBlank(scimOrg.getParentId())? scimOrg.getParentId():scimOrg.getParent());
     	org.setParentCode(scimOrg.getParentCode());
     	org.setParentName(scimOrg.getParentName());

+ 1 - 1
maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimUserController.java

@@ -170,7 +170,7 @@ public class ScimUserController {
     	List<ScimGroupRef> groups = new  ArrayList<ScimGroupRef>(); 
     	for(Roles role : rolesService.queryRolesByUserId(userInfo.getId())){
     		groupsList.add(role.getId());
-    		groups.add(new ScimGroupRef(role.getId(),role.getName()));
+    		groups.add(new ScimGroupRef(role.getId(),role.getRoleName()));
     		
     	}
     	scimUser.setGroup(groupsList);

+ 4 - 4
maxkey-persistence/src/main/java/org/maxkey/persistence/service/HistorySystemLogsService.java

@@ -114,9 +114,9 @@ public class HistorySystemLogsService  extends JpaBaseService<HistorySystemLogs>
 	
 	public String buildMsg(Organizations org) {
 		return new StringBuilder()
-				.append(org.getName())
+				.append(org.getOrgName())
 				.append("[")
-				.append(org.getCode())
+				.append(org.getOrgCode())
 				.append("]")
 				.toString();
 	}
@@ -143,7 +143,7 @@ public class HistorySystemLogsService  extends JpaBaseService<HistorySystemLogs>
 	
 	public String buildMsg(Roles g) {
 		return new StringBuilder()
-				.append(g.getName())
+				.append(g.getRoleName())
 				.toString();
 	}
 	
@@ -178,7 +178,7 @@ public class HistorySystemLogsService  extends JpaBaseService<HistorySystemLogs>
 	
 	public String buildMsg(Resources r) {
 		return new StringBuilder()
-				.append(r.getName())
+				.append(r.getResourceName())
 				.append("[")
 				.append(r.getResourceType())
 				.append("]")

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

@@ -9,8 +9,8 @@
         <if test="appId != null and appId != ''">
             and mas.appid   =   #{appId}
         </if> 
-        <if test="name != null and name != ''">
-            and mas.name    =   #{name}
+        <if test="appName != null and appName != ''">
+            and mas.appname    =   #{appName}
         </if>
     </sql>
     

+ 7 - 7
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/AppsMapper.xml

@@ -6,8 +6,8 @@
 		<if test="id != null and id != ''">
 			and id 			= #{id}
 		</if>
-		<if test="name != null and name != ''">
-			and name  		like  	'%${name}%'
+		<if test="appName != null and appName != ''">
+			and appname  		like  	'%${appName}%'
 		</if>
 		<if test="protocol != null and protocol != ''">
 			and protocol 	= #{protocol}
@@ -39,7 +39,7 @@
 	<insert id="insertApp" parameterType="Apps">
 		insert into mxk_apps(
 			id,
-			name,
+			appname,
 			icon,
 			loginurl,
 			protocol,
@@ -82,7 +82,7 @@
 			instid
 		)values(
 			#{id},
-			#{name},
+			#{appName},
 			#{icon},
 			#{loginUrl},
 			#{protocol},
@@ -127,7 +127,7 @@
 	
 	<update id="updateApp" parameterType="Apps" >
     	update mxk_apps set
-    		name				=	#{name},
+    		appname				=	#{appName},
     		<if test="icon != null">
 			icon				=	#{icon},
 			</if>
@@ -200,8 +200,8 @@
                         </if>
                     )
             )
-        <if test="name != null and name != ''">
-            and name    =   #{name}
+        <if test="appName != null and appName != ''">
+            and appname    =   #{appName}
         </if>
         order by sortindex
     </select>

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

@@ -6,8 +6,8 @@
     	<if test="id != null and id != ''">
 			and	id	=	#{id} 	
 		</if> 
-		<if test="name != null and name != '' ">
-			and name like '%${name}%'
+		<if test="orgName != null and orgName != '' ">
+			and orgname like '%${orgName}%'
 		</if>
 		<if test="parentId != null and parentId != '' ">
 			and	parentid	=	#{parentId}
@@ -45,8 +45,8 @@
     	<if test="id != null and id != '' ">
 			and	id	=	#{id}
 		</if>
-		<if test="name != name">
-			and	name	=	#{name}
+		<if test="orgName != orgName">
+			and	orgname	=	#{orgName}
 		</if>
 		<if test="enable != null">
 			and	status	=	'1'

+ 5 - 5
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/ResourcesMapper.xml

@@ -12,8 +12,8 @@
         <if test="parentId != null and parentId != ''">
             and res.parentid  =   #{parentId}
         </if> 
-		<if test="name != null and name != ''">
-			and res.name like '%${name}%'
+		<if test="resourceName != null and resourceName != ''">
+			and res.resourcename like '%${resourceName}%'
 		</if>
     </sql>
     
@@ -21,7 +21,7 @@
 	
 	<select id="queryPageResults" parameterType="Resources" resultType="Resources">
 		select
-			res.*,app.name appname
+			res.*,app.appname
 		from
 			mxk_resources res, mxk_apps app
 		where
@@ -40,8 +40,8 @@
     	<if test="id != null">
 			and	id	=	#{id}
 		</if>
-		<if test="name != name">
-			and	name	=	#{name}
+		<if test="resourceName != resourceName">
+			and	resourcename	=	#{resourceName}
 		</if>
     </update>
     

+ 5 - 5
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/RoleMemberMapper.xml

@@ -15,7 +15,7 @@
 			select	distinct
 				rm.id as id,
 				r.id as roleid,
-				r.name as rolename,
+				r.rolename,
 				r.dynamic dynamic,
 				u.username,
 				u.usertype,
@@ -61,7 +61,7 @@
 					and r.id = #{roleId}
 				</if>
 				<if test="roleName != null and roleName != ''">
-					and g.name = #{roleName}
+					and r.rolename = #{roleName}
 				</if>
 				<if test="username != null and username != ''">
 					and u.username = #{username}
@@ -126,7 +126,7 @@
 					and r.id = #{roleId}
 				</if>
 				<if test="roleName != null and roleName != ''">
-					and g.name = #{roleName}
+					and r.rolename = #{roleName}
 				</if>
 					and	rm.type		in(	'USER','USER-DYNAMIC')
 			     	and rm.roleid	=	r.id
@@ -158,7 +158,7 @@
                 </if>
             )
         <if test="roleName != null and roleName != ''">
-            and r.name = #{roleName}
+            and r.rolename = #{roleName}
         </if>
     </select>
 	
@@ -180,7 +180,7 @@
 			and r.id = #{roleId}
 		</if>
 		<if test="roleName != null and roleName != ''">
-			and r.name = #{roleName}
+			and r.rolename = #{roleName}
 		</if>
 	</select>
 

+ 4 - 5
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/RolePermissionsMapper.xml

@@ -6,8 +6,8 @@
     	<if test="id != null and id != ''">
 			and	apps.id	=	#{id}
 		</if> 
-		<if test="name != null and name != ''">
-			and apps.name like  '%${name}%'
+		<if test="appName != null and appName != ''">
+			and apps.appname like  '%${appName}%'
 		</if>
 		<if test="protocol != null and protocol != ''">
 			and apps.protocol = #{protocol}
@@ -22,10 +22,9 @@
 		select
 			p.id,
 			p.roleid,
-			r.name rolename,
+			r.rolename,
 			apps.id appid,
-			apps.name,
-			apps.name appname,
+			apps.appname,
             apps.icon,
             apps.loginurl,
             apps.protocol,

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

@@ -6,8 +6,8 @@
     	<if test="id != null and id != ''">
 			and	id	=	#{id}
 		</if> 
-		<if test="name != null and name != ''">
-			and name like '%${name}%'
+		<if test="roleName != null and roleName != ''">
+			and rolename like '%${roleName}%'
 		</if>
     </sql>
     
@@ -40,8 +40,8 @@
     	<if test="id != null">
 			and	id	=	#{id}
 		</if>
-		<if test="name != name">
-			and	name	=	#{name}
+		<if test="roleName != roleName">
+			and	rolename	=	#{roleName}
 		</if>
     </update>
     

+ 1 - 1
maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/AuthorizeBaseEndpoint.java

@@ -74,7 +74,7 @@ public class AuthorizeBaseEndpoint {
 		
 		Accounts account = new Accounts(userInfo.getId(),loadApp.getId());
 		account.setUsername(userInfo.getUsername());
-		account.setAppName(app.getName());
+		account.setAppName(app.getAppName());
 		
 		if(loadApp.getCredential() == Apps.CREDENTIALS.USER_DEFINED){
 			account = accountsService.load(new Accounts(userInfo.getId(),loadApp.getId()));

+ 1 - 1
maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/AuthorizeCredentialEndpoint.java

@@ -59,7 +59,7 @@ public class AuthorizeCredentialEndpoint extends AuthorizeBaseEndpoint{
 			account.setDisplayName(currentUser.getDisplayName());
 			
 			account.setAppId(appId);
-			account.setAppName(app.getName());
+			account.setAppName(app.getAppName());
 			account.setInstId(currentUser.getInstId());
 			account.setCreateType("manual");
 			account.setStatus(ConstsStatus.ACTIVE);

+ 1 - 1
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/approval/endpoint/OAuth20AccessConfirmationEndpoint.java

@@ -153,7 +153,7 @@ public class OAuth20AccessConfirmationEndpoint {
 		        model.put("auth_request", clientAuth);
 		        model.put("client", client);
 		        model.put("clientId", clientAuth.getClientId());
-		        model.put("appName", app.getName());
+		        model.put("appName", app.getAppName());
 		        model.put("iconBase64", app.getIconBase64());
 		        model.put("oauth_version", "oauth 2.0");
 		        Map<String, String> scopes = new LinkedHashMap<String, String>();

+ 8 - 8
maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryOrganizationService.java

@@ -70,7 +70,7 @@ public class ActiveDirectoryOrganizationService  extends AbstractSynchronizerSer
 							parentOrg = rootOrganization;
 						}
 						organization.setParentId(parentOrg.getId());
-						organization.setParentName(parentOrg.getName());
+						organization.setParentName(parentOrg.getOrgName());
 						organization.setCodePath(parentOrg.getCodePath()+"/"+organization.getId());
 						_logger.info("parentNamePath " + parentNamePath+" , namePah " + organization.getNamePath());
 						
@@ -83,7 +83,7 @@ public class ActiveDirectoryOrganizationService  extends AbstractSynchronizerSer
 							organizationsService.insert(organization);
 							_logger.debug("Organizations : " + organization);
 							
-							synchroRelated = buildSynchroRelated(organization,organization.getLdapDn(),organization.getName());
+							synchroRelated = buildSynchroRelated(organization,organization.getLdapDn(),organization.getOrgName());
 						}else {
 							organization.setId(synchroRelated.getObjectId());
 							organizationsService.update(organization);
@@ -99,7 +99,7 @@ public class ActiveDirectoryOrganizationService  extends AbstractSynchronizerSer
 													this.synchronizer.getId(),
 													this.synchronizer.getName(),
 													organization.getId(),
-													organization.getName(),
+													organization.getOrgName(),
 													Organizations.class.getSimpleName(),
 													org.maxkey.util.DateUtils.getCurrentDateAsString(),
 													"success",
@@ -164,8 +164,8 @@ public class ActiveDirectoryOrganizationService  extends AbstractSynchronizerSer
 	public SynchroRelated buildSynchroRelated(Organizations organization,String ldapDN,String name) {
 		return new SynchroRelated(
 					organization.getId(),
-					organization.getName(),
-					organization.getName(),
+					organization.getOrgName(),
+					organization.getOrgName(),
 					Organizations.CLASS_TYPE,
 					synchronizer.getId(),
 					synchronizer.getName(),
@@ -181,7 +181,7 @@ public class ActiveDirectoryOrganizationService  extends AbstractSynchronizerSer
 		    Organizations org = new Organizations();
 			org.setLdapDn(nameInNamespace);
 			String []namePaths = name.replaceAll(",OU=", "/").replaceAll("OU=", "/").split("/");
-			String namePah= "/"+rootOrganization.getName();
+			String namePah= "/"+rootOrganization.getOrgName();
 			for(int i = namePaths.length -1 ; i >= 0 ; i --) {
 			    namePah = namePah + "/" + namePaths[i];
 			}
@@ -189,10 +189,10 @@ public class ActiveDirectoryOrganizationService  extends AbstractSynchronizerSer
 			namePah = namePah.substring(0, namePah.length() - 1);
 			 
 			org.setId(org.generateId());
-			org.setCode(org.getId());
+			org.setOrgCode(org.getId());
 			org.setNamePath(namePah);
 			org.setLevel(namePaths.length);
-			org.setName(LdapUtils.getAttributeStringValue(OrganizationalUnit.OU,attributeMap));
+			org.setOrgName(LdapUtils.getAttributeStringValue(OrganizationalUnit.OU,attributeMap));
 			org.setCountry(LdapUtils.getAttributeStringValue(OrganizationalUnit.CO,attributeMap));
 			org.setRegion(LdapUtils.getAttributeStringValue(OrganizationalUnit.ST,attributeMap));
 			org.setLocality(LdapUtils.getAttributeStringValue(OrganizationalUnit.L,attributeMap));

+ 2 - 2
maxkey-synchronizers/maxkey-synchronizer-activedirectory/src/main/java/org/maxkey/synchronizer/activedirectory/ActiveDirectoryUsersService.java

@@ -120,7 +120,7 @@ public class ActiveDirectoryUsersService extends AbstractSynchronizerService
 	    UserInfo userInfo = new  UserInfo();
 		userInfo.setLdapDn(nameInNamespace);
 		String []namePaths = name.replaceAll(",OU=", "/").replaceAll("OU=", "/").split("/");
-		String namePah= "/"+rootOrganization.getName();
+		String namePah= "/"+rootOrganization.getOrgName();
 		for(int i = namePaths.length -1 ; i >= 0 ; i --) {
 			namePah = namePah + "/" + namePaths[i];
 		}
@@ -133,7 +133,7 @@ public class ActiveDirectoryUsersService extends AbstractSynchronizerService
         	deptOrg = rootOrganization;
 		}
         
-        userInfo.setDepartment(deptOrg.getName());
+        userInfo.setDepartment(deptOrg.getOrgName());
         userInfo.setDepartmentId(deptOrg.getId());
 		try {
 		    userInfo.setId(userInfo.generateId());

+ 4 - 4
maxkey-synchronizers/maxkey-synchronizer-dingtalk/src/main/java/org/maxkey/synchronizer/dingtalk/DingtalkOrganizationService.java

@@ -135,8 +135,8 @@ public class DingtalkOrganizationService  extends AbstractSynchronizerService im
 	public SynchroRelated buildSynchroRelated(Organizations organization,String deptId,String name,String parentId) {
 		return new SynchroRelated(
 				organization.getId(),
-				organization.getName(),
-				organization.getName(),
+				organization.getOrgName(),
+				organization.getOrgName(),
 				Organizations.CLASS_TYPE,
 				synchronizer.getId(),
 				synchronizer.getName(),
@@ -154,8 +154,8 @@ public class DingtalkOrganizationService  extends AbstractSynchronizerService im
 				this.synchronizer,dept.getParentId() + "",Organizations.CLASS_TYPE);
 		Organizations org = new Organizations();
 		org.setId(dept.getDeptId()+"");
-		org.setCode(dept.getDeptId()+"");
-		org.setName(dept.getName());
+		org.setOrgCode(dept.getDeptId()+"");
+		org.setOrgName(dept.getName());
 		org.setParentCode(dept.getParentId()+"");
 		if(synchroRelatedParent != null) {
 			org.setParentId(synchroRelatedParent.getObjectId());

+ 4 - 4
maxkey-synchronizers/maxkey-synchronizer-feishu/src/main/java/org/maxkey/synchronizer/feishu/FeishuOrganizationService.java

@@ -126,8 +126,8 @@ public class FeishuOrganizationService extends AbstractSynchronizerService imple
 	public SynchroRelated buildSynchroRelated(Organizations org,FeishuDepts dept) {
 		return  new SynchroRelated(
 				org.getId(),
-				org.getName(),
-				org.getName(),
+				org.getOrgName(),
+				org.getOrgName(),
 				Organizations.CLASS_TYPE,
 				synchronizer.getId(),
 				synchronizer.getName(),
@@ -145,8 +145,8 @@ public class FeishuOrganizationService extends AbstractSynchronizerService imple
 				this.synchronizer,dept.getParent_department_id(),Organizations.CLASS_TYPE);
 		
 		Organizations org = new Organizations();
-		org.setCode(dept.getDepartment_id()+"");
-		org.setName(dept.getName());
+		org.setOrgCode(dept.getDepartment_id()+"");
+		org.setOrgName(dept.getName());
 		org.setFullName(dept.getName());
 		org.setParentId(synchroRelatedParent.getObjectId());
 		org.setParentName(synchroRelatedParent.getObjectName());

+ 8 - 8
maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapOrganizationService.java

@@ -70,7 +70,7 @@ public class LdapOrganizationService extends AbstractSynchronizerService  implem
 							parentOrg = rootOrganization;
 						}
 						organization.setParentId(parentOrg.getId());
-						organization.setParentName(parentOrg.getName());
+						organization.setParentName(parentOrg.getOrgName());
 						organization.setCodePath(parentOrg.getCodePath()+"/"+organization.getId());
 						_logger.info("parentNamePath " + parentNamePath+" , namePah " + organization.getNamePath());
 						
@@ -83,7 +83,7 @@ public class LdapOrganizationService extends AbstractSynchronizerService  implem
 							organizationsService.insert(organization);
 							_logger.debug("Organizations : " + organization);
 							
-							synchroRelated = buildSynchroRelated(organization,organization.getLdapDn(),organization.getName());
+							synchroRelated = buildSynchroRelated(organization,organization.getLdapDn(),organization.getOrgName());
 						}else {
 							organization.setId(synchroRelated.getObjectId());
 							organizationsService.update(organization);
@@ -100,7 +100,7 @@ public class LdapOrganizationService extends AbstractSynchronizerService  implem
 			            historySynchronizer.setSyncId(this.synchronizer.getId());
 			            historySynchronizer.setSyncName(this.synchronizer.getName());
 			            historySynchronizer.setObjectId(organization.getId());
-			            historySynchronizer.setObjectName(organization.getName());
+			            historySynchronizer.setObjectName(organization.getOrgName());
 			            historySynchronizer.setObjectType(Organizations.class.getSimpleName());
 			            historySynchronizer.setInstId(synchronizer.getInstId());
 			            historySynchronizer.setResult("success");
@@ -158,8 +158,8 @@ public class LdapOrganizationService extends AbstractSynchronizerService  implem
 	public SynchroRelated buildSynchroRelated(Organizations organization,String ldapDN,String name) {
 		return new SynchroRelated(
 					organization.getId(),
-					organization.getName(),
-					organization.getName(),
+					organization.getOrgName(),
+					organization.getOrgName(),
 					Organizations.CLASS_TYPE,
 					synchronizer.getId(),
 					synchronizer.getName(),
@@ -175,7 +175,7 @@ public class LdapOrganizationService extends AbstractSynchronizerService  implem
 			Organizations org = new Organizations();
 			org.setLdapDn(nameInNamespace);
 			String []namePaths = name.replaceAll(",OU=", "/").replaceAll("OU=", "/").split("/");
-			String namePah= "/"+rootOrganization.getName();
+			String namePah= "/"+rootOrganization.getOrgName();
 			for(int i = namePaths.length -1 ; i >= 0 ; i --) {
 				namePah = namePah + "/" + namePaths[i];
 			}
@@ -183,10 +183,10 @@ public class LdapOrganizationService extends AbstractSynchronizerService  implem
 			namePah = namePah.substring(0, namePah.length() - 1);
 
 	        org.setId(org.generateId());
-	        org.setCode(org.getId());
+	        org.setOrgCode(org.getId());
 	        org.setNamePath(namePah);
 	        org.setLevel(namePaths.length);
-			org.setName(LdapUtils.getAttributeStringValue(OrganizationalUnit.OU,attributeMap));
+			org.setOrgName(LdapUtils.getAttributeStringValue(OrganizationalUnit.OU,attributeMap));
 			//org.setCountry(LdapUtils.getAttributeStringValue(OrganizationalUnit.CO,attributeMap));
 			org.setRegion(LdapUtils.getAttributeStringValue(OrganizationalUnit.ST,attributeMap));
 			org.setLocality(LdapUtils.getAttributeStringValue(OrganizationalUnit.L,attributeMap));

+ 2 - 2
maxkey-synchronizers/maxkey-synchronizer-ldap/src/main/java/org/maxkey/synchronizer/ldap/LdapUsersService.java

@@ -111,7 +111,7 @@ public class LdapUsersService extends AbstractSynchronizerService  implements IS
 		UserInfo userInfo = new  UserInfo();
 		userInfo.setLdapDn(nameInNamespace);
 		String []namePaths = name.replaceAll(",OU=", "/").replaceAll("OU=", "/").split("/");
-		String namePah= "/"+rootOrganization.getName();
+		String namePah= "/"+rootOrganization.getOrgName();
 		for(int i = namePaths.length -1 ; i >= 0 ; i --) {
 			namePah = namePah + "/" + namePaths[i];
 		}
@@ -120,7 +120,7 @@ public class LdapUsersService extends AbstractSynchronizerService  implements IS
         String deptNamePath= namePah.substring(0, namePah.lastIndexOf("/"));
         _logger.info("deptNamePath  " + deptNamePath);
         Organizations  deptOrg = orgsNamePathMap.get(deptNamePath);
-        userInfo.setDepartment(deptOrg.getName());
+        userInfo.setDepartment(deptOrg.getOrgName());
         userInfo.setDepartmentId(deptOrg.getId());
         
 		try {

+ 3 - 3
maxkey-synchronizers/maxkey-synchronizer-reorgdept/src/main/java/org/maxkey/synchronizer/workweixin/service/ReorgDeptService.java

@@ -74,7 +74,7 @@ public class ReorgDeptService extends AbstractSynchronizerService implements ISy
 			if(listOrg.get(i).getParentId().equals(rootParentOrgId)){
 				tempOrg = listOrg.get(i); 
 				tempOrg.setReorgNamePath(true);
-				tempOrg.setNamePath("/"+tempOrg.getName());
+				tempOrg.setNamePath("/"+tempOrg.getOrgName());
 				tempOrg.setCodePath("/"+tempOrg.getId());
 				tempOrg.setParentId("-1");
 				tempOrg.setParentName("");
@@ -89,9 +89,9 @@ public class ReorgDeptService extends AbstractSynchronizerService implements ISy
 	 	   			tempOrg = listOrg.get(i); 
 	 	   			if(!tempOrg.isReorgNamePath() && parentOrg != null){
 	 	   				tempOrg.setReorgNamePath(true);
-	 	   				tempOrg.setParentName(parentOrg.getName());
+	 	   				tempOrg.setParentName(parentOrg.getOrgName());
 	 	   				tempOrg.setCodePath(parentOrg.getCodePath()+"/"+tempOrg.getId());
-	 	   				tempOrg.setNamePath(parentOrg.getNamePath()+"/"+tempOrg.getName());
+	 	   				tempOrg.setNamePath(parentOrg.getNamePath()+"/"+tempOrg.getOrgName());
 	 	   				orgMap.put(tempOrg.getId(), tempOrg);
 						_logger.info("reorg : " + tempOrg);
 	 	   			}

+ 4 - 4
maxkey-synchronizers/maxkey-synchronizer-workweixin/src/main/java/org/maxkey/synchronizer/workweixin/WorkweixinOrganizationService.java

@@ -85,8 +85,8 @@ public class WorkweixinOrganizationService extends AbstractSynchronizerService i
 	public SynchroRelated buildSynchroRelated(Organizations organization,WorkWeixinDepts dept) {
 		return new SynchroRelated(
 					organization.getId(),
-					organization.getName(),
-					organization.getName(),
+					organization.getOrgName(),
+					organization.getOrgName(),
 					Organizations.CLASS_TYPE,
 					synchronizer.getId(),
 					synchronizer.getName(),
@@ -115,8 +115,8 @@ public class WorkweixinOrganizationService extends AbstractSynchronizerService i
 				synchroRelatedService.findByOriginId(
 				this.synchronizer,dept.getParentid() + "",Organizations.CLASS_TYPE);
 		Organizations org = new Organizations();
-		org.setName(dept.getName());
-		org.setCode(dept.getId()+"");
+		org.setOrgName(dept.getName());
+		org.setOrgCode(dept.getId()+"");
 		org.setParentId(synchroRelatedParent.getObjectId());
 		org.setParentName(synchroRelatedParent.getObjectName());
 		org.setSortIndex(dept.getOrder());

+ 4 - 4
maxkey-synchronizers/maxkey-synchronizer/src/main/java/org/maxkey/synchronizer/AbstractSynchronizerService.java

@@ -65,7 +65,7 @@ public abstract class AbstractSynchronizerService {
         for(Organizations org : orgsList) {
            if(org.getId().equals(rootOrgId) && rootOrgId.equals("1")) {
                rootOrganization = org; 
-               rootOrganization.setNamePath("/"+rootOrganization.getName());
+               rootOrganization.setNamePath("/"+rootOrganization.getOrgName());
                rootOrganization.setCodePath("/1");
                rootOrganization.setParentId("-1");
                rootOrganization.setParentName("");
@@ -108,9 +108,9 @@ public abstract class AbstractSynchronizerService {
         for(Organizations org : orgsList) {
             if(org.getParentId().equals(parentOrg.getId())) {
                 if(org.getNamePath() == null 
-                        || !org.getNamePath().equals(parentOrg.getNamePath()+"/"+org.getName())) {
-                    org.setParentName(parentOrg.getName());
-                    org.setNamePath(parentOrg.getNamePath()+"/"+org.getName());
+                        || !org.getNamePath().equals(parentOrg.getNamePath()+"/"+org.getOrgName())) {
+                    org.setParentName(parentOrg.getOrgName());
+                    org.setNamePath(parentOrg.getNamePath()+"/"+org.getOrgName());
                     org.setCodePath(parentOrg.getCodePath()+"/"+org.getId());
                     organizationsService.update(org);
                 }

+ 4 - 8
maxkey-web-frontend/maxkey-web-app/src/app/routes/dashboard/home/home.component.html

@@ -1,12 +1,8 @@
 <div nz-row>
   <div nz-col nzMd="3"></div>
   <div nz-col nzMd="18">
-    <nz-list
-      [nzLoading]="loading"
-      [nzDataSource]="appList"
-      [nzRenderItem]="item"
-      [nzGrid]="{ gutter: 24, xl: 6, lg: 8, md: 8, sm: 12, xs: 24 }"
-    >
+    <nz-list [nzLoading]="loading" [nzDataSource]="appList" [nzRenderItem]="item"
+      [nzGrid]="{ gutter: 24, xl: 6, lg: 8, md: 8, sm: 12, xs: 24 }">
       <ng-template #item let-item>
         <nz-list-item>
           <nz-card nzHoverable style="">
@@ -43,7 +39,7 @@
                 <p style="text-align: center" (click)="onAuthz($event, item.id)">
                   <img class="appListimage" src="{{ item.iconBase64 }}" />
                 </p>
-                <p>{{ item.name }}</p>
+                <p>{{ item.appName }}</p>
               </div>
             </div>
           </nz-card>
@@ -52,4 +48,4 @@
     </nz-list>
   </div>
   <div nz-col nzMd="3"></div>
-</div>
+</div>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/entity/Apps.ts

@@ -19,7 +19,7 @@ import format from 'date-fns/format';
 import { BaseEntity } from './BaseEntity';
 
 export class Apps extends BaseEntity {
-    name!: String;
+    appName!: String;
     loginUrl!: String;
     category!: String;
     protocol!: String;

+ 5 - 6
maxkey-web-frontend/maxkey-web-mgt-app/src/app/entity/Organizations.ts

@@ -1,25 +1,24 @@
 /*
  * 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.
  */
- 
 
 import { BaseEntity } from './BaseEntity';
 
 export class Organizations extends BaseEntity {
-    code!: String;
-    name!: String;
+    orgCode!: String;
+    orgName!: String;
     fullName!: String;
     parentId!: String;
     parentCode!: string;

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/entity/Resources.ts

@@ -17,7 +17,7 @@
 import { BaseEntity } from './BaseEntity';
 
 export class Resources extends BaseEntity {
-    name!: String;
+    resourceName!: String;
     permission!: String;
     appId!: String;
     appName!: String;

+ 2 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/entity/Roles.ts

@@ -19,7 +19,8 @@ import format from 'date-fns/format';
 import { BaseEntity } from './BaseEntity';
 
 export class Roles extends BaseEntity {
-    name!: String;
+    roleCode!: String;
+    roleName!: String;
     dynamic!: String;
     filters!: String;
     orgIdsList!: String;

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/permissions/permissions-editer/permissions-editer.component.html

@@ -4,10 +4,10 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
       <div nz-col nzMd="14" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="appName">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
           <nz-form-control>
-            <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-              placeholder="" id="name" />
+            <input nz-input [(ngModel)]="query.params.appName" [ngModelOptions]="{ standalone: true }" name="appName"
+              placeholder="" id="appName" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -43,7 +43,7 @@
         <td [nzChecked]="query.tableCheckedId.has(data.id)" [nzDisabled]="data.disabled"
           (nzCheckedChange)="onTableItemChecked(data.id, $event)"></td>
         <td nzAlign="center"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
-        <td nzAlign="left"> {{ data.name }}</td>
+        <td nzAlign="left"> {{ data.appName }}</td>
         <td nzAlign="left">
           <div *ngIf="data.category == 'none'">{{ 'mxk.apps.category.none' | i18n }}</div>
           <div *ngIf="data.category == '1011'">{{ 'mxk.apps.category.1011' | i18n }}</div>

+ 2 - 2
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/permissions/permissions-editer/permissions-editer.component.ts

@@ -36,7 +36,7 @@ export class PermissionsEditerComponent implements OnInit {
 
   query: {
     params: {
-      name: String;
+      appName: String;
       displayName: String;
       username: String;
       roleId: String;
@@ -60,7 +60,7 @@ export class PermissionsEditerComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        appName: '',
         displayName: '',
         username: '',
         roleId: '',

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/permissions/permissions.component.ts

@@ -169,7 +169,7 @@ export class PermissionsComponent implements OnInit {
     // Return a result when closed
     modal.afterClose.subscribe(result => {
       if (result.refresh) {
-        this.query.params.roleName = result.data.name;
+        this.query.params.roleName = result.data.roleName;
         this.query.params.roleId = result.data.id;
         console.log(result);
         this.fetch();

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/role-members/member-roles-editer/member-roles-editer.component.html

@@ -43,7 +43,7 @@
                 <td nzAlign="left" style="display: none">
                     <span>{{ data.id }}</span>
                 </td>
-                <td nzAlign="left"> {{ data.name }}</td>
+                <td nzAlign="left"> {{ data.roleName }}</td>
                 <td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
                         style="color: green"></i></td>
             </tr>

+ 3 - 3
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/role-members/role-members.component.html

@@ -5,11 +5,11 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 24, lg: 24, xl: 48, xxl: 48 }">
       <div nz-col nzMd="8" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="roleName">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
           <nz-form-control>
             <nz-input-group nzSearch [nzAddOnAfter]="suffixButton">
-              <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-                readonly placeholder="" id="name" />
+              <input nz-input [(ngModel)]="query.params.roleName" [ngModelOptions]="{ standalone: true }"
+                name="roleName" readonly placeholder="" id="roleName" />
             </nz-input-group>
             <ng-template #suffixButton>
               <button nz-button nzType="primary" (click)="onSelect($event)" nzSearch>{{ 'mxk.text.select' | i18n

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/role-members/role-members.component.ts

@@ -41,7 +41,7 @@ import { RoleMembersEditerComponent } from './role-members-editer/role-members-e
 export class RoleMembersComponent implements OnInit {
   query: {
     params: {
-      name: String;
+      roleName: String;
       displayName: String;
       username: String;
       roleId: String;
@@ -68,7 +68,7 @@ export class RoleMembersComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        roleName: '',
         displayName: '',
         username: '',
         roleId: '',
@@ -128,7 +128,7 @@ export class RoleMembersComponent implements OnInit {
   onReset(): void {
     this.query.params.username = '';
     this.query.params.roleId = '';
-    this.query.params.name = '';
+    this.query.params.roleName = '';
     this.fetch();
   }
 
@@ -196,7 +196,7 @@ export class RoleMembersComponent implements OnInit {
     // Return a result when closed
     modal.afterClose.subscribe(result => {
       if (result.refresh) {
-        this.query.params.name = result.data.name;
+        this.query.params.roleName = result.data.roleName;
         this.query.params.roleId = result.data.id;
         console.log(result);
         this.fetch();

+ 12 - 5
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/role-editer/role-editer.component.html

@@ -1,17 +1,24 @@
 <div *nzModalTitle> {{ isEdit ? ('mxk.text.edit' | i18n) : ('mxk.text.add' | i18n) }} </div>
 <div>
   <form nz-form [formGroup]="formGroup" (ngSubmit)="onSubmit($event)" se-container="1">
-    <nz-form-item>
+    <nz-form-item class="d-none">
       <nz-form-label [nzMd]="6" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
       <nz-form-control [nzMd]="18" nzErrorTip="The input is not valid id!">
         <input [(ngModel)]="form.model.id" disabled="{{ isEdit }}" [ngModelOptions]="{ standalone: true }" nz-input
-          name="id" id="id" />
+          name="id" />
+      </nz-form-control>
+    </nz-form-item>
+    <nz-form-item>
+      <nz-form-label [nzMd]="6" nzRequired nzFor="roleCode">{{ 'mxk.text.id' | i18n }}</nz-form-label>
+      <nz-form-control [nzMd]="18" nzErrorTip="The input is not valid id!">
+        <input [(ngModel)]="form.model.roleCode" [ngModelOptions]="{ standalone: true }" nz-input name="roleCode" />
       </nz-form-control>
     </nz-form-item>
     <nz-form-item>
-      <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
-      <nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not validminLength!">
-        <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+      <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="roleName">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
+      <nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid minLength!">
+        <input [(ngModel)]="form.model.roleName" [ngModelOptions]="{ standalone: true }" nz-input name="roleName"
+          id="roleName" />
       </nz-form-control>
     </nz-form-item>
     <nz-form-item>

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/roles.component.html

@@ -5,10 +5,10 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
       <div nz-col nzMd="16" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="roleName">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
           <nz-form-control>
-            <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-              placeholder="" id="name" />
+            <input nz-input [(ngModel)]="query.params.roleName" [ngModelOptions]="{ standalone: true }" name="roleName"
+              placeholder="" id="roleName" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -53,7 +53,7 @@
         <td nzAlign="left" style="display: none">
           <span>{{ data.id }}</span>
         </td>
-        <td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
+        <td nzAlign="left" nzBreakWord="false">{{ data.roleName }}</td>
         <td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
             style="color: green"></i></td>
         <td nzAlign="left">{{ data.description }}</td>

+ 2 - 2
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/roles.component.ts

@@ -36,7 +36,7 @@ import { RoleEditerComponent } from './role-editer/role-editer.component';
 export class RolesComponent implements OnInit {
   query: {
     params: {
-      name: String;
+      roleName: String;
       displayName: String;
       employeeNumber: String;
       startDate: String;
@@ -59,7 +59,7 @@ export class RolesComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        roleName: '',
         displayName: '',
         employeeNumber: '',
         startDate: '',

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/select-roles/select-roles.component.html

@@ -4,10 +4,10 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
       <div nz-col nzMd="14" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="roleName">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
           <nz-form-control>
-            <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-              placeholder="" id="name" />
+            <input nz-input [(ngModel)]="query.params.roleName" [ngModelOptions]="{ standalone: true }" name="roleName"
+              placeholder="" id="roleName" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -43,7 +43,7 @@
         <td nzAlign="left" style="display: none">
           <span>{{ data.id }}</span>
         </td>
-        <td nzAlign="left"> {{ data.name }}</td>
+        <td nzAlign="left"> {{ data.roleName }}</td>
         <td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
             style="color: green"></i></td>
       </tr>

+ 2 - 2
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/roles/select-roles/select-roles.component.ts

@@ -33,7 +33,7 @@ import { RolesService } from '../../../../service/roles.service';
 export class SelectRolesComponent implements OnInit {
   query: {
     params: {
-      name: String;
+      roleName: String;
       displayName: String;
       protocol: String;
       startDate: String;
@@ -56,7 +56,7 @@ export class SelectRolesComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        roleName: '',
         displayName: '',
         protocol: '',
         startDate: '',

+ 87 - 99
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-basic-details-editer/app-basic-details-editer.component.html

@@ -8,24 +8,22 @@
             <nz-form-item style="width: 100%">
               <nz-form-label [nzMd]="8" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
               <nz-form-control [nzMd]="16" nzErrorTip="The input is not valid id!">
-                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
+                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id"
+                  id="id" />
               </nz-form-control>
             </nz-form-item>
             <nz-form-item style="width: 100%">
-              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}</nz-form-label>
-              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid secret!">
+              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}
+              </nz-form-label>
+              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+                nzErrorTip="The input is not valid secret!">
                 <nz-input-group nzSearch [nzAddOnAfter]="suffixPasswordButton">
-                  <input
-                    [(ngModel)]="form.model.secret"
-                    readonly
-                    [ngModelOptions]="{ standalone: true }"
-                    nz-input
-                    name="secret"
-                    id="secret"
-                  />
+                  <input [(ngModel)]="form.model.secret" readonly [ngModelOptions]="{ standalone: true }" nz-input
+                    name="secret" id="secret" />
                 </nz-input-group>
                 <ng-template #suffixPasswordButton>
-                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate' | i18n }}</button>
+                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate'
+                    | i18n }}</button>
                 </ng-template>
               </nz-form-control>
             </nz-form-item>
@@ -34,57 +32,43 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="icon">{{ 'mxk.apps.icon' | i18n }}</nz-form-label>
             <div nz-col class="clearfix" nzSm="16" nzXs="24">
-              <nz-upload
-                nzAction="file/upload/"
-                nzListType="picture-card"
-                [(nzFileList)]="fileList"
-                nzName="uploadFile"
-                [nzShowButton]="fileList.length < 1"
-                [nzPreview]="handlePreview"
-                (nzChange)="uploadImageChange($event)"
-              >
+              <nz-upload nzAction="file/upload/" nzListType="picture-card" [(nzFileList)]="fileList" nzName="uploadFile"
+                [nzShowButton]="fileList.length < 1" [nzPreview]="handlePreview" (nzChange)="uploadImageChange($event)">
                 <div>
                   <i nz-icon nzType="plus"></i>
                   <div style="margin-top: 8px">Upload</div>
                 </div>
               </nz-upload>
-              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible = false">
+              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null"
+                (nzOnCancel)="previewVisible = false">
                 <ng-template #modalContent>
                   <img [src]="previewImage" [ngStyle]="{ width: '100%' }" />
                 </ng-template>
               </nz-modal>
             </div>
 
-            <nz-form-control
-              style="display: none"
-              [nzSm]="16"
-              [nzMd]="16"
-              [nzXs]="36"
-              [nzXl]="48"
-              nzErrorTip="The input is not valid icon!"
-            >
-              <input
-                [(ngModel)]="form.model.iconId"
-                disabled="true"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="icon"
-                id="icon"
-              />
+            <nz-form-control style="display: none" [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid icon!">
+              <input [(ngModel)]="form.model.iconId" disabled="true" [ngModelOptions]="{ standalone: true }" nz-input
+                name="icon" id="icon" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-              <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+              <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName"
+                id="appName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="frequently">{{ 'mxk.apps.frequently' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid frequently!">
-              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid frequently!">
+              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
                 <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
               </nz-radio-group>
@@ -93,15 +77,20 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid protocol!">
-              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol" id="protocol" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid protocol!">
+              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol"
+                id="protocol" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="category">{{ 'mxk.apps.category' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid category!">
-              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category" id="category">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid category!">
+              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category"
+                id="category">
                 <nz-option nzValue="none" nzLabel="{{ 'mxk.apps.category.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1011" nzLabel="{{ 'mxk.apps.category.1011' | i18n }}"></nz-option>
                 <nz-option nzValue="1012" nzLabel="{{ 'mxk.apps.category.1012' | i18n }}"></nz-option>
@@ -136,9 +125,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid loginUrl!">
-              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl" id="loginUrl" />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid loginUrl!">
+              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl"
+                id="loginUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -147,14 +139,18 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutUrl">{{ 'mxk.apps.logoutUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutUrl!">
-              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input name="logoutUrl" id="logoutUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutUrl!">
+              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="logoutUrl" id="logoutUrl" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutType">{{ 'mxk.apps.logoutType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutType!">
-              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType" id="logoutType">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutType!">
+              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType"
+                id="logoutType">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.logoutType.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.logoutType.back_channel' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.logoutType.front_channel' | i18n }}"></nz-option>
@@ -166,8 +162,10 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="visible">{{ 'mxk.apps.visible' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid visible!">
-              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible" id="visible">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid visible!">
+              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible"
+                id="visible">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.visible.hidden' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.visible.all' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.visible.internet' | i18n }}"></nz-option>
@@ -177,30 +175,38 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="sortIndex">{{ 'mxk.text.sortIndex' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sortIndex!">
-              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input name="sortIndex" id="sortIndex" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sortIndex!">
+              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sortIndex" id="sortIndex" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendor">{{ 'mxk.apps.vendor' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendor!">
-              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor" id="vendor" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendor!">
+              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor"
+                id="vendor" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendorUrl">{{ 'mxk.apps.vendor.url' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendorUrl!">
-              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input name="vendorUrl" id="vendorUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendorUrl!">
+              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="vendorUrl" id="vendorUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isAdapter">{{ 'mxk.apps.isAdapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isAdapter!">
-              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter" id="isAdapter">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid isAdapter!">
+              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter"
+                id="isAdapter">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.isAdapter.no' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.isAdapter.yes' | i18n }}"></nz-option>
               </nz-select>
@@ -208,50 +214,32 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="adapterName">{{ 'mxk.apps.adapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid adapterName!">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid adapterName!">
               <nz-input-group nzSearch [nzAddOnAfter]="suffixAdapterButton">
-                <input
-                  [(ngModel)]="form.model.adapterName"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="adapterName"
-                  id="adapterName"
-                />
+                <input [(ngModel)]="form.model.adapterName" [ngModelOptions]="{ standalone: true }" nz-input
+                  name="adapterName" id="adapterName" />
               </nz-input-group>
               <ng-template #suffixAdapterButton>
-                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' | i18n }}</button>
+                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' |
+                  i18n }}</button>
               </ng-template>
 
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapterId"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapterId"
-                id="adapterId"
-              />
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapter"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapter"
-                id="adapter"
-              />
+              <input type="hidden" [(ngModel)]="form.model.adapterId" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapterId" id="adapterId" />
+              <input type="hidden" [(ngModel)]="form.model.adapter" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapter" id="adapter" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid description!">
-              <input
-                [(ngModel)]="form.model.description"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="description"
-                id="description"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid description!">
+              <input [(ngModel)]="form.model.description" [ngModelOptions]="{ standalone: true }" nz-input
+                name="description" id="description" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -263,4 +251,4 @@
 <div *nzModalFooter>
   <button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
   <button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
-</div>
+</div>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-basic-details-editer/app-basic-details-editer.component.ts

@@ -89,7 +89,7 @@ export class AppBasicDetailsEditerComponent implements OnInit {
         this.fileList = [
           {
             uid: this.form.model.id.toString(),
-            name: this.form.model.name.toString(),
+            name: this.form.model.appName.toString(),
             status: 'done',
             url: this.previewImage
           }

+ 4 - 3
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-cas-details-editer/app-cas-details-editer.component.html

@@ -56,10 +56,11 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-              <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name"
-                id="name" />
+              <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName"
+                id="appName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-cas-details-editer/app-cas-details-editer.component.ts

@@ -91,7 +91,7 @@ export class AppCasDetailsEditerComponent implements OnInit {
         this.fileList = [
           {
             uid: this.form.model.id.toString(),
-            name: this.form.model.name.toString(),
+            name: this.form.model.appName.toString(),
             status: 'done',
             url: this.previewImage
           }

+ 119 - 139
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-extend-api-details-editer/app-extend-api-details-editer.component.html

@@ -8,24 +8,22 @@
             <nz-form-item style="width: 100%">
               <nz-form-label [nzMd]="8" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
               <nz-form-control [nzMd]="16" nzErrorTip="The input is not valid id!">
-                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
+                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id"
+                  id="id" />
               </nz-form-control>
             </nz-form-item>
             <nz-form-item style="width: 100%">
-              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}</nz-form-label>
-              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid secret!">
+              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}
+              </nz-form-label>
+              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+                nzErrorTip="The input is not valid secret!">
                 <nz-input-group nzSearch [nzAddOnAfter]="suffixPasswordButton">
-                  <input
-                    [(ngModel)]="form.model.secret"
-                    readonly
-                    [ngModelOptions]="{ standalone: true }"
-                    nz-input
-                    name="secret"
-                    id="secret"
-                  />
+                  <input [(ngModel)]="form.model.secret" readonly [ngModelOptions]="{ standalone: true }" nz-input
+                    name="secret" id="secret" />
                 </nz-input-group>
                 <ng-template #suffixPasswordButton>
-                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate' | i18n }}</button>
+                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate'
+                    | i18n }}</button>
                 </ng-template>
               </nz-form-control>
             </nz-form-item>
@@ -34,57 +32,43 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="icon">{{ 'mxk.apps.icon' | i18n }}</nz-form-label>
             <div nz-col class="clearfix" nzSm="16" nzXs="24">
-              <nz-upload
-                nzAction="file/upload/"
-                nzListType="picture-card"
-                [(nzFileList)]="fileList"
-                nzName="uploadFile"
-                [nzShowButton]="fileList.length < 1"
-                [nzPreview]="handlePreview"
-                (nzChange)="uploadImageChange($event)"
-              >
+              <nz-upload nzAction="file/upload/" nzListType="picture-card" [(nzFileList)]="fileList" nzName="uploadFile"
+                [nzShowButton]="fileList.length < 1" [nzPreview]="handlePreview" (nzChange)="uploadImageChange($event)">
                 <div>
                   <i nz-icon nzType="plus"></i>
                   <div style="margin-top: 8px">Upload</div>
                 </div>
               </nz-upload>
-              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible = false">
+              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null"
+                (nzOnCancel)="previewVisible = false">
                 <ng-template #modalContent>
                   <img [src]="previewImage" [ngStyle]="{ width: '100%' }" />
                 </ng-template>
               </nz-modal>
             </div>
 
-            <nz-form-control
-              style="display: none"
-              [nzSm]="16"
-              [nzMd]="16"
-              [nzXs]="36"
-              [nzXl]="48"
-              nzErrorTip="The input is not valid icon!"
-            >
-              <input
-                [(ngModel)]="form.model.iconId"
-                disabled="true"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="icon"
-                id="icon"
-              />
+            <nz-form-control style="display: none" [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid icon!">
+              <input [(ngModel)]="form.model.iconId" disabled="true" [ngModelOptions]="{ standalone: true }" nz-input
+                name="icon" id="icon" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-              <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+              <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName"
+                id="appName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="frequently">{{ 'mxk.apps.frequently' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid frequently!">
-              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid frequently!">
+              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
                 <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
               </nz-radio-group>
@@ -93,15 +77,20 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid protocol!">
-              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol" id="protocol" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid protocol!">
+              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol"
+                id="protocol" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="category">{{ 'mxk.apps.category' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid category!">
-              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category" id="category">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid category!">
+              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category"
+                id="category">
                 <nz-option nzValue="none" nzLabel="{{ 'mxk.apps.category.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1011" nzLabel="{{ 'mxk.apps.category.1011' | i18n }}"></nz-option>
                 <nz-option nzValue="1012" nzLabel="{{ 'mxk.apps.category.1012' | i18n }}"></nz-option>
@@ -136,9 +125,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid loginUrl!">
-              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl" id="loginUrl" />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid loginUrl!">
+              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl"
+                id="loginUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -146,21 +138,21 @@
       <nz-tab nzTitle="{{ 'mxk.apps.extendapi.tab' | i18n }}">
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="principal">{{ 'mxk.apps.principal' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid principal!">
-              <input [(ngModel)]="form.model.principal" [ngModelOptions]="{ standalone: true }" nz-input name="principal" id="principal" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="principal">{{ 'mxk.apps.principal' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid principal!">
+              <input [(ngModel)]="form.model.principal" [ngModelOptions]="{ standalone: true }" nz-input
+                name="principal" id="principal" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="credentials">{{ 'mxk.apps.credentials' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid credentials!">
-              <input
-                [(ngModel)]="form.model.credentials"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="credentials"
-                id="credentials"
-              />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="credentials">{{ 'mxk.apps.credentials' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid credentials!">
+              <input [(ngModel)]="form.model.credentials" [ngModelOptions]="{ standalone: true }" nz-input
+                name="credentials" id="credentials" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -168,8 +160,10 @@
         <div nz-row>
           <nz-form-item style="width: 100%">
             <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="credential">{{ 'mxk.apps.credential' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid credential!">
-              <nz-radio-group [(ngModel)]="form.model.credential" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid credential!">
+              <nz-radio-group [(ngModel)]="form.model.credential" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="user-defined">{{ 'mxk.apps.credential.user-defined' | i18n }}</label>
                 <label nz-radio-button nzValue="shared">{{ 'mxk.apps.credential.shared' | i18n }}</label>
                 <label nz-radio-button nzValue="system">{{ 'mxk.apps.credential.system' | i18n }}</label>
@@ -179,14 +173,12 @@
         </div>
         <div nz-row style="{{ form.model.credential == 'system' ? '' : 'display: none;' }}">
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="systemUserAttr">{{ 'mxk.apps.systemUserAttr' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid systemUserAttr!">
-              <nz-select
-                [(ngModel)]="form.model.systemUserAttr"
-                [ngModelOptions]="{ standalone: true }"
-                name="systemUserAttr"
-                id="systemUserAttr"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="systemUserAttr">{{ 'mxk.apps.systemUserAttr' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid systemUserAttr!">
+              <nz-select [(ngModel)]="form.model.systemUserAttr" [ngModelOptions]="{ standalone: true }"
+                name="systemUserAttr" id="systemUserAttr">
                 <nz-option nzValue="username" nzLabel="{{ 'mxk.users.username' | i18n }}"></nz-option>
                 <nz-option nzValue="employeeNumber" nzLabel="{{ 'mxk.users.employeeNumber' | i18n }}"></nz-option>
                 <nz-option nzValue="email" nzLabel="{{ 'mxk.users.email' | i18n }}"></nz-option>
@@ -201,29 +193,21 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="sharedUsername">{{
               'mxk.apps.credential.sharedUsername' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sharedUsername!">
-              <input
-                [(ngModel)]="form.model.sharedUsername"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="sharedUsername"
-                id="sharedUsername"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sharedUsername!">
+              <input [(ngModel)]="form.model.sharedUsername" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sharedUsername" id="sharedUsername" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="sharedPassword">{{
               'mxk.apps.credential.sharedPassword' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sharedPassword!">
-              <input
-                [(ngModel)]="form.model.sharedPassword"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="sharedPassword"
-                id="sharedPassword"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sharedPassword!">
+              <input [(ngModel)]="form.model.sharedPassword" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sharedPassword" id="sharedPassword" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -232,14 +216,18 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutUrl">{{ 'mxk.apps.logoutUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutUrl!">
-              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input name="logoutUrl" id="logoutUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutUrl!">
+              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="logoutUrl" id="logoutUrl" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutType">{{ 'mxk.apps.logoutType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutType!">
-              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType" id="logoutType">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutType!">
+              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType"
+                id="logoutType">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.logoutType.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.logoutType.back_channel' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.logoutType.front_channel' | i18n }}"></nz-option>
@@ -251,8 +239,10 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="visible">{{ 'mxk.apps.visible' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid visible!">
-              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible" id="visible">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid visible!">
+              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible"
+                id="visible">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.visible.hidden' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.visible.all' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.visible.internet' | i18n }}"></nz-option>
@@ -262,30 +252,38 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="sortIndex">{{ 'mxk.text.sortIndex' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sortIndex!">
-              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input name="sortIndex" id="sortIndex" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sortIndex!">
+              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sortIndex" id="sortIndex" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendor">{{ 'mxk.apps.vendor' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendor!">
-              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor" id="vendor" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendor!">
+              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor"
+                id="vendor" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendorUrl">{{ 'mxk.apps.vendor.url' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendorUrl!">
-              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input name="vendorUrl" id="vendorUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendorUrl!">
+              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="vendorUrl" id="vendorUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isAdapter">{{ 'mxk.apps.isAdapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isAdapter!">
-              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter" id="isAdapter">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid isAdapter!">
+              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter"
+                id="isAdapter">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.isAdapter.no' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.isAdapter.yes' | i18n }}"></nz-option>
               </nz-select>
@@ -293,49 +291,31 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="adapterName">{{ 'mxk.apps.adapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid adapterName!">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid adapterName!">
               <nz-input-group nzSearch [nzAddOnAfter]="suffixAdapterButton">
-                <input
-                  [(ngModel)]="form.model.adapterName"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="adapterName"
-                  id="adapterName"
-                />
+                <input [(ngModel)]="form.model.adapterName" [ngModelOptions]="{ standalone: true }" nz-input
+                  name="adapterName" id="adapterName" />
               </nz-input-group>
               <ng-template #suffixAdapterButton>
-                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' | i18n }}</button>
+                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' |
+                  i18n }}</button>
               </ng-template>
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapterId"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapterId"
-                id="adapterId"
-              />
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapter"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapter"
-                id="adapter"
-              />
+              <input type="hidden" [(ngModel)]="form.model.adapterId" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapterId" id="adapterId" />
+              <input type="hidden" [(ngModel)]="form.model.adapter" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapter" id="adapter" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid description!">
-              <input
-                [(ngModel)]="form.model.description"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="description"
-                id="description"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid description!">
+              <input [(ngModel)]="form.model.description" [ngModelOptions]="{ standalone: true }" nz-input
+                name="description" id="description" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -347,4 +327,4 @@
 <div *nzModalFooter>
   <button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
   <button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
-</div>
+</div>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-extend-api-details-editer/app-extend-api-details-editer.component.ts

@@ -113,7 +113,7 @@ export class AppExtendApiDetailsEditerComponent implements OnInit {
       this.fileList = [
         {
           uid: this.form.model.id.toString(),
-          name: this.form.model.name.toString(),
+          name: this.form.model.appName.toString(),
           status: 'done',
           url: this.previewImage
         }

+ 133 - 171
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-form-based-details-editer/app-form-based-details-editer.component.html

@@ -8,24 +8,22 @@
             <nz-form-item style="width: 100%">
               <nz-form-label [nzMd]="8" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
               <nz-form-control [nzMd]="16" nzErrorTip="The input is not valid id!">
-                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
+                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id"
+                  id="id" />
               </nz-form-control>
             </nz-form-item>
             <nz-form-item style="width: 100%">
-              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}</nz-form-label>
-              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid secret!">
+              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}
+              </nz-form-label>
+              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+                nzErrorTip="The input is not valid secret!">
                 <nz-input-group nzSearch [nzAddOnAfter]="suffixPasswordButton">
-                  <input
-                    [(ngModel)]="form.model.secret"
-                    readonly
-                    [ngModelOptions]="{ standalone: true }"
-                    nz-input
-                    name="secret"
-                    id="secret"
-                  />
+                  <input [(ngModel)]="form.model.secret" readonly [ngModelOptions]="{ standalone: true }" nz-input
+                    name="secret" id="secret" />
                 </nz-input-group>
                 <ng-template #suffixPasswordButton>
-                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate' | i18n }}</button>
+                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate'
+                    | i18n }}</button>
                 </ng-template>
               </nz-form-control>
             </nz-form-item>
@@ -34,57 +32,43 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="icon">{{ 'mxk.apps.icon' | i18n }}</nz-form-label>
             <div nz-col class="clearfix" nzSm="16" nzXs="24">
-              <nz-upload
-                nzAction="file/upload/"
-                nzListType="picture-card"
-                [(nzFileList)]="fileList"
-                nzName="uploadFile"
-                [nzShowButton]="fileList.length < 1"
-                [nzPreview]="handlePreview"
-                (nzChange)="uploadImageChange($event)"
-              >
+              <nz-upload nzAction="file/upload/" nzListType="picture-card" [(nzFileList)]="fileList" nzName="uploadFile"
+                [nzShowButton]="fileList.length < 1" [nzPreview]="handlePreview" (nzChange)="uploadImageChange($event)">
                 <div>
                   <i nz-icon nzType="plus"></i>
                   <div style="margin-top: 8px">Upload</div>
                 </div>
               </nz-upload>
-              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible = false">
+              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null"
+                (nzOnCancel)="previewVisible = false">
                 <ng-template #modalContent>
                   <img [src]="previewImage" [ngStyle]="{ width: '100%' }" />
                 </ng-template>
               </nz-modal>
             </div>
 
-            <nz-form-control
-              style="display: none"
-              [nzSm]="16"
-              [nzMd]="16"
-              [nzXs]="36"
-              [nzXl]="48"
-              nzErrorTip="The input is not valid icon!"
-            >
-              <input
-                [(ngModel)]="form.model.iconId"
-                disabled="true"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="icon"
-                id="icon"
-              />
+            <nz-form-control style="display: none" [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid icon!">
+              <input [(ngModel)]="form.model.iconId" disabled="true" [ngModelOptions]="{ standalone: true }" nz-input
+                name="icon" id="icon" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-              <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+              <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName"
+                id="appName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="frequently">{{ 'mxk.apps.frequently' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid frequently!">
-              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid frequently!">
+              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
                 <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
               </nz-radio-group>
@@ -93,15 +77,20 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid protocol!">
-              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol" id="protocol" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid protocol!">
+              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol"
+                id="protocol" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="category">{{ 'mxk.apps.category' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid category!">
-              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category" id="category">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid category!">
+              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category"
+                id="category">
                 <nz-option nzValue="none" nzLabel="{{ 'mxk.apps.category.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1011" nzLabel="{{ 'mxk.apps.category.1011' | i18n }}"></nz-option>
                 <nz-option nzValue="1012" nzLabel="{{ 'mxk.apps.category.1012' | i18n }}"></nz-option>
@@ -136,9 +125,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid loginUrl!">
-              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl" id="loginUrl" />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid loginUrl!">
+              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl"
+                id="loginUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -148,15 +140,11 @@
           <nz-form-item style="width: 100%">
             <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="redirectUri">{{
               'mxk.apps.formbased.redirectUri' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid redirectUri!">
-              <input
-                [(ngModel)]="form.model.redirectUri"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="redirectUri"
-                id="redirectUri"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid redirectUri!">
+              <input [(ngModel)]="form.model.redirectUri" [ngModelOptions]="{ standalone: true }" nz-input
+                name="redirectUri" id="redirectUri" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -164,56 +152,42 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="usernameMapping">{{
               'mxk.apps.formbased.usernameMapping' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid usernameMapping!">
-              <input
-                [(ngModel)]="form.model.usernameMapping"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="usernameMapping"
-                id="usernameMapping"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid usernameMapping!">
+              <input [(ngModel)]="form.model.usernameMapping" [ngModelOptions]="{ standalone: true }" nz-input
+                name="usernameMapping" id="usernameMapping" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="passwordMapping">{{
               'mxk.apps.formbased.passwordMapping' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid passwordMapping!">
-              <input
-                [(ngModel)]="form.model.passwordMapping"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="passwordMapping"
-                id="passwordMapping"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid passwordMapping!">
+              <input [(ngModel)]="form.model.passwordMapping" [ngModelOptions]="{ standalone: true }" nz-input
+                name="passwordMapping" id="passwordMapping" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="authorizeView">{{ 'mxk.apps.formbased.authorizeView' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid authorizeView!">
-              <input
-                [(ngModel)]="form.model.authorizeView"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="authorizeView"
-                id="authorizeView"
-              />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="authorizeView">{{ 'mxk.apps.formbased.authorizeView' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid authorizeView!">
+              <input [(ngModel)]="form.model.authorizeView" [ngModelOptions]="{ standalone: true }" nz-input
+                name="authorizeView" id="authorizeView" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="passwordAlgorithm">{{
               'mxk.apps.formbased.passwordAlgorithm' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid passwordAlgorithm!">
-              <nz-select
-                [(ngModel)]="form.model.passwordAlgorithm"
-                [ngModelOptions]="{ standalone: true }"
-                name="passwordAlgorithm"
-                id="passwordAlgorithm"
-              >
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid passwordAlgorithm!">
+              <nz-select [(ngModel)]="form.model.passwordAlgorithm" [ngModelOptions]="{ standalone: true }"
+                name="passwordAlgorithm" id="passwordAlgorithm">
                 <nz-option nzValue="NONE" nzLabel="NONE"></nz-option>
                 <nz-option nzValue="MD5" nzLabel="MD5"></nz-option>
                 <nz-option nzValue="SHA" nzLabel="SHA"></nz-option>
@@ -235,8 +209,10 @@
         <div nz-row>
           <nz-form-item style="width: 100%">
             <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="credential">{{ 'mxk.apps.credential' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid credential!">
-              <nz-radio-group [(ngModel)]="form.model.credential" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid credential!">
+              <nz-radio-group [(ngModel)]="form.model.credential" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="user-defined">{{ 'mxk.apps.credential.user-defined' | i18n }}</label>
                 <label nz-radio-button nzValue="shared">{{ 'mxk.apps.credential.shared' | i18n }}</label>
                 <label nz-radio-button nzValue="system">{{ 'mxk.apps.credential.system' | i18n }}</label>
@@ -246,14 +222,12 @@
         </div>
         <div nz-row style="{{ form.model.credential == 'system' ? '' : 'display: none;' }}">
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="systemUserAttr">{{ 'mxk.apps.systemUserAttr' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid systemUserAttr!">
-              <nz-select
-                [(ngModel)]="form.model.systemUserAttr"
-                [ngModelOptions]="{ standalone: true }"
-                name="systemUserAttr"
-                id="systemUserAttr"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="systemUserAttr">{{ 'mxk.apps.systemUserAttr' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid systemUserAttr!">
+              <nz-select [(ngModel)]="form.model.systemUserAttr" [ngModelOptions]="{ standalone: true }"
+                name="systemUserAttr" id="systemUserAttr">
                 <nz-option nzValue="username" nzLabel="{{ 'mxk.users.username' | i18n }}"></nz-option>
                 <nz-option nzValue="employeeNumber" nzLabel="{{ 'mxk.users.employeeNumber' | i18n }}"></nz-option>
                 <nz-option nzValue="email" nzLabel="{{ 'mxk.users.email' | i18n }}"></nz-option>
@@ -268,29 +242,21 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="sharedUsername">{{
               'mxk.apps.credential.sharedUsername' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sharedUsername!">
-              <input
-                [(ngModel)]="form.model.sharedUsername"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="sharedUsername"
-                id="sharedUsername"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sharedUsername!">
+              <input [(ngModel)]="form.model.sharedUsername" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sharedUsername" id="sharedUsername" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="sharedPassword">{{
               'mxk.apps.credential.sharedPassword' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sharedPassword!">
-              <input
-                [(ngModel)]="form.model.sharedPassword"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="sharedPassword"
-                id="sharedPassword"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sharedPassword!">
+              <input [(ngModel)]="form.model.sharedPassword" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sharedPassword" id="sharedPassword" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -299,14 +265,18 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutUrl">{{ 'mxk.apps.logoutUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutUrl!">
-              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input name="logoutUrl" id="logoutUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutUrl!">
+              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="logoutUrl" id="logoutUrl" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutType">{{ 'mxk.apps.logoutType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutType!">
-              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType" id="logoutType">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutType!">
+              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType"
+                id="logoutType">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.logoutType.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.logoutType.back_channel' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.logoutType.front_channel' | i18n }}"></nz-option>
@@ -318,8 +288,10 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="visible">{{ 'mxk.apps.visible' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid visible!">
-              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible" id="visible">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid visible!">
+              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible"
+                id="visible">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.visible.hidden' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.visible.all' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.visible.internet' | i18n }}"></nz-option>
@@ -329,30 +301,38 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="sortIndex">{{ 'mxk.text.sortIndex' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sortIndex!">
-              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input name="sortIndex" id="sortIndex" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sortIndex!">
+              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sortIndex" id="sortIndex" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendor">{{ 'mxk.apps.vendor' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendor!">
-              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor" id="vendor" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendor!">
+              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor"
+                id="vendor" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendorUrl">{{ 'mxk.apps.vendor.url' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendorUrl!">
-              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input name="vendorUrl" id="vendorUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendorUrl!">
+              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="vendorUrl" id="vendorUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isAdapter">{{ 'mxk.apps.isAdapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isAdapter!">
-              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter" id="isAdapter">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid isAdapter!">
+              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter"
+                id="isAdapter">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.isAdapter.no' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.isAdapter.yes' | i18n }}"></nz-option>
               </nz-select>
@@ -360,49 +340,31 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="adapterName">{{ 'mxk.apps.adapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid adapterName!">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid adapterName!">
               <nz-input-group nzSearch [nzAddOnAfter]="suffixAdapterButton">
-                <input
-                  [(ngModel)]="form.model.adapterName"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="adapterName"
-                  id="adapterName"
-                />
+                <input [(ngModel)]="form.model.adapterName" [ngModelOptions]="{ standalone: true }" nz-input
+                  name="adapterName" id="adapterName" />
               </nz-input-group>
               <ng-template #suffixAdapterButton>
-                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' | i18n }}</button>
+                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' |
+                  i18n }}</button>
               </ng-template>
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapterId"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapterId"
-                id="adapterId"
-              />
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapter"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapter"
-                id="adapter"
-              />
+              <input type="hidden" [(ngModel)]="form.model.adapterId" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapterId" id="adapterId" />
+              <input type="hidden" [(ngModel)]="form.model.adapter" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapter" id="adapter" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid description!">
-              <input
-                [(ngModel)]="form.model.description"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="description"
-                id="description"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid description!">
+              <input [(ngModel)]="form.model.description" [ngModelOptions]="{ standalone: true }" nz-input
+                name="description" id="description" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -414,4 +376,4 @@
 <div *nzModalFooter>
   <button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
   <button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
-</div>
+</div>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-form-based-details-editer/app-form-based-details-editer.component.ts

@@ -90,7 +90,7 @@ export class AppFormBasedDetailsEditerComponent implements OnInit {
         this.fileList = [
           {
             uid: this.form.model.id.toString(),
-            name: this.form.model.name.toString(),
+            name: this.form.model.appName.toString(),
             status: 'done',
             url: this.previewImage
           }

+ 153 - 168
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-jwt-details-editer/app-jwt-details-editer.component.html

@@ -8,24 +8,22 @@
             <nz-form-item style="width: 100%">
               <nz-form-label [nzMd]="8" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
               <nz-form-control [nzMd]="16" nzErrorTip="The input is not valid id!">
-                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
+                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id"
+                  id="id" />
               </nz-form-control>
             </nz-form-item>
             <nz-form-item style="width: 100%">
-              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}</nz-form-label>
-              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid secret!">
+              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}
+              </nz-form-label>
+              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+                nzErrorTip="The input is not valid secret!">
                 <nz-input-group nzSearch [nzAddOnAfter]="suffixPasswordButton">
-                  <input
-                    [(ngModel)]="form.model.secret"
-                    readonly
-                    [ngModelOptions]="{ standalone: true }"
-                    nz-input
-                    name="secret"
-                    id="secret"
-                  />
+                  <input [(ngModel)]="form.model.secret" readonly [ngModelOptions]="{ standalone: true }" nz-input
+                    name="secret" id="secret" />
                 </nz-input-group>
                 <ng-template #suffixPasswordButton>
-                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate' | i18n }}</button>
+                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate'
+                    | i18n }}</button>
                 </ng-template>
               </nz-form-control>
             </nz-form-item>
@@ -34,57 +32,43 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="icon">{{ 'mxk.apps.icon' | i18n }}</nz-form-label>
             <div nz-col class="clearfix" nzSm="16" nzXs="24">
-              <nz-upload
-                nzAction="file/upload/"
-                nzListType="picture-card"
-                [(nzFileList)]="fileList"
-                nzName="uploadFile"
-                [nzShowButton]="fileList.length < 1"
-                [nzPreview]="handlePreview"
-                (nzChange)="uploadImageChange($event)"
-              >
+              <nz-upload nzAction="file/upload/" nzListType="picture-card" [(nzFileList)]="fileList" nzName="uploadFile"
+                [nzShowButton]="fileList.length < 1" [nzPreview]="handlePreview" (nzChange)="uploadImageChange($event)">
                 <div>
                   <i nz-icon nzType="plus"></i>
                   <div style="margin-top: 8px">Upload</div>
                 </div>
               </nz-upload>
-              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible = false">
+              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null"
+                (nzOnCancel)="previewVisible = false">
                 <ng-template #modalContent>
                   <img [src]="previewImage" [ngStyle]="{ width: '100%' }" />
                 </ng-template>
               </nz-modal>
             </div>
 
-            <nz-form-control
-              style="display: none"
-              [nzSm]="16"
-              [nzMd]="16"
-              [nzXs]="36"
-              [nzXl]="48"
-              nzErrorTip="The input is not valid icon!"
-            >
-              <input
-                [(ngModel)]="form.model.iconId"
-                disabled="true"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="icon"
-                id="icon"
-              />
+            <nz-form-control style="display: none" [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid icon!">
+              <input [(ngModel)]="form.model.iconId" disabled="true" [ngModelOptions]="{ standalone: true }" nz-input
+                name="icon" id="icon" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-              <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+              <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName"
+                id="appName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="frequently">{{ 'mxk.apps.frequently' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid frequently!">
-              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid frequently!">
+              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
                 <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
               </nz-radio-group>
@@ -93,15 +77,20 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid protocol!">
-              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol" id="protocol" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid protocol!">
+              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol"
+                id="protocol" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="category">{{ 'mxk.apps.category' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid category!">
-              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category" id="category">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid category!">
+              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category"
+                id="category">
                 <nz-option nzValue="none" nzLabel="{{ 'mxk.apps.category.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1011" nzLabel="{{ 'mxk.apps.category.1011' | i18n }}"></nz-option>
                 <nz-option nzValue="1012" nzLabel="{{ 'mxk.apps.category.1012' | i18n }}"></nz-option>
@@ -136,9 +125,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid loginUrl!">
-              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl" id="loginUrl" />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid loginUrl!">
+              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl"
+                id="loginUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -146,23 +138,23 @@
       <nz-tab nzTitle="{{ 'mxk.apps.jwt.tab' | i18n }}">
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="redirectUri">{{ 'mxk.apps.jwt.redirectUri' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid redirectUri!">
-              <input
-                [(ngModel)]="form.model.redirectUri"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="redirectUri"
-                id="redirectUri"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="redirectUri">{{ 'mxk.apps.jwt.redirectUri' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid redirectUri!">
+              <input [(ngModel)]="form.model.redirectUri" [ngModelOptions]="{ standalone: true }" nz-input
+                name="redirectUri" id="redirectUri" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="subject">{{ 'mxk.apps.jwt.subject' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid subject!">
-              <nz-select [(ngModel)]="form.model.subject" [ngModelOptions]="{ standalone: true }" name="subject" id="subject">
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="subject">{{ 'mxk.apps.jwt.subject' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid subject!">
+              <nz-select [(ngModel)]="form.model.subject" [ngModelOptions]="{ standalone: true }" name="subject"
+                id="subject">
                 <nz-option nzValue="username" nzLabel="{{ 'mxk.users.username' | i18n }}"></nz-option>
                 <nz-option nzValue="employeeNumber" nzLabel="{{ 'mxk.users.employeeNumber' | i18n }}"></nz-option>
                 <nz-option nzValue="email" nzLabel="{{ 'mxk.users.email' | i18n }}"></nz-option>
@@ -173,9 +165,12 @@
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="tokenType">{{ 'mxk.apps.jwt.tokenType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid tokenType!">
-              <nz-select [(ngModel)]="form.model.tokenType" [ngModelOptions]="{ standalone: true }" name="tokenType" id="tokenType">
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="tokenType">{{ 'mxk.apps.jwt.tokenType' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid tokenType!">
+              <nz-select [(ngModel)]="form.model.tokenType" [ngModelOptions]="{ standalone: true }" name="tokenType"
+                id="tokenType">
                 <nz-option nzValue="POST" nzLabel="POST"></nz-option>
                 <nz-option nzValue="LTPA" nzLabel="LTPA"></nz-option>
               </nz-select>
@@ -184,16 +179,22 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="jwtName">{{ 'mxk.apps.jwt.jwtName' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid jwtName!">
-              <input [(ngModel)]="form.model.jwtName" [ngModelOptions]="{ standalone: true }" nz-input name="jwtName" id="jwtName" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="jwtName">{{ 'mxk.apps.jwt.jwtName' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid jwtName!">
+              <input [(ngModel)]="form.model.jwtName" [ngModelOptions]="{ standalone: true }" nz-input name="jwtName"
+                id="jwtName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="expires">{{ 'mxk.apps.jwt.expires' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid expires!">
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="expires">{{ 'mxk.apps.jwt.expires' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid expires!">
               <nz-input-group nzAddOnAfter="{{ 'mxk.text.second' | i18n }}">
-                <input [(ngModel)]="form.model.expires" [ngModelOptions]="{ standalone: true }" nz-input name="expires" id="expires" />
+                <input [(ngModel)]="form.model.expires" [ngModelOptions]="{ standalone: true }" nz-input name="expires"
+                  id="expires" />
               </nz-input-group>
             </nz-form-control>
           </nz-form-item>
@@ -201,28 +202,29 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="issuer">{{ 'mxk.apps.jwt.issuer' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid issuer!">
-              <input [(ngModel)]="form.model.issuer" [ngModelOptions]="{ standalone: true }" nz-input name="issuer" id="issuer" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid issuer!">
+              <input [(ngModel)]="form.model.issuer" [ngModelOptions]="{ standalone: true }" nz-input name="issuer"
+                id="issuer" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="audience">{{ 'mxk.apps.jwt.audience' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid audience!">
-              <input [(ngModel)]="form.model.audience" [ngModelOptions]="{ standalone: true }" nz-input name="audience" id="audience" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid audience!">
+              <input [(ngModel)]="form.model.audience" [ngModelOptions]="{ standalone: true }" nz-input name="audience"
+                id="audience" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="signature">{{ 'mxk.apps.jwt.signature' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid signature!">
-              <nz-select
-                (ngModelChange)="onSelectSignature($event)"
-                [(ngModel)]="form.model.signature"
-                [ngModelOptions]="{ standalone: true }"
-                name="signature"
-                id="signature"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="signature">{{ 'mxk.apps.jwt.signature' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid signature!">
+              <nz-select (ngModelChange)="onSelectSignature($event)" [(ngModel)]="form.model.signature"
+                [ngModelOptions]="{ standalone: true }" name="signature" id="signature">
                 <nz-option nzValue="NONE" nzLabel="NONE"></nz-option>
                 <nz-option nzValue="RS256" nzLabel="RS256"></nz-option>
                 <nz-option nzValue="RS384" nzLabel="RS384"></nz-option>
@@ -239,29 +241,22 @@
           <nz-form-item style="width: 100%">
             <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="signatureKey">{{
               'mxk.apps.oauth.connect.signatureKey' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid signatureKey!">
-              <textarea
-                [(ngModel)]="form.model.signatureKey"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="signatureKey"
-                id="signatureKey"
-              ></textarea>
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid signatureKey!">
+              <textarea [(ngModel)]="form.model.signatureKey" [ngModelOptions]="{ standalone: true }" nz-input
+                name="signatureKey" id="signatureKey"></textarea>
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="algorithm">{{ 'mxk.apps.oauth.connect.algorithm' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid algorithm!">
-              <nz-select
-                (ngModelChange)="onSelectAlgorithm($event)"
-                [(ngModel)]="form.model.algorithm"
-                [ngModelOptions]="{ standalone: true }"
-                name="algorithm"
-                id="algorithm"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="algorithm">{{ 'mxk.apps.oauth.connect.algorithm' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid algorithm!">
+              <nz-select (ngModelChange)="onSelectAlgorithm($event)" [(ngModel)]="form.model.algorithm"
+                [ngModelOptions]="{ standalone: true }" name="algorithm" id="algorithm">
                 <nz-option nzValue="NONE" nzLabel="NONE"></nz-option>
                 <nz-option nzValue="RSA1_5" nzLabel="RSA1_5"></nz-option>
                 <nz-option nzValue="RSA_OAEP" nzLabel="RSA_OAEP"></nz-option>
@@ -278,14 +273,11 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="encryptionMethod">{{
               'mxk.apps.oauth.connect.encryptionMethod' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid encryptionMethod!">
-              <nz-select
-                [(ngModel)]="form.model.encryptionMethod"
-                [ngModelOptions]="{ standalone: true }"
-                name="encryptionMethod"
-                id="encryptionMethod"
-              >
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid encryptionMethod!">
+              <nz-select [(ngModel)]="form.model.encryptionMethod" [ngModelOptions]="{ standalone: true }"
+                name="encryptionMethod" id="encryptionMethod">
                 <nz-option nzValue="A128GCM" nzLabel="A128GCM"></nz-option>
                 <nz-option nzValue="A192GCM" nzLabel="A192GCM"></nz-option>
                 <nz-option nzValue="A256GCM" nzLabel="A256GCM"></nz-option>
@@ -299,15 +291,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="algorithmKey">{{ 'mxk.apps.oauth.connect.algorithmKey' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid algorithmKey!">
-              <textarea
-                [(ngModel)]="form.model.algorithmKey"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="algorithmKey"
-                id="algorithmKey"
-              ></textarea>
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="algorithmKey">{{ 'mxk.apps.oauth.connect.algorithmKey' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid algorithmKey!">
+              <textarea [(ngModel)]="form.model.algorithmKey" [ngModelOptions]="{ standalone: true }" nz-input
+                name="algorithmKey" id="algorithmKey"></textarea>
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -316,14 +305,18 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutUrl">{{ 'mxk.apps.logoutUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutUrl!">
-              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input name="logoutUrl" id="logoutUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutUrl!">
+              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="logoutUrl" id="logoutUrl" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutType">{{ 'mxk.apps.logoutType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutType!">
-              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType" id="logoutType">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutType!">
+              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType"
+                id="logoutType">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.logoutType.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.logoutType.back_channel' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.logoutType.front_channel' | i18n }}"></nz-option>
@@ -335,8 +328,10 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="visible">{{ 'mxk.apps.visible' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid visible!">
-              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible" id="visible">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid visible!">
+              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible"
+                id="visible">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.visible.hidden' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.visible.all' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.visible.internet' | i18n }}"></nz-option>
@@ -346,30 +341,38 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="sortIndex">{{ 'mxk.text.sortIndex' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sortIndex!">
-              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input name="sortIndex" id="sortIndex" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sortIndex!">
+              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sortIndex" id="sortIndex" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendor">{{ 'mxk.apps.vendor' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendor!">
-              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor" id="vendor" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendor!">
+              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor"
+                id="vendor" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendorUrl">{{ 'mxk.apps.vendor.url' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendorUrl!">
-              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input name="vendorUrl" id="vendorUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendorUrl!">
+              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="vendorUrl" id="vendorUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isAdapter">{{ 'mxk.apps.isAdapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isAdapter!">
-              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter" id="isAdapter">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid isAdapter!">
+              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter"
+                id="isAdapter">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.isAdapter.no' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.isAdapter.yes' | i18n }}"></nz-option>
               </nz-select>
@@ -377,49 +380,31 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="adapterName">{{ 'mxk.apps.adapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid adapterName!">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid adapterName!">
               <nz-input-group nzSearch [nzAddOnAfter]="suffixAdapterButton">
-                <input
-                  [(ngModel)]="form.model.adapterName"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="adapterName"
-                  id="adapterName"
-                />
+                <input [(ngModel)]="form.model.adapterName" [ngModelOptions]="{ standalone: true }" nz-input
+                  name="adapterName" id="adapterName" />
               </nz-input-group>
               <ng-template #suffixAdapterButton>
-                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' | i18n }}</button>
+                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' |
+                  i18n }}</button>
               </ng-template>
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapterId"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapterId"
-                id="adapterId"
-              />
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapter"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapter"
-                id="adapter"
-              />
+              <input type="hidden" [(ngModel)]="form.model.adapterId" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapterId" id="adapterId" />
+              <input type="hidden" [(ngModel)]="form.model.adapter" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapter" id="adapter" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid description!">
-              <input
-                [(ngModel)]="form.model.description"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="description"
-                id="description"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid description!">
+              <input [(ngModel)]="form.model.description" [ngModelOptions]="{ standalone: true }" nz-input
+                name="description" id="description" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -431,4 +416,4 @@
 <div *nzModalFooter>
   <button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
   <button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
-</div>
+</div>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-jwt-details-editer/app-jwt-details-editer.component.ts

@@ -91,7 +91,7 @@ export class AppJwtDetailsEditerComponent implements OnInit {
         this.fileList = [
           {
             uid: this.form.model.id.toString(),
-            name: this.form.model.name.toString(),
+            name: this.form.model.appName.toString(),
             status: 'done',
             url: this.previewImage
           }

+ 169 - 212
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-oauth20-details-editer/app-oauth20-details-editer.component.html

@@ -8,24 +8,22 @@
             <nz-form-item style="width: 100%">
               <nz-form-label [nzMd]="8" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
               <nz-form-control [nzMd]="16" nzErrorTip="The input is not valid id!">
-                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
+                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id"
+                  id="id" />
               </nz-form-control>
             </nz-form-item>
             <nz-form-item style="width: 100%">
-              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}</nz-form-label>
-              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid secret!">
+              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}
+              </nz-form-label>
+              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+                nzErrorTip="The input is not valid secret!">
                 <nz-input-group nzSearch [nzAddOnAfter]="suffixPasswordButton">
-                  <input
-                    [(ngModel)]="form.model.secret"
-                    readonly
-                    [ngModelOptions]="{ standalone: true }"
-                    nz-input
-                    name="secret"
-                    id="secret"
-                  />
+                  <input [(ngModel)]="form.model.secret" readonly [ngModelOptions]="{ standalone: true }" nz-input
+                    name="secret" id="secret" />
                 </nz-input-group>
                 <ng-template #suffixPasswordButton>
-                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate' | i18n }}</button>
+                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate'
+                    | i18n }}</button>
                 </ng-template>
               </nz-form-control>
             </nz-form-item>
@@ -34,57 +32,43 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="icon">{{ 'mxk.apps.icon' | i18n }}</nz-form-label>
             <div nz-col class="clearfix" nzSm="16" nzXs="24">
-              <nz-upload
-                nzAction="file/upload/"
-                nzListType="picture-card"
-                [(nzFileList)]="fileList"
-                nzName="uploadFile"
-                [nzShowButton]="fileList.length < 1"
-                [nzPreview]="handlePreview"
-                (nzChange)="uploadImageChange($event)"
-              >
+              <nz-upload nzAction="file/upload/" nzListType="picture-card" [(nzFileList)]="fileList" nzName="uploadFile"
+                [nzShowButton]="fileList.length < 1" [nzPreview]="handlePreview" (nzChange)="uploadImageChange($event)">
                 <div>
                   <i nz-icon nzType="plus"></i>
                   <div style="margin-top: 8px">Upload</div>
                 </div>
               </nz-upload>
-              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible = false">
+              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null"
+                (nzOnCancel)="previewVisible = false">
                 <ng-template #modalContent>
                   <img [src]="previewImage" [ngStyle]="{ width: '100%' }" />
                 </ng-template>
               </nz-modal>
             </div>
 
-            <nz-form-control
-              style="display: none"
-              [nzSm]="16"
-              [nzMd]="16"
-              [nzXs]="36"
-              [nzXl]="48"
-              nzErrorTip="The input is not valid icon!"
-            >
-              <input
-                [(ngModel)]="form.model.iconId"
-                disabled="true"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="icon"
-                id="icon"
-              />
+            <nz-form-control style="display: none" [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid icon!">
+              <input [(ngModel)]="form.model.iconId" disabled="true" [ngModelOptions]="{ standalone: true }" nz-input
+                name="icon" id="icon" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-              <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+              <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName"
+                id="appName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="frequently">{{ 'mxk.apps.frequently' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid frequently!">
-              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid frequently!">
+              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
                 <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
               </nz-radio-group>
@@ -93,8 +77,10 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid protocol!">
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid protocol!">
               <nz-select [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" name="protocol">
                 <nz-option nzValue="OAuth_v2.0" nzLabel="OAuth v2.0"></nz-option>
                 <nz-option nzValue="OAuth_v2.1" nzLabel="OAuth v2.1"></nz-option>
@@ -104,8 +90,10 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="category">{{ 'mxk.apps.category' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid category!">
-              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category" id="category">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid category!">
+              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category"
+                id="category">
                 <nz-option nzValue="none" nzLabel="{{ 'mxk.apps.category.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1011" nzLabel="{{ 'mxk.apps.category.1011' | i18n }}"></nz-option>
                 <nz-option nzValue="1012" nzLabel="{{ 'mxk.apps.category.1012' | i18n }}"></nz-option>
@@ -140,9 +128,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid loginUrl!">
-              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl" id="loginUrl" />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid loginUrl!">
+              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl"
+                id="loginUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -152,29 +143,22 @@
           <nz-form-item style="width: 100%">
             <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="registeredRedirectUris">{{
               'mxk.apps.oauth.registeredRedirectUris' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid registeredRedirectUris!">
-              <textarea
-                [(ngModel)]="form.model.registeredRedirectUris"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="registeredRedirectUris"
-                id="registeredRedirectUris"
-              ></textarea>
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid registeredRedirectUris!">
+              <textarea [(ngModel)]="form.model.registeredRedirectUris" [ngModelOptions]="{ standalone: true }" nz-input
+                name="registeredRedirectUris" id="registeredRedirectUris"></textarea>
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="GrantTypes">{{ 'mxk.apps.oauth.GrantTypes' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid authorizedGrantTypes!">
-              <nz-select
-                [(ngModel)]="form.model.select_authorizedGrantTypes"
-                nzMode="multiple"
-                nzPlaceHolder="Please select"
-                [ngModelOptions]="{ standalone: true }"
-                name="authorizedGrantTypes"
-              >
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="GrantTypes">{{ 'mxk.apps.oauth.GrantTypes' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid authorizedGrantTypes!">
+              <nz-select [(ngModel)]="form.model.select_authorizedGrantTypes" nzMode="multiple"
+                nzPlaceHolder="Please select" [ngModelOptions]="{ standalone: true }" name="authorizedGrantTypes">
                 <nz-option nzValue="authorization_code" nzLabel="authorization_code"></nz-option>
                 <nz-option nzValue="password" nzLabel="password"></nz-option>
                 <nz-option nzValue="client_credentials" nzLabel="client_credentials"></nz-option>
@@ -188,9 +172,12 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="subject">{{ 'mxk.apps.oauth.subject' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid subject!">
-              <nz-select [(ngModel)]="form.model.subject" [ngModelOptions]="{ standalone: true }" name="subject" id="subject">
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="subject">{{ 'mxk.apps.oauth.subject' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid subject!">
+              <nz-select [(ngModel)]="form.model.subject" [ngModelOptions]="{ standalone: true }" name="subject"
+                id="subject">
                 <nz-option nzValue="username" nzLabel="{{ 'mxk.users.username' | i18n }}"></nz-option>
                 <nz-option nzValue="employeeNumber" nzLabel="{{ 'mxk.users.employeeNumber' | i18n }}"></nz-option>
                 <nz-option nzValue="email" nzLabel="{{ 'mxk.users.email' | i18n }}"></nz-option>
@@ -201,14 +188,11 @@
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="scope">{{ 'mxk.apps.oauth.scope' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="scope">{{ 'mxk.apps.oauth.scope' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid scope!">
-              <nz-select
-                [(ngModel)]="form.model.select_scope"
-                [ngModelOptions]="{ standalone: true }"
-                nzMode="multiple"
-                nzPlaceHolder="Please select"
-              >
+              <nz-select [(ngModel)]="form.model.select_scope" [ngModelOptions]="{ standalone: true }" nzMode="multiple"
+                nzPlaceHolder="Please select">
                 <nz-option nzValue="read" nzLabel="read"></nz-option>
                 <nz-option nzValue="write" nzLabel="write"></nz-option>
                 <nz-option nzValue="trust" nzLabel="trust"></nz-option>
@@ -226,10 +210,12 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="approvalPrompt">{{
               'mxk.apps.oauth.approvalPrompt' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid approvalPrompt!">
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid approvalPrompt!">
               <nz-input-group>
-                <nz-radio-group [(ngModel)]="form.model.approvalPrompt" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+                <nz-radio-group [(ngModel)]="form.model.approvalPrompt" [ngModelOptions]="{ standalone: true }"
+                  nzButtonStyle="solid">
                   <label nz-radio-button nzValue="force">{{ 'mxk.apps.oauth.approvalPrompt.force' | i18n }}</label>
                   <label nz-radio-button nzValue="auto">{{ 'mxk.apps.oauth.approvalPrompt.auto' | i18n }}</label>
                 </nz-radio-group>
@@ -240,7 +226,8 @@
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="pkce">PKCE</nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid PKCE!">
               <nz-input-group>
-                <nz-radio-group [(ngModel)]="form.model.pkce" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+                <nz-radio-group [(ngModel)]="form.model.pkce" [ngModelOptions]="{ standalone: true }"
+                  nzButtonStyle="solid">
                   <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
                   <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
                 </nz-radio-group>
@@ -252,38 +239,24 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="accessTokenValiditySeconds">{{
               'mxk.apps.oauth.accessTokenValiditySeconds' | i18n
-            }}</nz-form-label>
-            <nz-form-control
-              [nzSm]="16"
-              [nzMd]="16"
-              [nzXs]="36"
-              [nzXl]="48"
-              nzErrorTip="The input is not valid accessTokenValiditySeconds!"
-            >
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid accessTokenValiditySeconds!">
               <nz-input-group nzAddOnAfter="{{ 'mxk.text.second' | i18n }}">
-                <input
-                  [(ngModel)]="form.model.accessTokenValiditySeconds"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="accessTokenValiditySeconds"
-                  id="accessTokenValiditySeconds"
-                />
+                <input [(ngModel)]="form.model.accessTokenValiditySeconds" [ngModelOptions]="{ standalone: true }"
+                  nz-input name="accessTokenValiditySeconds" id="accessTokenValiditySeconds" />
               </nz-input-group>
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="refreshTokenValiditySeconds">{{
               'mxk.apps.oauth.refreshTokenValiditySeconds' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid expires!">
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid expires!">
               <nz-input-group nzAddOnAfter="{{ 'mxk.text.second' | i18n }}">
-                <input
-                  [(ngModel)]="form.model.refreshTokenValiditySeconds"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="refreshTokenValiditySeconds"
-                  id="refreshTokenValiditySeconds"
-                />
+                <input [(ngModel)]="form.model.refreshTokenValiditySeconds" [ngModelOptions]="{ standalone: true }"
+                  nz-input name="refreshTokenValiditySeconds" id="refreshTokenValiditySeconds" />
               </nz-input-group>
             </nz-form-control>
           </nz-form-item>
@@ -292,30 +265,33 @@
       <nz-tab nzTitle="{{ 'mxk.apps.oauth.connect.tab' | i18n }}">
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="issuer">{{ 'mxk.apps.oauth.connect.issuer' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid issuer!">
-              <input [(ngModel)]="form.model.issuer" [ngModelOptions]="{ standalone: true }" nz-input name="issuer" id="issuer" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="issuer">{{ 'mxk.apps.oauth.connect.issuer' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid issuer!">
+              <input [(ngModel)]="form.model.issuer" [ngModelOptions]="{ standalone: true }" nz-input name="issuer"
+                id="issuer" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="audience">{{ 'mxk.apps.oauth.connect.audience' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid audience!">
-              <input [(ngModel)]="form.model.audience" [ngModelOptions]="{ standalone: true }" nz-input name="audience" id="audience" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="audience">{{ 'mxk.apps.oauth.connect.audience' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid audience!">
+              <input [(ngModel)]="form.model.audience" [ngModelOptions]="{ standalone: true }" nz-input name="audience"
+                id="audience" />
             </nz-form-control>
           </nz-form-item>
         </div>
 
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="signature">{{ 'mxk.apps.oauth.connect.signature' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid signature!">
-              <nz-select
-                (ngModelChange)="onSelectSignature($event)"
-                [(ngModel)]="form.model.signature"
-                [ngModelOptions]="{ standalone: true }"
-                name="signature"
-                id="signature"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="signature">{{ 'mxk.apps.oauth.connect.signature' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid signature!">
+              <nz-select (ngModelChange)="onSelectSignature($event)" [(ngModel)]="form.model.signature"
+                [ngModelOptions]="{ standalone: true }" name="signature" id="signature">
                 <nz-option nzValue="NONE" nzLabel="NONE"></nz-option>
                 <nz-option nzValue="RS256" nzLabel="RS256"></nz-option>
                 <nz-option nzValue="RS384" nzLabel="RS384"></nz-option>
@@ -329,14 +305,11 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="userInfoResponse">{{
               'mxk.apps.oauth.connect.userInfoResponse' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid userInfoResponse!">
-              <nz-select
-                [(ngModel)]="form.model.userInfoResponse"
-                [ngModelOptions]="{ standalone: true }"
-                name="userInfoResponse"
-                id="userInfoResponse"
-              >
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid userInfoResponse!">
+              <nz-select [(ngModel)]="form.model.userInfoResponse" [ngModelOptions]="{ standalone: true }"
+                name="userInfoResponse" id="userInfoResponse">
                 <nz-option nzValue="NORMAL" nzLabel="NORMAL"></nz-option>
                 <nz-option nzValue="SIGNING" nzLabel="SIGNING"></nz-option>
                 <nz-option nzValue="ENCRYPTION" nzLabel="ENCRYPTION"></nz-option>
@@ -347,29 +320,23 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="signatureKey">{{ 'mxk.apps.oauth.connect.signatureKey' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid signatureKey!">
-              <textarea
-                [(ngModel)]="form.model.signatureKey"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="signatureKey"
-                id="signatureKey"
-              ></textarea>
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="signatureKey">{{ 'mxk.apps.oauth.connect.signatureKey' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid signatureKey!">
+              <textarea [(ngModel)]="form.model.signatureKey" [ngModelOptions]="{ standalone: true }" nz-input
+                name="signatureKey" id="signatureKey"></textarea>
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="algorithm">{{ 'mxk.apps.oauth.connect.algorithm' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid algorithm!">
-              <nz-select
-                (ngModelChange)="onSelectAlgorithm($event)"
-                [(ngModel)]="form.model.algorithm"
-                [ngModelOptions]="{ standalone: true }"
-                name="algorithm"
-                id="algorithm"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="algorithm">{{ 'mxk.apps.oauth.connect.algorithm' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid algorithm!">
+              <nz-select (ngModelChange)="onSelectAlgorithm($event)" [(ngModel)]="form.model.algorithm"
+                [ngModelOptions]="{ standalone: true }" name="algorithm" id="algorithm">
                 <nz-option nzValue="NONE" nzLabel="NONE"></nz-option>
                 <nz-option nzValue="RSA1_5" nzLabel="RSA1_5"></nz-option>
                 <nz-option nzValue="RSA_OAEP" nzLabel="RSA_OAEP"></nz-option>
@@ -386,14 +353,11 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="encryptionMethod">{{
               'mxk.apps.oauth.connect.encryptionMethod' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid encryptionMethod!">
-              <nz-select
-                [(ngModel)]="form.model.encryptionMethod"
-                [ngModelOptions]="{ standalone: true }"
-                name="encryptionMethod"
-                id="encryptionMethod"
-              >
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid encryptionMethod!">
+              <nz-select [(ngModel)]="form.model.encryptionMethod" [ngModelOptions]="{ standalone: true }"
+                name="encryptionMethod" id="encryptionMethod">
                 <nz-option nzValue="A128GCM" nzLabel="A128GCM"></nz-option>
                 <nz-option nzValue="A192GCM" nzLabel="A192GCM"></nz-option>
                 <nz-option nzValue="A256GCM" nzLabel="A256GCM"></nz-option>
@@ -407,15 +371,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="algorithmKey">{{ 'mxk.apps.oauth.connect.algorithmKey' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid algorithmKey!">
-              <textarea
-                [(ngModel)]="form.model.algorithmKey"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="algorithmKey"
-                id="algorithmKey"
-              ></textarea>
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="algorithmKey">{{ 'mxk.apps.oauth.connect.algorithmKey' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid algorithmKey!">
+              <textarea [(ngModel)]="form.model.algorithmKey" [ngModelOptions]="{ standalone: true }" nz-input
+                name="algorithmKey" id="algorithmKey"></textarea>
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -424,14 +385,18 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutUrl">{{ 'mxk.apps.logoutUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutUrl!">
-              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input name="logoutUrl" id="logoutUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutUrl!">
+              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="logoutUrl" id="logoutUrl" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutType">{{ 'mxk.apps.logoutType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutType!">
-              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType" id="logoutType">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutType!">
+              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType"
+                id="logoutType">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.logoutType.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.logoutType.back_channel' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.logoutType.front_channel' | i18n }}"></nz-option>
@@ -443,8 +408,10 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="visible">{{ 'mxk.apps.visible' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid visible!">
-              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible" id="visible">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid visible!">
+              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible"
+                id="visible">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.visible.hidden' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.visible.all' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.visible.internet' | i18n }}"></nz-option>
@@ -454,30 +421,38 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="sortIndex">{{ 'mxk.text.sortIndex' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sortIndex!">
-              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input name="sortIndex" id="sortIndex" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sortIndex!">
+              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sortIndex" id="sortIndex" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendor">{{ 'mxk.apps.vendor' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendor!">
-              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor" id="vendor" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendor!">
+              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor"
+                id="vendor" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendorUrl">{{ 'mxk.apps.vendor.url' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendorUrl!">
-              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input name="vendorUrl" id="vendorUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendorUrl!">
+              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="vendorUrl" id="vendorUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isAdapter">{{ 'mxk.apps.isAdapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isAdapter!">
-              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter" id="isAdapter">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid isAdapter!">
+              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter"
+                id="isAdapter">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.isAdapter.no' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.isAdapter.yes' | i18n }}"></nz-option>
               </nz-select>
@@ -485,49 +460,31 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="adapterName">{{ 'mxk.apps.adapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid adapterName!">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid adapterName!">
               <nz-input-group nzSearch [nzAddOnAfter]="suffixAdapterButton">
-                <input
-                  [(ngModel)]="form.model.adapterName"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="adapterName"
-                  id="adapterName"
-                />
+                <input [(ngModel)]="form.model.adapterName" [ngModelOptions]="{ standalone: true }" nz-input
+                  name="adapterName" id="adapterName" />
               </nz-input-group>
               <ng-template #suffixAdapterButton>
-                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' | i18n }}</button>
+                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' |
+                  i18n }}</button>
               </ng-template>
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapterId"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapterId"
-                id="adapterId"
-              />
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapter"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapter"
-                id="adapter"
-              />
+              <input type="hidden" [(ngModel)]="form.model.adapterId" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapterId" id="adapterId" />
+              <input type="hidden" [(ngModel)]="form.model.adapter" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapter" id="adapter" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid description!">
-              <input
-                [(ngModel)]="form.model.description"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="description"
-                id="description"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid description!">
+              <input [(ngModel)]="form.model.description" [ngModelOptions]="{ standalone: true }" nz-input
+                name="description" id="description" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -539,4 +496,4 @@
 <div *nzModalFooter>
   <button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
   <button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
-</div>
+</div>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-oauth20-details-editer/app-oauth20-details-editer.component.ts

@@ -90,7 +90,7 @@ export class AppOauth20DetailsEditerComponent implements OnInit {
         this.fileList = [
           {
             uid: this.form.model.id.toString(),
-            name: this.form.model.name.toString(),
+            name: this.form.model.appName.toString(),
             status: 'done',
             url: this.previewImage
           }

+ 191 - 221
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-saml20-details-editer/app-saml20-details-editer.component.html

@@ -8,20 +8,17 @@
             <nz-form-item style="width: 100%">
               <nz-form-label [nzMd]="8" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
               <nz-form-control [nzMd]="16" nzErrorTip="The input is not valid id!">
-                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
+                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id"
+                  id="id" />
               </nz-form-control>
             </nz-form-item>
             <nz-form-item style="width: 100%">
-              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}</nz-form-label>
-              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid secret!">
-                <input
-                  [(ngModel)]="form.model.secret"
-                  readonly
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="secret"
-                  id="secret"
-                />
+              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}
+              </nz-form-label>
+              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+                nzErrorTip="The input is not valid secret!">
+                <input [(ngModel)]="form.model.secret" readonly [ngModelOptions]="{ standalone: true }" nz-input
+                  name="secret" id="secret" />
               </nz-form-control>
             </nz-form-item>
           </nz-form-item>
@@ -29,57 +26,43 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="icon">{{ 'mxk.apps.icon' | i18n }}</nz-form-label>
             <div nz-col class="clearfix" nzSm="16" nzXs="24">
-              <nz-upload
-                nzAction="file/upload/"
-                nzListType="picture-card"
-                [(nzFileList)]="fileList"
-                nzName="uploadFile"
-                [nzShowButton]="fileList.length < 1"
-                [nzPreview]="handlePreview"
-                (nzChange)="uploadImageChange($event)"
-              >
+              <nz-upload nzAction="file/upload/" nzListType="picture-card" [(nzFileList)]="fileList" nzName="uploadFile"
+                [nzShowButton]="fileList.length < 1" [nzPreview]="handlePreview" (nzChange)="uploadImageChange($event)">
                 <div>
                   <i nz-icon nzType="plus"></i>
                   <div style="margin-top: 8px">Upload</div>
                 </div>
               </nz-upload>
-              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible = false">
+              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null"
+                (nzOnCancel)="previewVisible = false">
                 <ng-template #modalContent>
                   <img [src]="previewImage" [ngStyle]="{ width: '100%' }" />
                 </ng-template>
               </nz-modal>
             </div>
 
-            <nz-form-control
-              style="display: none"
-              [nzSm]="16"
-              [nzMd]="16"
-              [nzXs]="36"
-              [nzXl]="48"
-              nzErrorTip="The input is not valid icon!"
-            >
-              <input
-                [(ngModel)]="form.model.iconId"
-                disabled="true"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="icon"
-                id="icon"
-              />
+            <nz-form-control style="display: none" [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid icon!">
+              <input [(ngModel)]="form.model.iconId" disabled="true" [ngModelOptions]="{ standalone: true }" nz-input
+                name="icon" id="icon" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-              <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+              <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName"
+                id="appName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="frequently">{{ 'mxk.apps.frequently' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid frequently!">
-              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid frequently!">
+              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
                 <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
               </nz-radio-group>
@@ -88,15 +71,20 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid protocol!">
-              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol" id="protocol" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid protocol!">
+              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol"
+                id="protocol" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="category">{{ 'mxk.apps.category' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid category!">
-              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category" id="category">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid category!">
+              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category"
+                id="category">
                 <nz-option nzValue="none" nzLabel="{{ 'mxk.apps.category.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1011" nzLabel="{{ 'mxk.apps.category.1011' | i18n }}"></nz-option>
                 <nz-option nzValue="1012" nzLabel="{{ 'mxk.apps.category.1012' | i18n }}"></nz-option>
@@ -131,9 +119,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid loginUrl!">
-              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl" id="loginUrl" />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid loginUrl!">
+              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl"
+                id="loginUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -141,17 +132,23 @@
       <nz-tab nzTitle="{{ 'mxk.apps.saml.tab' | i18n }}">
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="spAcsUrl">{{ 'mxk.apps.saml.spAcsUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid spAcsUrl!">
-              <input [(ngModel)]="form.model.spAcsUrl" [ngModelOptions]="{ standalone: true }" nz-input name="spAcsUrl" id="spAcsUrl" />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="spAcsUrl">{{ 'mxk.apps.saml.spAcsUrl' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid spAcsUrl!">
+              <input [(ngModel)]="form.model.spAcsUrl" [ngModelOptions]="{ standalone: true }" nz-input name="spAcsUrl"
+                id="spAcsUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="binding">{{ 'mxk.apps.saml.binding' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid binding!">
-              <nz-select [(ngModel)]="form.model.binding" [ngModelOptions]="{ standalone: true }" nz-input name="binding" id="binding">
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="binding">{{ 'mxk.apps.saml.binding' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid binding!">
+              <nz-select [(ngModel)]="form.model.binding" [ngModelOptions]="{ standalone: true }" nz-input
+                name="binding" id="binding">
                 <nz-option nzValue="Redirect-Post" nzLabel="Redirect-Post"></nz-option>
                 <nz-option nzValue="Post-Post" nzLabel="Post-Post"></nz-option>
                 <nz-option nzValue="IdpInit-Post" nzLabel="IdpInit-Post"></nz-option>
@@ -162,37 +159,43 @@
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="entityId">{{ 'mxk.apps.saml.entityId' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid entityId!">
-              <input [(ngModel)]="form.model.entityId" [ngModelOptions]="{ standalone: true }" nz-input name="entityId" id="entityId" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="entityId">{{ 'mxk.apps.saml.entityId' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid entityId!">
+              <input [(ngModel)]="form.model.entityId" [ngModelOptions]="{ standalone: true }" nz-input name="entityId"
+                id="entityId" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="audience">{{ 'mxk.apps.saml.audience' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid audience!">
-              <input [(ngModel)]="form.model.audience" [ngModelOptions]="{ standalone: true }" nz-input name="audience" id="audience" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="audience">{{ 'mxk.apps.saml.audience' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid audience!">
+              <input [(ngModel)]="form.model.audience" [ngModelOptions]="{ standalone: true }" nz-input name="audience"
+                id="audience" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="issuer">{{ 'mxk.apps.saml.issuer' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid issuer!">
-              <input [(ngModel)]="form.model.issuer" [ngModelOptions]="{ standalone: true }" nz-input name="issuer" id="issuer" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="issuer">{{ 'mxk.apps.saml.issuer' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid issuer!">
+              <input [(ngModel)]="form.model.issuer" [ngModelOptions]="{ standalone: true }" nz-input name="issuer"
+                id="issuer" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="signature">{{ 'mxk.apps.saml.signature' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid signature!">
-              <nz-select
-                [(ngModel)]="form.model.signature"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="signature"
-                id="signature"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="signature">{{ 'mxk.apps.saml.signature' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid signature!">
+              <nz-select [(ngModel)]="form.model.signature" [ngModelOptions]="{ standalone: true }" nz-input
+                name="signature" id="signature">
                 <nz-option nzValue="RSAwithSHA1" nzLabel="RSAwithSHA1"></nz-option>
                 <nz-option nzValue="RSAwithSHA256" nzLabel="RSAwithSHA256"></nz-option>
                 <nz-option nzValue="RSAwithSHA384" nzLabel="RSAwithSHA384"></nz-option>
@@ -214,15 +217,12 @@
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="digestMethod">{{ 'mxk.apps.saml.digestMethod' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid digestMethod!">
-              <nz-select
-                [(ngModel)]="form.model.digestMethod"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="digestMethod"
-                id="digestMethod"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="digestMethod">{{ 'mxk.apps.saml.digestMethod' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid digestMethod!">
+              <nz-select [(ngModel)]="form.model.digestMethod" [ngModelOptions]="{ standalone: true }" nz-input
+                name="digestMethod" id="digestMethod">
                 <nz-option nzValue="MD5" nzLabel="MD5"></nz-option>
                 <nz-option nzValue="SHA1" nzLabel="SHA1"></nz-option>
                 <nz-option nzValue="SHA256" nzLabel="SHA256"></nz-option>
@@ -235,15 +235,12 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="encrypted">{{ 'mxk.apps.saml.encrypted' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid encrypted!">
-              <nz-select
-                [(ngModel)]="form.model.encrypted"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="encrypted"
-                id="encrypted"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="encrypted">{{ 'mxk.apps.saml.encrypted' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid encrypted!">
+              <nz-select [(ngModel)]="form.model.encrypted" [ngModelOptions]="{ standalone: true }" nz-input
+                name="encrypted" id="encrypted">
                 <nz-option nzValue="no" nzLabel="{{ 'mxk.apps.saml.encrypted.no' | i18n }}"></nz-option>
                 <nz-option nzValue="yes" nzLabel="{{ 'mxk.apps.saml.encrypted.yes' | i18n }}"></nz-option>
               </nz-select>
@@ -252,31 +249,24 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="validityInterval">{{
               'mxk.apps.saml.validityInterval' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid validityInterval!">
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid validityInterval!">
               <nz-input-group nzAddOnAfter="{{ 'mxk.text.second' | i18n }}">
-                <input
-                  [(ngModel)]="form.model.validityInterval"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="validityInterval"
-                  id="validityInterval"
-                />
+                <input [(ngModel)]="form.model.validityInterval" [ngModelOptions]="{ standalone: true }" nz-input
+                  name="validityInterval" id="validityInterval" />
               </nz-input-group>
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="nameidFormat">{{ 'mxk.apps.saml.nameidFormat' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid nameidFormat!">
-              <nz-select
-                [(ngModel)]="form.model.nameidFormat"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="nameidFormat"
-                id="nameidFormat"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="nameidFormat">{{ 'mxk.apps.saml.nameidFormat' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid nameidFormat!">
+              <nz-select [(ngModel)]="form.model.nameidFormat" [ngModelOptions]="{ standalone: true }" nz-input
+                name="nameidFormat" id="nameidFormat">
                 <nz-option nzValue="persistent" nzLabel="persistent"></nz-option>
                 <nz-option nzValue="transient" nzLabel="transient"></nz-option>
                 <nz-option nzValue="emailAddress" nzLabel="emailAddress"></nz-option>
@@ -290,18 +280,16 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="nameIdConvert">{{
               'mxk.apps.saml.nameIdConvert' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid nameIdConvert!">
-              <nz-select
-                [(ngModel)]="form.model.nameIdConvert"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="nameIdConvert"
-                id="nameIdConvert"
-              >
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid nameIdConvert!">
+              <nz-select [(ngModel)]="form.model.nameIdConvert" [ngModelOptions]="{ standalone: true }" nz-input
+                name="nameIdConvert" id="nameIdConvert">
                 <nz-option nzValue="original" nzLabel="{{ 'mxk.apps.saml.nameIdConvert.original' | i18n }}"></nz-option>
-                <nz-option nzValue="uppercase" nzLabel="{{ 'mxk.apps.saml.nameIdConvert.upperCase' | i18n }}"></nz-option>
-                <nz-option nzValue="lowercase" nzLabel="{{ 'mxk.apps.saml.nameIdConvert.lowerCase' | i18n }}"></nz-option>
+                <nz-option nzValue="uppercase" nzLabel="{{ 'mxk.apps.saml.nameIdConvert.upperCase' | i18n }}">
+                </nz-option>
+                <nz-option nzValue="lowercase" nzLabel="{{ 'mxk.apps.saml.nameIdConvert.lowerCase' | i18n }}">
+                </nz-option>
               </nz-select>
             </nz-form-control>
           </nz-form-item>
@@ -310,82 +298,68 @@
       <nz-tab nzTitle="{{ 'mxk.apps.saml.tab.metadata' | i18n }}">
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="fileType">{{ 'mxk.apps.saml.fileType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid fileType!">
-              <nz-select [(ngModel)]="form.model.fileType" [ngModelOptions]="{ standalone: true }" nz-input name="fileType" id="fileType">
-                <nz-option nzValue="certificate" nzLabel="{{ 'mxk.apps.saml.fileType.certificate' | i18n }}"></nz-option>
-                <nz-option nzValue="metadata_file" nzLabel="{{ 'mxk.apps.saml.fileType.metadata.file' | i18n }}"></nz-option>
-                <nz-option nzValue="metadata_url" nzLabel="{{ 'mxk.apps.saml.fileType.metadata.url' | i18n }}"></nz-option>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="fileType">{{ 'mxk.apps.saml.fileType' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid fileType!">
+              <nz-select [(ngModel)]="form.model.fileType" [ngModelOptions]="{ standalone: true }" nz-input
+                name="fileType" id="fileType">
+                <nz-option nzValue="certificate" nzLabel="{{ 'mxk.apps.saml.fileType.certificate' | i18n }}">
+                </nz-option>
+                <nz-option nzValue="metadata_file" nzLabel="{{ 'mxk.apps.saml.fileType.metadata.file' | i18n }}">
+                </nz-option>
+                <nz-option nzValue="metadata_url" nzLabel="{{ 'mxk.apps.saml.fileType.metadata.url' | i18n }}">
+                </nz-option>
               </nz-select>
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="metaFile">{{ 'mxk.apps.saml.metaFile' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid nameIdConvert!">
-              <nz-upload
-                style="{{ form.model.fileType == 'metadata_url' ? 'display: none;' : '' }}"
-                nzAction="file/upload/"
-                nzName="uploadFile"
-                (nzChange)="uploadMetaChange($event)"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="metaFile">{{ 'mxk.apps.saml.metaFile' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid nameIdConvert!">
+              <nz-upload style="{{ form.model.fileType == 'metadata_url' ? 'display: none;' : '' }}"
+                nzAction="file/upload/" nzName="uploadFile" (nzChange)="uploadMetaChange($event)">
                 <button nz-button>
                   <i nz-icon nzType="upload"></i>
                   {{ 'mxk.text.upload' | i18n }}
                 </button>
               </nz-upload>
-              <input
-                style="{{ form.model.fileType == 'metadata_url' ? '' : 'display: none;' }}"
-                [(ngModel)]="form.model.metaUrl"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="metaUrl"
-                id="metaUrl"
-              />
+              <input style="{{ form.model.fileType == 'metadata_url' ? '' : 'display: none;' }}"
+                [(ngModel)]="form.model.metaUrl" [ngModelOptions]="{ standalone: true }" nz-input name="metaUrl"
+                id="metaUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="certIssuer">{{ 'mxk.apps.saml.certIssuer' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid certIssuer!">
-              <input
-                [(ngModel)]="form.model.certIssuer"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                disabled="true"
-                name="certIssuer"
-                id="certIssuer"
-              />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="certIssuer">{{ 'mxk.apps.saml.certIssuer' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid certIssuer!">
+              <input [(ngModel)]="form.model.certIssuer" [ngModelOptions]="{ standalone: true }" nz-input
+                disabled="true" name="certIssuer" id="certIssuer" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="certExpiration">{{
               'mxk.apps.saml.certExpiration' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid issuer!">
-              <input
-                [(ngModel)]="form.model.certExpiration"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                disabled="true"
-                name="certExpiration"
-                id="certExpiration"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid issuer!">
+              <input [(ngModel)]="form.model.certExpiration" [ngModelOptions]="{ standalone: true }" nz-input
+                disabled="true" name="certExpiration" id="certExpiration" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="certSubject">{{ 'mxk.apps.saml.certSubject' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid certSubject!">
-              <input
-                [(ngModel)]="form.model.certSubject"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                disabled="true"
-                name="certSubject"
-                id="certSubject"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="certSubject">{{ 'mxk.apps.saml.certSubject' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid certSubject!">
+              <input [(ngModel)]="form.model.certSubject" [ngModelOptions]="{ standalone: true }" nz-input
+                disabled="true" name="certSubject" id="certSubject" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -395,14 +369,18 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutUrl">{{ 'mxk.apps.logoutUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutUrl!">
-              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input name="logoutUrl" id="logoutUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutUrl!">
+              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="logoutUrl" id="logoutUrl" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutType">{{ 'mxk.apps.logoutType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutType!">
-              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType" id="logoutType">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutType!">
+              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType"
+                id="logoutType">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.logoutType.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.logoutType.back_channel' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.logoutType.front_channel' | i18n }}"></nz-option>
@@ -414,8 +392,10 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="visible">{{ 'mxk.apps.visible' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid visible!">
-              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible" id="visible">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid visible!">
+              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible"
+                id="visible">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.visible.hidden' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.visible.all' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.visible.internet' | i18n }}"></nz-option>
@@ -425,30 +405,38 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="sortIndex">{{ 'mxk.text.sortIndex' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sortIndex!">
-              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input name="sortIndex" id="sortIndex" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sortIndex!">
+              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sortIndex" id="sortIndex" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendor">{{ 'mxk.apps.vendor' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendor!">
-              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor" id="vendor" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendor!">
+              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor"
+                id="vendor" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendorUrl">{{ 'mxk.apps.vendor.url' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendorUrl!">
-              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input name="vendorUrl" id="vendorUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendorUrl!">
+              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="vendorUrl" id="vendorUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isAdapter">{{ 'mxk.apps.isAdapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isAdapter!">
-              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter" id="isAdapter">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid isAdapter!">
+              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter"
+                id="isAdapter">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.isAdapter.no' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.isAdapter.yes' | i18n }}"></nz-option>
               </nz-select>
@@ -456,49 +444,31 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="adapterName">{{ 'mxk.apps.adapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid adapterName!">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid adapterName!">
               <nz-input-group nzSearch [nzAddOnAfter]="suffixAdapterButton">
-                <input
-                  [(ngModel)]="form.model.adapterName"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="adapterName"
-                  id="adapterName"
-                />
+                <input [(ngModel)]="form.model.adapterName" [ngModelOptions]="{ standalone: true }" nz-input
+                  name="adapterName" id="adapterName" />
               </nz-input-group>
               <ng-template #suffixAdapterButton>
-                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' | i18n }}</button>
+                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' |
+                  i18n }}</button>
               </ng-template>
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapterId"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapterId"
-                id="adapterId"
-              />
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapter"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapter"
-                id="adapter"
-              />
+              <input type="hidden" [(ngModel)]="form.model.adapterId" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapterId" id="adapterId" />
+              <input type="hidden" [(ngModel)]="form.model.adapter" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapter" id="adapter" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid description!">
-              <input
-                [(ngModel)]="form.model.description"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="description"
-                id="description"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid description!">
+              <input [(ngModel)]="form.model.description" [ngModelOptions]="{ standalone: true }" nz-input
+                name="description" id="description" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -510,4 +480,4 @@
 <div *nzModalFooter>
   <button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
   <button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
-</div>
+</div>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-saml20-details-editer/app-saml20-details-editer.component.ts

@@ -90,7 +90,7 @@ export class AppSaml20DetailsEditerComponent implements OnInit {
         this.fileList = [
           {
             uid: this.form.model.id.toString(),
-            name: this.form.model.name.toString(),
+            name: this.form.model.appName.toString(),
             status: 'done',
             url: this.previewImage
           }

+ 121 - 141
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-token-based-details-editer/app-token-based-details-editer.component.html

@@ -8,24 +8,22 @@
             <nz-form-item style="width: 100%">
               <nz-form-label [nzMd]="8" nzRequired nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label>
               <nz-form-control [nzMd]="16" nzErrorTip="The input is not valid id!">
-                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id" id="id" />
+                <input [(ngModel)]="form.model.id" readonly [ngModelOptions]="{ standalone: true }" nz-input name="id"
+                  id="id" />
               </nz-form-control>
             </nz-form-item>
             <nz-form-item style="width: 100%">
-              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}</nz-form-label>
-              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid secret!">
+              <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="secret">{{ 'mxk.apps.secret' | i18n }}
+              </nz-form-label>
+              <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+                nzErrorTip="The input is not valid secret!">
                 <nz-input-group nzSearch [nzAddOnAfter]="suffixPasswordButton">
-                  <input
-                    [(ngModel)]="form.model.secret"
-                    readonly
-                    [ngModelOptions]="{ standalone: true }"
-                    nz-input
-                    name="secret"
-                    id="secret"
-                  />
+                  <input [(ngModel)]="form.model.secret" readonly [ngModelOptions]="{ standalone: true }" nz-input
+                    name="secret" id="secret" />
                 </nz-input-group>
                 <ng-template #suffixPasswordButton>
-                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate' | i18n }}</button>
+                  <button nz-button nzType="primary" nzSearch (click)="onGenerateSecret($event)">{{ 'mxk.text.generate'
+                    | i18n }}</button>
                 </ng-template>
               </nz-form-control>
             </nz-form-item>
@@ -34,57 +32,43 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="icon">{{ 'mxk.apps.icon' | i18n }}</nz-form-label>
             <div nz-col class="clearfix" nzSm="16" nzXs="24">
-              <nz-upload
-                nzAction="file/upload/"
-                nzListType="picture-card"
-                [(nzFileList)]="fileList"
-                nzName="uploadFile"
-                [nzShowButton]="fileList.length < 1"
-                [nzPreview]="handlePreview"
-                (nzChange)="uploadImageChange($event)"
-              >
+              <nz-upload nzAction="file/upload/" nzListType="picture-card" [(nzFileList)]="fileList" nzName="uploadFile"
+                [nzShowButton]="fileList.length < 1" [nzPreview]="handlePreview" (nzChange)="uploadImageChange($event)">
                 <div>
                   <i nz-icon nzType="plus"></i>
                   <div style="margin-top: 8px">Upload</div>
                 </div>
               </nz-upload>
-              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible = false">
+              <nz-modal [nzVisible]="previewVisible" [nzContent]="modalContent" [nzFooter]="null"
+                (nzOnCancel)="previewVisible = false">
                 <ng-template #modalContent>
                   <img [src]="previewImage" [ngStyle]="{ width: '100%' }" />
                 </ng-template>
               </nz-modal>
             </div>
 
-            <nz-form-control
-              style="display: none"
-              [nzSm]="16"
-              [nzMd]="16"
-              [nzXs]="36"
-              [nzXl]="48"
-              nzErrorTip="The input is not valid icon!"
-            >
-              <input
-                [(ngModel)]="form.model.iconId"
-                disabled="true"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="icon"
-                id="icon"
-              />
+            <nz-form-control style="display: none" [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid icon!">
+              <input [(ngModel)]="form.model.iconId" disabled="true" [ngModelOptions]="{ standalone: true }" nz-input
+                name="icon" id="icon" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="appName">{{ 'mxk.apps.name' | i18n }}
+            </nz-form-label>
             <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-              <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+              <input [(ngModel)]="form.model.appName" [ngModelOptions]="{ standalone: true }" nz-input name="appName"
+                id="appName" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="frequently">{{ 'mxk.apps.frequently' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid frequently!">
-              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }" nzButtonStyle="solid">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid frequently!">
+              <nz-radio-group [(ngModel)]="form.model.frequently" [ngModelOptions]="{ standalone: true }"
+                nzButtonStyle="solid">
                 <label nz-radio-button nzValue="yes">{{ 'mxk.text.yes' | i18n }}</label>
                 <label nz-radio-button nzValue="no">{{ 'mxk.text.no' | i18n }}</label>
               </nz-radio-group>
@@ -93,15 +77,20 @@
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid protocol!">
-              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol" id="protocol" />
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="protocol">{{ 'mxk.apps.protocol' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid protocol!">
+              <input [(ngModel)]="form.model.protocol" [ngModelOptions]="{ standalone: true }" nz-input name="protocol"
+                id="protocol" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="category">{{ 'mxk.apps.category' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid category!">
-              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category" id="category">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid category!">
+              <nz-select [(ngModel)]="form.model.category" [ngModelOptions]="{ standalone: true }" name="category"
+                id="category">
                 <nz-option nzValue="none" nzLabel="{{ 'mxk.apps.category.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1011" nzLabel="{{ 'mxk.apps.category.1011' | i18n }}"></nz-option>
                 <nz-option nzValue="1012" nzLabel="{{ 'mxk.apps.category.1012' | i18n }}"></nz-option>
@@ -136,9 +125,12 @@
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid loginUrl!">
-              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl" id="loginUrl" />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="loginUrl">{{ 'mxk.apps.loginUrl' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid loginUrl!">
+              <input [(ngModel)]="form.model.loginUrl" [ngModelOptions]="{ standalone: true }" nz-input name="loginUrl"
+                id="loginUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -146,23 +138,23 @@
       <nz-tab nzTitle="{{ 'mxk.apps.tokenbased.tab' | i18n }}">
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="redirectUri">{{ 'mxk.apps.jwt.redirectUri' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid redirectUri!">
-              <input
-                [(ngModel)]="form.model.redirectUri"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="redirectUri"
-                id="redirectUri"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="redirectUri">{{ 'mxk.apps.jwt.redirectUri' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid redirectUri!">
+              <input [(ngModel)]="form.model.redirectUri" [ngModelOptions]="{ standalone: true }" nz-input
+                name="redirectUri" id="redirectUri" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="tokenType">{{ 'mxk.apps.tokenbased.tokenType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid tokenType!">
-              <nz-select [(ngModel)]="form.model.tokenType" [ngModelOptions]="{ standalone: true }" name="tokenType" id="tokenType">
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="tokenType">{{ 'mxk.apps.tokenbased.tokenType' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid tokenType!">
+              <nz-select [(ngModel)]="form.model.tokenType" [ngModelOptions]="{ standalone: true }" name="tokenType"
+                id="tokenType">
                 <nz-option nzValue="POST" nzLabel="POST"></nz-option>
                 <nz-option nzValue="LTPA" nzLabel="LTPA"></nz-option>
               </nz-select>
@@ -172,29 +164,22 @@
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="cookieName">{{
               'mxk.apps.tokenbased.cookieName' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid cookieName!">
-              <input
-                [(ngModel)]="form.model.cookieName"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="cookieName"
-                id="cookieName"
-              />
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid cookieName!">
+              <input [(ngModel)]="form.model.cookieName" [ngModelOptions]="{ standalone: true }" nz-input
+                name="cookieName" id="cookieName" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="algorithm">{{ 'mxk.apps.tokenbased.algorithm' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid algorithm!">
-              <nz-select
-                [(ngModel)]="form.model.algorithm"
-                (ngModelChange)="onSelectAlgorithm($event)"
-                [ngModelOptions]="{ standalone: true }"
-                name="algorithm"
-                id="algorithm"
-              >
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="algorithm">{{ 'mxk.apps.tokenbased.algorithm' | i18n
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid algorithm!">
+              <nz-select [(ngModel)]="form.model.algorithm" (ngModelChange)="onSelectAlgorithm($event)"
+                [ngModelOptions]="{ standalone: true }" name="algorithm" id="algorithm">
                 <nz-option nzValue="DES" nzLabel="DES"></nz-option>
                 <nz-option nzValue="DESede" nzLabel="DESede"></nz-option>
                 <nz-option nzValue="Blowfish" nzLabel="Blowfish"></nz-option>
@@ -204,10 +189,13 @@
           </nz-form-item>
 
           <nz-form-item>
-            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="expires">{{ 'mxk.apps.tokenbased.expires' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid expires!">
+            <nz-form-label [nzSm]="8" [nzXs]="24" nzRequired nzFor="expires">{{ 'mxk.apps.tokenbased.expires' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid expires!">
               <nz-input-group nzAddOnAfter="{{ 'mxk.text.second' | i18n }}">
-                <input [(ngModel)]="form.model.expires" [ngModelOptions]="{ standalone: true }" nz-input name="expires" id="expires" />
+                <input [(ngModel)]="form.model.expires" [ngModelOptions]="{ standalone: true }" nz-input name="expires"
+                  id="expires" />
               </nz-input-group>
             </nz-form-control>
           </nz-form-item>
@@ -216,15 +204,11 @@
           <nz-form-item style="width: 100%">
             <nz-form-label [nzSm]="4" [nzXs]="24" nzRequired nzFor="userPropertys">{{
               'mxk.apps.tokenbased.token.content' | i18n
-            }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid userPropertys!">
-              <nz-select
-                [(ngModel)]="form.model.select_userPropertys"
-                nzMode="multiple"
-                nzPlaceHolder="Please select"
-                [ngModelOptions]="{ standalone: true }"
-                name="userPropertys"
-              >
+              }}</nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="20" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid userPropertys!">
+              <nz-select [(ngModel)]="form.model.select_userPropertys" nzMode="multiple" nzPlaceHolder="Please select"
+                [ngModelOptions]="{ standalone: true }" name="userPropertys">
                 <nz-option nzValue="userId" nzLabel="{{ 'mxk.users.id' | i18n }}"></nz-option>
                 <nz-option nzValue="username" nzLabel="{{ 'mxk.users.username' | i18n }}"></nz-option>
                 <nz-option nzValue="displayName" nzLabel="{{ 'mxk.users.displayName' | i18n }}"></nz-option>
@@ -248,14 +232,18 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutUrl">{{ 'mxk.apps.logoutUrl' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutUrl!">
-              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input name="logoutUrl" id="logoutUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutUrl!">
+              <input [(ngModel)]="form.model.logoutUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="logoutUrl" id="logoutUrl" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="logoutType">{{ 'mxk.apps.logoutType' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid logoutType!">
-              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType" id="logoutType">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid logoutType!">
+              <nz-select [(ngModel)]="form.model.logoutType" [ngModelOptions]="{ standalone: true }" name="logoutType"
+                id="logoutType">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.logoutType.none' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.logoutType.back_channel' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.logoutType.front_channel' | i18n }}"></nz-option>
@@ -267,8 +255,10 @@
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="visible">{{ 'mxk.apps.visible' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid visible!">
-              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible" id="visible">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid visible!">
+              <nz-select [(ngModel)]="form.model.visible" [ngModelOptions]="{ standalone: true }" name="visible"
+                id="visible">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.visible.hidden' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.visible.all' | i18n }}"></nz-option>
                 <nz-option nzValue="2" nzLabel="{{ 'mxk.apps.visible.internet' | i18n }}"></nz-option>
@@ -278,30 +268,38 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="sortIndex">{{ 'mxk.text.sortIndex' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid sortIndex!">
-              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input name="sortIndex" id="sortIndex" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid sortIndex!">
+              <input [(ngModel)]="form.model.sortIndex" [ngModelOptions]="{ standalone: true }" nz-input
+                name="sortIndex" id="sortIndex" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendor">{{ 'mxk.apps.vendor' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendor!">
-              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor" id="vendor" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendor!">
+              <input [(ngModel)]="form.model.vendor" [ngModelOptions]="{ standalone: true }" nz-input name="vendor"
+                id="vendor" />
             </nz-form-control>
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="vendorUrl">{{ 'mxk.apps.vendor.url' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid vendorUrl!">
-              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input name="vendorUrl" id="vendorUrl" />
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid vendorUrl!">
+              <input [(ngModel)]="form.model.vendorUrl" [ngModelOptions]="{ standalone: true }" nz-input
+                name="vendorUrl" id="vendorUrl" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="isAdapter">{{ 'mxk.apps.isAdapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid isAdapter!">
-              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter" id="isAdapter">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid isAdapter!">
+              <nz-select [(ngModel)]="form.model.isAdapter" [ngModelOptions]="{ standalone: true }" name="isAdapter"
+                id="isAdapter">
                 <nz-option nzValue="0" nzLabel="{{ 'mxk.apps.isAdapter.no' | i18n }}"></nz-option>
                 <nz-option nzValue="1" nzLabel="{{ 'mxk.apps.isAdapter.yes' | i18n }}"></nz-option>
               </nz-select>
@@ -309,49 +307,31 @@
           </nz-form-item>
           <nz-form-item>
             <nz-form-label [nzSm]="8" [nzXs]="24" nzFor="adapterName">{{ 'mxk.apps.adapter' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid adapterName!">
+            <nz-form-control [nzSm]="16" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid adapterName!">
               <nz-input-group nzSearch [nzAddOnAfter]="suffixAdapterButton">
-                <input
-                  [(ngModel)]="form.model.adapterName"
-                  [ngModelOptions]="{ standalone: true }"
-                  nz-input
-                  name="adapterName"
-                  id="adapterName"
-                />
+                <input [(ngModel)]="form.model.adapterName" [ngModelOptions]="{ standalone: true }" nz-input
+                  name="adapterName" id="adapterName" />
               </nz-input-group>
               <ng-template #suffixAdapterButton>
-                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' | i18n }}</button>
+                <button nz-button nzType="primary" nzSearch (click)="onSelectAdapter($event)">{{ 'mxk.text.select' |
+                  i18n }}</button>
               </ng-template>
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapterId"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapterId"
-                id="adapterId"
-              />
-              <input
-                type="hidden"
-                [(ngModel)]="form.model.adapter"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="adapter"
-                id="adapter"
-              />
+              <input type="hidden" [(ngModel)]="form.model.adapterId" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapterId" id="adapterId" />
+              <input type="hidden" [(ngModel)]="form.model.adapter" [ngModelOptions]="{ standalone: true }" nz-input
+                name="adapter" id="adapter" />
             </nz-form-control>
           </nz-form-item>
         </div>
         <div nz-row>
           <nz-form-item style="width: 100%">
-            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}</nz-form-label>
-            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid description!">
-              <input
-                [(ngModel)]="form.model.description"
-                [ngModelOptions]="{ standalone: true }"
-                nz-input
-                name="description"
-                id="description"
-              />
+            <nz-form-label [nzSm]="4" [nzXs]="24" nzFor="description">{{ 'mxk.text.description' | i18n }}
+            </nz-form-label>
+            <nz-form-control [nzSm]="20" [nzMd]="16" [nzXs]="36" [nzXl]="48"
+              nzErrorTip="The input is not valid description!">
+              <input [(ngModel)]="form.model.description" [ngModelOptions]="{ standalone: true }" nz-input
+                name="description" id="description" />
             </nz-form-control>
           </nz-form-item>
         </div>
@@ -363,4 +343,4 @@
 <div *nzModalFooter>
   <button nz-button nzType="default" (click)="onClose($event)">{{ 'mxk.text.close' | i18n }}</button>
   <button nz-button nzType="primary" (click)="onSubmit($event)">{{ 'mxk.text.submit' | i18n }}</button>
-</div>
+</div>

+ 1 - 1
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/app-token-based-details-editer/app-token-based-details-editer.component.ts

@@ -91,7 +91,7 @@ export class AppTokenBasedDetailsEditerComponent implements OnInit {
         this.fileList = [
           {
             uid: this.form.model.id.toString(),
-            name: this.form.model.name.toString(),
+            name: this.form.model.appName.toString(),
             status: 'done',
             url: this.previewImage
           }

+ 8 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/apps.component.html

@@ -5,10 +5,10 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 24, lg: 24, xl: 48, xxl: 48 }">
       <div nz-col nzMd="10" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="appName">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
           <nz-form-control>
-            <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-              placeholder="" id="name" />
+            <input nz-input [(ngModel)]="query.params.appName" [ngModelOptions]="{ standalone: true }" name="appName"
+              placeholder="" id="appName" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -94,7 +94,7 @@
         </td>
 
         <td nzAlign="center"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
-        <td nzAlign="left"> {{ data.name }}</td>
+        <td nzAlign="left"> {{ data.appName }}</td>
         <td nzAlign="left"> {{ data.protocol }}</td>
         <td nzAlign="left">
           <div *ngIf="data.category == 'none'">{{ 'mxk.apps.category.none' | i18n }}</div>
@@ -130,6 +130,10 @@
             style="color: green"></i></td>
         <td nzAlign="left" nzBreakWord="false">
           <div nz-col>
+            <button nz-button type="button" (click)="onResourcesMgmt($event, data.id, data.appName)"
+              style="float: left">{{
+              'mxk.apps.resources' | i18n
+              }}</button>
             <button nz-button type="button" (click)="onEdit($event, data.id, data.protocol)" style="float: left">{{
               'mxk.text.edit' | i18n
               }}</button>

+ 9 - 2
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/apps.component.ts

@@ -16,6 +16,7 @@
 
 import { ChangeDetectionStrategy, ViewContainerRef, ChangeDetectorRef, Component, OnInit, Inject } from '@angular/core';
 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { Router } from '@angular/router';
 import { I18NService } from '@core';
 import { _HttpClient, ALAIN_I18N_TOKEN, SettingsService } from '@delon/theme';
 import { format, addDays } from 'date-fns';
@@ -43,7 +44,7 @@ import { AppTokenBasedDetailsEditerComponent } from './app-token-based-details-e
 export class AppsComponent implements OnInit {
   query: {
     params: {
-      name: String;
+      appName: String;
       displayName: String;
       protocol: String;
       startDate: String;
@@ -66,7 +67,7 @@ export class AppsComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        appName: '',
         displayName: '',
         protocol: '',
         startDate: '',
@@ -96,6 +97,7 @@ export class AppsComponent implements OnInit {
     private fb: FormBuilder,
     private msg: NzMessageService,
     @Inject(ALAIN_I18N_TOKEN) private i18n: I18NService,
+    private router: Router,
     private cdr: ChangeDetectorRef
   ) { }
 
@@ -177,6 +179,11 @@ export class AppsComponent implements OnInit {
     }
     return ProtocolComponent;
   }
+
+  onResourcesMgmt(e: MouseEvent, appId: String, appName: String): void {
+    this.router.navigateByUrl(`/permissions/resources?appId=${appId}&appName=${appName}`);
+  }
+
   onAdd(e: MouseEvent, protocol: String): void {
     e.preventDefault();
     const modal = this.modalService.create({

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/select-apps/select-apps.component.html

@@ -4,10 +4,10 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 8, lg: 24, xl: 48, xxl: 48 }">
       <div nz-col nzMd="14" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="appName">{{ 'mxk.apps.name' | i18n }}</nz-form-label>
           <nz-form-control>
-            <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-              placeholder="" id="name" />
+            <input nz-input [(ngModel)]="query.params.appName" [ngModelOptions]="{ standalone: true }" name="appName"
+              placeholder="" id="appName" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -46,7 +46,7 @@
         </td>
 
         <td nzAlign="left"><img height="30" border="0px" src="{{ data.iconBase64 }}" /></td>
-        <td nzAlign="left"> {{ data.name }}</td>
+        <td nzAlign="left"> {{ data.appName }}</td>
         <td nzAlign="left">
           <div *ngIf="data.category == 'none'">{{ 'mxk.apps.category.none' | i18n }}</div>
           <div *ngIf="data.category == '1011'">{{ 'mxk.apps.category.1011' | i18n }}</div>

+ 5 - 6
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/apps/select-apps/select-apps.component.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.
  */
- 
 
 import { ChangeDetectionStrategy, ViewContainerRef, ChangeDetectorRef, Component, OnInit } from '@angular/core';
 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@@ -35,7 +34,7 @@ import { set2String } from '../../../shared/index';
 export class SelectAppsComponent implements OnInit {
   query: {
     params: {
-      name: String;
+      appName: String;
       displayName: String;
       protocol: String;
       startDate: String;
@@ -58,7 +57,7 @@ export class SelectAppsComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        appName: '',
         displayName: '',
         protocol: '',
         startDate: '',

+ 6 - 6
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organization-editer/organization-editer.component.html

@@ -11,19 +11,19 @@
           </nz-form-control>
         </nz-form-item>
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="code">{{ 'mxk.organizations.code' | i18n }}
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="orgCode">{{ 'mxk.organizations.code' | i18n }}
           </nz-form-label>
           <nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid code!">
-            <input [(ngModel)]="form.model.code" [ngModelOptions]="{ standalone: true }" nz-input name="code"
-              id="code" />
+            <input [(ngModel)]="form.model.orgCode" [ngModelOptions]="{ standalone: true }" nz-input name="orgCode"
+              id="orgCode" />
           </nz-form-control>
         </nz-form-item>
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.organizations.name' | i18n }}
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="orgName">{{ 'mxk.organizations.name' | i18n }}
           </nz-form-label>
           <nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-            <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name"
-              id="name" />
+            <input [(ngModel)]="form.model.orgName" [ngModelOptions]="{ standalone: true }" nz-input name="orgName"
+              id="orgName" />
           </nz-form-control>
         </nz-form-item>
         <nz-form-item>

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organizations.component.html

@@ -5,10 +5,10 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 8, md: 24, lg: 24, xl: 48, xxl: 48 }">
       <div nz-col nzMd="16" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.organizations.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="orgName">{{ 'mxk.organizations.name' | i18n }}</nz-form-label>
           <nz-form-control>
-            <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-              placeholder="" id="name" />
+            <input nz-input [(ngModel)]="query.params.orgName" [ngModelOptions]="{ standalone: true }" name="orgName"
+              placeholder="" id="orgName" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -77,7 +77,7 @@
             <td nzAlign="left">
               <span>{{ data.id }}</span>
             </td>
-            <td nzAlign="left"> {{ data.name }}</td>
+            <td nzAlign="left"> {{ data.orgName }}</td>
             <td nzAlign="left">
               {{ data.type == 'entity' ? ('mxk.organizations.type.entity' | i18n) : ('mxk.organizations.type.virtual' |
               i18n) }}</td>

+ 2 - 2
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/organizations/organizations.component.ts

@@ -71,7 +71,7 @@ import { OrganizationEditerComponent } from './organization-editer/organization-
 export class OrganizationsComponent implements OnInit {
   query: {
     params: {
-      name: String;
+      orgName: String;
       displayName: String;
       parentId: String;
       startDate: String;
@@ -91,7 +91,7 @@ export class OrganizationsComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        orgName: '',
         displayName: '',
         parentId: '',
         startDate: '',

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/privileges/privileges.component.html

@@ -20,10 +20,10 @@
       </div>
       <div nz-col nzMd="8" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="roleName">{{ 'mxk.roles.name' | i18n }}</nz-form-label>
           <nz-form-control>
-            <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-              placeholder="" id="name" />
+            <input nz-input [(ngModel)]="query.params.roleName" [ngModelOptions]="{ standalone: true }" name="roleName"
+              placeholder="" id="roleName" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -83,7 +83,7 @@
             <td nzAlign="left" style="display: none">
               <span>{{ data.id }}</span>
             </td>
-            <td nzAlign="left" nzBreakWord="false">{{ data.name }}</td>
+            <td nzAlign="left" nzBreakWord="false">{{ data.roleName }}</td>
             <td nzAlign="center"> <i *ngIf="data.dynamic == 1" nz-icon nzType="check-circle" nzTheme="fill"
                 style="color: green"></i></td>
           </tr>

+ 3 - 3
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/privileges/privileges.component.ts

@@ -51,7 +51,7 @@ export class PrivilegesComponent implements OnInit {
   @ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent;
   query: {
     params: {
-      name: String;
+      roleName: String;
       displayName: String;
       employeeNumber: String;
       appId: String;
@@ -76,7 +76,7 @@ export class PrivilegesComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        roleName: '',
         displayName: '',
         employeeNumber: '',
         appId: '',
@@ -210,7 +210,7 @@ export class PrivilegesComponent implements OnInit {
     // Return a result when closed
     modal.afterClose.subscribe(result => {
       if (result.refresh) {
-        this.query.params.appName = result.data.name;
+        this.query.params.appName = result.data.appName;
         this.query.params.appId = result.data.id;
         this.fetch();
         this.tree();

+ 4 - 2
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resource-editer/resource-editer.component.html

@@ -9,9 +9,11 @@
       </nz-form-control>
     </nz-form-item>
     <nz-form-item>
-      <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">{{ 'mxk.resources.name' | i18n }}</nz-form-label>
+      <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="resourceName">{{ 'mxk.resources.name' | i18n }}
+      </nz-form-label>
       <nz-form-control [nzSm]="18" [nzMd]="18" [nzXs]="36" [nzXl]="48" nzErrorTip="The input is not valid name!">
-        <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input name="name" id="name" />
+        <input [(ngModel)]="form.model.resourceName" [ngModelOptions]="{ standalone: true }" nz-input
+          name="resourceName" id="resourceName" />
       </nz-form-control>
     </nz-form-item>
     <nz-form-item>

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resources.component.html

@@ -20,10 +20,10 @@
       </div>
       <div nz-col nzMd="10" nzSm="24">
         <nz-form-item>
-          <nz-form-label nzFor="name">{{ 'mxk.resources.name' | i18n }}</nz-form-label>
+          <nz-form-label nzFor="resourceName">{{ 'mxk.resources.name' | i18n }}</nz-form-label>
           <nz-form-control>
-            <input nz-input [(ngModel)]="query.params.name" [ngModelOptions]="{ standalone: true }" name="name"
-              placeholder="" id="name" />
+            <input nz-input [(ngModel)]="query.params.resourceName" [ngModelOptions]="{ standalone: true }"
+              name="resourceName" placeholder="" id="resourceName" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -92,7 +92,7 @@
             <td nzAlign="left">
               <span>{{ data.appName }}</span>
             </td>
-            <td nzAlign="left"> {{ data.name }}</td>
+            <td nzAlign="left"> {{ data.resourceName }}</td>
             <td nzAlign="left"> {{ data.resourceType }}</td>
             <td nzAlign="center"> {{ data.sortIndex }}</td>
             <td nzAlign="center"> <i *ngIf="data.status == 1" nz-icon nzType="check-circle" nzTheme="fill"

+ 13 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/resources/resources.component.ts

@@ -16,6 +16,7 @@
 
 import { ChangeDetectionStrategy, ViewContainerRef, ChangeDetectorRef, Component, OnInit, Inject } from '@angular/core';
 import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { ActivatedRoute, Router } from '@angular/router';
 import { I18NService } from '@core';
 import { _HttpClient, ALAIN_I18N_TOKEN, SettingsService } from '@delon/theme';
 import { format, addDays } from 'date-fns';
@@ -40,7 +41,7 @@ import { ResourceEditerComponent } from './resource-editer/resource-editer.compo
 export class ResourcesComponent implements OnInit {
   query: {
     params: {
-      name: String;
+      resourceName: String;
       displayName: String;
       parentId: String;
       appName: String;
@@ -65,7 +66,7 @@ export class ResourcesComponent implements OnInit {
     checked: boolean;
   } = {
       params: {
-        name: '',
+        resourceName: '',
         displayName: '',
         parentId: '',
         appName: '',
@@ -100,10 +101,18 @@ export class ResourcesComponent implements OnInit {
     private fb: FormBuilder,
     private msg: NzMessageService,
     @Inject(ALAIN_I18N_TOKEN) private i18n: I18NService,
+    private route: ActivatedRoute,
     private cdr: ChangeDetectorRef
   ) { }
 
-  ngOnInit(): void { }
+  ngOnInit(): void {
+    if (this.route.snapshot.queryParams['appId']) {
+      this.query.params.appId = this.route.snapshot.queryParams['appId'];
+      this.query.params.appName = this.route.snapshot.queryParams['appName'];
+      this.fetch();
+      this.tree();
+    }
+  }
 
   onQueryParamsChange(tableQueryParams: NzTableQueryParams): void {
     this.query.params.pageNumber = tableQueryParams.pageIndex;
@@ -185,7 +194,7 @@ export class ResourcesComponent implements OnInit {
     // Return a result when closed
     modal.afterClose.subscribe(result => {
       if (result.refresh) {
-        this.query.params.appName = result.data.name;
+        this.query.params.appName = result.data.appName;
         this.query.params.appId = result.data.id;
         console.log(result);
         this.fetch();

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

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

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

@@ -261,6 +261,7 @@
 			"tab.basic": "Basic",
 			"tab.extra": "Extra",
 			"extendapi.tab": "API",
+			"resources":"Resources",
 			"id": "App Id",
 			"name": "App Name",
 			"icon": "Icon",

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

@@ -262,6 +262,7 @@
 			"tab.basic": "基本信息",
 			"tab.extra": "扩展信息",
 			"extendapi.tab": "API配置",
+			"resources":"资源",
 			"id": "应用编码",
 			"name": "应用名称",
 			"icon": "图标",

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

@@ -263,6 +263,7 @@
 			"tab.basic": "基本信息",
 			"tab.extra": "擴展信息",
 			"extendapi.tab": "API配置",
+			"resources":"資源",
 			"id": "應用編碼",
 			"name": "應用名稱",
 			"icon": "圖標",

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

@@ -67,7 +67,7 @@ public class HistorySignOnAppInterceptor  implements AsyncHandlerInterceptor  {
              HistoryLoginApps historyLoginApps = new HistoryLoginApps();
              historyLoginApps.setAppId(app.getId());
              historyLoginApps.setSessionId(sessionId);
-             historyLoginApps.setAppName(app.getName());
+             historyLoginApps.setAppName(app.getAppName());
              historyLoginApps.setUserId(userInfo.getId());
              historyLoginApps.setUsername(userInfo.getUsername());
              historyLoginApps.setDisplayName(userInfo.getDisplayName());

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

@@ -26,6 +26,7 @@ import org.maxkey.entity.Roles;
 import org.maxkey.entity.Message;
 import org.maxkey.entity.UserInfo;
 import org.maxkey.persistence.service.RolesService;
+import org.maxkey.util.StringUtils;
 import org.maxkey.persistence.service.HistorySystemLogsService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,6 +88,10 @@ public class RolesController {
 	public ResponseEntity<?> insert(@RequestBody Roles role,@CurrentUser UserInfo currentUser) {
 		_logger.debug("-Add  :" + role);
 		role.setInstId(currentUser.getInstId());
+		role.setId(role.generateId());
+		if(StringUtils.isBlank(role.getRoleCode())) {
+			role.setRoleCode(role.getId());
+		}
 		if (rolesService.insert(role)) {
 			rolesService.refreshDynamicRoles(role);
 		    systemLog.insert(

+ 3 - 3
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/OrganizationsController.java

@@ -160,8 +160,8 @@ public class OrganizationsController {
 			TreeAttributes treeAttributes = new TreeAttributes();
 			int nodeCount = 0;
 			for (Organizations org : orgList) {
-				TreeNode treeNode = new TreeNode(org.getId(),org.getName());
-				treeNode.setCode(org.getCode());
+				TreeNode treeNode = new TreeNode(org.getId(),org.getOrgName());
+				treeNode.setCode(org.getOrgCode());
 				treeNode.setCodePath(org.getCodePath());
 				treeNode.setNamePath(org.getNamePath());
 				treeNode.setParentKey(org.getParentId());
@@ -235,7 +235,7 @@ public class OrganizationsController {
 		// 组织编码
 		organization.setId(ExcelUtils.getValue(row, 2));
 		// 组织名称
-		organization.setName(ExcelUtils.getValue(row, 3));
+		organization.setOrgName(ExcelUtils.getValue(row, 3));
 		// 组织全称
 		organization.setFullName(ExcelUtils.getValue(row, 4));
 		// 编码路径

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

@@ -148,7 +148,7 @@ public class ResourcesController {
 			TreeAttributes treeAttributes = new TreeAttributes();
 			int nodeCount = 0;
 			for (Resources r : resourceList) {
-				TreeNode treeNode = new TreeNode(r.getId(),r.getName());
+				TreeNode treeNode = new TreeNode(r.getId(),r.getResourceName());
 				treeNode.setParentKey(r.getParentId());
 				treeNode.setParentTitle(r.getParentName());
 				treeNode.setAttrs(r);