Merge branch 'refs/heads/feature/SUPPORT-8956_mfe' into SUPPORT-8943_seamlessness
# Conflicts: # pom.xml # resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page # resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page # resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на деактивацию.page # resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page # resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page # resources/src/main/resources/business-model/Управление пользователями/Группы редактирование.page # resources/src/main/resources/business-model/Управление пользователями/Группы создание.page # resources/src/main/resources/business-model/Управление пользователями/Группы.page # resources/src/main/resources/business-model/Управление пользователями/Организации.page # resources/src/main/resources/business-model/Управление пользователями/Организация редактирование(создание).page # resources/src/main/resources/business-model/Управление пользователями/Пользователи редактирование.page # resources/src/main/resources/business-model/Управление пользователями/Пользователи создание.page # resources/src/main/resources/business-model/Управление пользователями/Пользователи.page # resources/src/main/resources/business-model/Управление пользователями/Роли редактирование (создание).page # resources/src/main/resources/business-model/Управление пользователями/Роли.page # resources/src/main/resources/business-model/Управление пользователями/Функции безопасности.page
This commit is contained in:
commit
c69b5d4c33
100 changed files with 1712 additions and 4968 deletions
|
|
@ -20,6 +20,11 @@
|
|||
<artifactId>jjwt-impl</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.jsonwebtoken</groupId>
|
||||
<artifactId>jjwt-jackson</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>backend</artifactId>
|
||||
|
|
@ -139,14 +144,6 @@
|
|||
<groupId>ru.cg.webbpm.modules</groupId>
|
||||
<artifactId>standard-annotations</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-beans</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.reporting</groupId>
|
||||
<artifactId>reporting-api</artifactId>
|
||||
|
|
@ -183,14 +180,6 @@
|
|||
<groupId>ru.cg.webbpm.modules</groupId>
|
||||
<artifactId>webkit-base</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-db-synchronization-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-db-synchronization-ldap-impl</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>xerces</groupId>
|
||||
<artifactId>xercesImpl</artifactId>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
|||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.DependsOn;
|
||||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||
import org.springframework.context.annotation.FilterType;
|
||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
||||
|
|
@ -33,14 +32,13 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
|||
"i18n",
|
||||
"errorhandling",
|
||||
"database",
|
||||
"security",
|
||||
"component.addresses",
|
||||
"gen",
|
||||
"ru.cg",
|
||||
"ru.micord"
|
||||
}, excludeFilters = {
|
||||
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "ru.cg.webbpm.modules.security.api.impl.SecurityDbConfiguration"),
|
||||
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "ru.cg.webbpm.modules.database.impl.DatabaseConfiguration"),
|
||||
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "security.WebSecurityConfig"),
|
||||
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "service.email.EmailConfig"),
|
||||
})
|
||||
@EnableAspectJAutoProxy(proxyTargetClass = true)
|
||||
|
|
@ -71,7 +69,6 @@ public class AppConfig {
|
|||
}
|
||||
|
||||
@Bean
|
||||
@DependsOn("securityLiquibase")
|
||||
public SpringLiquibase liquibase(@Qualifier("datasource") DataSource dataSource) {
|
||||
SpringLiquibase liquibase = new SpringLiquibase();
|
||||
liquibase.setDataSource(dataSource);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
package ru.micord.ervu.account_applications;
|
||||
|
||||
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
|
||||
|
||||
/**
|
||||
* @author Adel Kalimullin
|
||||
*/
|
||||
public class SecurityWebAppInitializer extends AbstractSecurityWebApplicationInitializer {
|
||||
}
|
||||
|
|
@ -19,8 +19,8 @@ public class RecruitmentDao {
|
|||
this.dslContext = dslContext;
|
||||
}
|
||||
|
||||
public List<String> getRecruitmentIdsWithParentByOrgCode(String orgCode) {
|
||||
return getRecruitmentIdmIdsByParentId(orgCode, Recruitment.RECRUITMENT.IDM_ID);
|
||||
public List<String> getRecruitmentIdsWithParentByDomainId(String domainId) {
|
||||
return getRecruitmentIdmIdsByParentId(domainId, Recruitment.RECRUITMENT.IDM_ID);
|
||||
}
|
||||
|
||||
public List<String> getRecruitmentIdsWithParentByRecruitmentId(String recruitmentId) {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import ru.cg.webbpm.modules.database.api.dao.option.SortOrder;
|
|||
import ru.cg.webbpm.modules.database.bean.filter.EntityFilter;
|
||||
import ru.cg.webbpm.modules.database.bean.filter.EntityFilterGroup;
|
||||
import ru.cg.webbpm.modules.database.bean.filter.FilterOperation;
|
||||
import ru.cg.webbpm.modules.security.api.runtime.SecurityContext;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
|
||||
/**
|
||||
* @author Adel Kalimullin
|
||||
|
|
@ -90,8 +90,8 @@ public class RecruitmentAutoCompleteService extends AbstractAutocompleteService<
|
|||
}
|
||||
|
||||
private List<String> getRecruitmentIdsForCurrentUser() {
|
||||
String currentOrgUnitCode = securityContext.getCurrentOrgUnitCode();
|
||||
return recruitmentDao.getRecruitmentIdsWithParentByOrgCode(currentOrgUnitCode);
|
||||
String recruitmentId = securityContext.getDomainId();
|
||||
return recruitmentDao.getRecruitmentIdsWithParentByDomainId(recruitmentId);
|
||||
}
|
||||
|
||||
private EntityFilter getEntityFilterForRecruitmentIds(List<String> ids) {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
|
|||
import property.enums.DisplayType;
|
||||
import property.grid.ColumnSort;
|
||||
import ru.micord.ervu.account_applications.component.dao.RecruitmentDao;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
import service.field.ComboBoxServiceImpl;
|
||||
|
||||
import ru.cg.webbpm.modules.database.api.bean.TableRow;
|
||||
|
|
@ -16,7 +17,6 @@ import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions;
|
|||
import ru.cg.webbpm.modules.database.api.dao.option.SortOrder;
|
||||
import ru.cg.webbpm.modules.database.bean.filter.EntityFilter;
|
||||
import ru.cg.webbpm.modules.database.bean.filter.FilterOperation;
|
||||
import ru.cg.webbpm.modules.security.api.runtime.SecurityContext;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -26,13 +26,12 @@ import ru.cg.webbpm.modules.security.api.runtime.SecurityContext;
|
|||
public class RecruitmentComboBoxService extends ComboBoxServiceImpl {
|
||||
private final RecruitmentDao recruitmentDao;
|
||||
private final SecurityContext securityContext;
|
||||
|
||||
public RecruitmentComboBoxService(RecruitmentDao recruitmentDao,
|
||||
SecurityContext securityContext) {
|
||||
public RecruitmentComboBoxService(RecruitmentDao recruitmentDao, SecurityContext securityContext) {
|
||||
this.recruitmentDao = recruitmentDao;
|
||||
this.securityContext = securityContext;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<ComboBoxModel> loadData() {
|
||||
return load(new LoadOptions());
|
||||
|
|
@ -102,8 +101,8 @@ public class RecruitmentComboBoxService extends ComboBoxServiceImpl {
|
|||
}
|
||||
|
||||
private List<String> getRecruitmentIdsForCurrentUser() {
|
||||
String currentOrgUnitCode = securityContext.getCurrentOrgUnitCode();
|
||||
return recruitmentDao.getRecruitmentIdsWithParentByOrgCode(currentOrgUnitCode);
|
||||
String domainId = securityContext.getDomainId();
|
||||
return recruitmentDao.getRecruitmentIdsWithParentByDomainId(domainId);
|
||||
}
|
||||
|
||||
private EntityFilter getEntityFilterForRecruitmentIds(List<String> recruitmentIds) {
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ import ru.cg.webbpm.modules.database.bean.annotation.LocalGraphSource;
|
|||
import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn;
|
||||
import ru.cg.webbpm.modules.database.bean.filter.EntityFilter;
|
||||
import ru.cg.webbpm.modules.database.bean.filter.FilterOperation;
|
||||
import ru.cg.webbpm.modules.security.api.runtime.SecurityContext;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef;
|
||||
import ru.cg.webbpm.modules.standard_annotations.validation.NotNull;
|
||||
|
||||
|
|
@ -33,6 +33,7 @@ public class RecruitmentGridService extends GridV2ServiceImpl {
|
|||
@NotNull
|
||||
public FilterControl filterControlRef;
|
||||
@LocalGraphSource(sourceFieldName = "loadDao")
|
||||
@NotNull
|
||||
public EntityColumn recruitmentColumn;
|
||||
|
||||
public RecruitmentGridService(RecruitmentDao recruitmentDao, SecurityContext securityContext) {
|
||||
|
|
@ -70,8 +71,8 @@ public class RecruitmentGridService extends GridV2ServiceImpl {
|
|||
}
|
||||
|
||||
private List<String> getRecruitmentIdsForCurrentUser() {
|
||||
String currentOrgUnitCode = securityContext.getCurrentOrgUnitCode();
|
||||
return recruitmentDao.getRecruitmentIdsWithParentByOrgCode(currentOrgUnitCode);
|
||||
String domainId = securityContext.getDomainId();
|
||||
return recruitmentDao.getRecruitmentIdsWithParentByDomainId(domainId);
|
||||
}
|
||||
|
||||
private EntityFilter getEntityFilterForRecruitmentIds(List<String> recruitmentIds) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import database.dao.DefaultLoadDao;
|
|||
import org.springframework.stereotype.Service;
|
||||
import ru.micord.ervu.account_applications.component.model.TreeItemDto;
|
||||
import ru.micord.ervu.account_applications.component.rpc.TreeItemRpcService;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
|
||||
import ru.cg.webbpm.modules.database.api.bean.TableRow;
|
||||
import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions;
|
||||
|
|
@ -14,8 +15,6 @@ import ru.cg.webbpm.modules.database.bean.annotation.GraphSource;
|
|||
import ru.cg.webbpm.modules.database.bean.annotation.TypedColumn;
|
||||
import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn;
|
||||
import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumnType;
|
||||
import ru.cg.webbpm.modules.security.api.runtime.SecurityContext;
|
||||
import ru.cg.webbpm.modules.security.api.service.OrgUnitService;
|
||||
import ru.cg.webbpm.modules.standard_annotations.validation.NotNull;
|
||||
|
||||
/**
|
||||
|
|
@ -24,7 +23,6 @@ import ru.cg.webbpm.modules.standard_annotations.validation.NotNull;
|
|||
@Service
|
||||
public class TreeItemService {
|
||||
private final SecurityContext securityContext;
|
||||
private final OrgUnitService orgUnitService;
|
||||
@NotNull
|
||||
public DefaultLoadDao loadDao;
|
||||
@GraphSource(value = TreeItemRpcService.class, scanMode = GraphSource.ScanMode.SELF)
|
||||
|
|
@ -42,15 +40,14 @@ public class TreeItemService {
|
|||
@GraphSource(value = TreeItemRpcService.class, scanMode = GraphSource.ScanMode.SELF)
|
||||
public EntityColumn domainIdColumn;
|
||||
|
||||
public TreeItemService(SecurityContext securityContext, OrgUnitService orgUnitService) {
|
||||
public TreeItemService(SecurityContext securityContext) {
|
||||
this.securityContext = securityContext;
|
||||
this.orgUnitService = orgUnitService;
|
||||
}
|
||||
|
||||
public List<TreeItemDto> loadTreeData() {
|
||||
String currentOrgUnitCode = securityContext.getCurrentOrgUnitCode();
|
||||
String domainId = securityContext.getDomainId();
|
||||
List<TreeItemDto> filteredTreeItems = loadTreeItems().stream()
|
||||
.filter(item -> item.domainId.equalsIgnoreCase(currentOrgUnitCode))
|
||||
.filter(item -> item.domainId.equalsIgnoreCase(domainId))
|
||||
.toList();
|
||||
filteredTreeItems.forEach(this::setDomainIdToNull);
|
||||
return filteredTreeItems;
|
||||
|
|
|
|||
|
|
@ -1,129 +0,0 @@
|
|||
package ru.micord.ervu.account_applications.security;
|
||||
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.Collections;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import liquibase.integration.spring.SpringLiquibase;
|
||||
import org.jooq.ConnectionProvider;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.conf.RenderQuotedNames;
|
||||
import org.jooq.conf.Settings;
|
||||
import org.jooq.impl.DataSourceConnectionProvider;
|
||||
import org.jooq.impl.DefaultConfiguration;
|
||||
import org.jooq.impl.DefaultDSLContext;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.DependsOn;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
|
||||
/**
|
||||
* @author kochetkov
|
||||
*/
|
||||
@Configuration
|
||||
@EnableTransactionManagement
|
||||
public class WebSecurityDbConfiguration {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(
|
||||
MethodHandles.lookup().lookupClass());
|
||||
|
||||
@Autowired
|
||||
@Qualifier("datasource")
|
||||
private DataSource dataSource;
|
||||
|
||||
@Bean
|
||||
public DataSource securityDataSource() {
|
||||
createSecuritySchema(dataSource);
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@DependsOn("securityLiquibase")
|
||||
public DSLContext securityDslContext(@Qualifier("securityDataSource") DataSource securityDataSource) {
|
||||
DefaultConfiguration configuration = new DefaultConfiguration();
|
||||
configuration.setSQLDialect(sqlDialect(securityDataSource));
|
||||
ConnectionProvider connectionProvider = new DataSourceConnectionProvider(securityDataSource);
|
||||
configuration.setConnectionProvider(connectionProvider);
|
||||
|
||||
Settings settings = new Settings();
|
||||
settings.setRenderQuotedNames(RenderQuotedNames.NEVER);
|
||||
configuration.setSettings(settings);
|
||||
|
||||
return new DefaultDSLContext(configuration);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SpringLiquibase securityLiquibase(
|
||||
@Qualifier("securityDataSource") DataSource securityDataSource) {
|
||||
SpringLiquibase liquibase = new SpringLiquibase();
|
||||
liquibase.setChangeLog(
|
||||
"classpath:ru/cg/webbpm/modules/security/api/changelog/changelog-master.xml");
|
||||
liquibase.setDataSource(securityDataSource);
|
||||
liquibase.setLiquibaseSchema("security");
|
||||
liquibase.setChangeLogParameters(
|
||||
Collections.singletonMap("projectUser", getProjectDbUserName()));
|
||||
return liquibase;
|
||||
}
|
||||
|
||||
private String getProjectDbUserName() {
|
||||
try (Connection connection = dataSource.getConnection()) {
|
||||
return connection.getMetaData().getUserName();
|
||||
}
|
||||
catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static SQLDialect sqlDialect(DataSource securityDataSource) {
|
||||
SQLDialect sqlDialect = SQLDialect.DEFAULT;
|
||||
String databaseProductName;
|
||||
|
||||
try {
|
||||
Connection connection = securityDataSource.getConnection();
|
||||
DatabaseMetaData databaseMetaData = connection.getMetaData();
|
||||
databaseProductName = databaseMetaData.getDatabaseProductName();
|
||||
}
|
||||
catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
switch (databaseProductName) {
|
||||
case "MySQL" -> sqlDialect = SQLDialect.MYSQL;
|
||||
case "PostgreSQL" -> sqlDialect = SQLDialect.POSTGRES;
|
||||
case "H2" -> sqlDialect = SQLDialect.H2;
|
||||
default -> LOGGER.error("sql dialect is not defined for: " + databaseProductName);
|
||||
}
|
||||
return sqlDialect;
|
||||
}
|
||||
|
||||
private void createSecuritySchema(DataSource dataSource) {
|
||||
try (Connection connection = dataSource.getConnection()) {
|
||||
LOGGER.info("Start creating security schema");
|
||||
String sql = "CREATE SCHEMA IF NOT EXISTS security;";
|
||||
try (Statement statement = connection.createStatement()) {
|
||||
connection.setAutoCommit(false);
|
||||
statement.execute(sql);
|
||||
connection.commit();
|
||||
LOGGER.info("Security schema was created");
|
||||
}
|
||||
catch (SQLException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
connection.rollback();
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
catch (SQLException e) {
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package ru.micord.ervu.account_applications.security.config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.authentication.AuthenticationManager;
|
||||
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||
import ru.micord.ervu.account_applications.security.filter.JwtAuthenticationFilter;
|
||||
import ru.micord.ervu.account_applications.security.provider.ErvuJwtAuthenticationProvider;
|
||||
|
||||
|
||||
@Configuration
|
||||
@EnableWebSecurity
|
||||
public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
|
||||
@Autowired
|
||||
private JwtAuthenticationFilter jwtAuthenticationFilter;
|
||||
@Autowired
|
||||
private ErvuJwtAuthenticationProvider jwtAuthenticationProvider;
|
||||
|
||||
@Value("${security.roles.allowed:#{null}}")
|
||||
private String[] allowedRoles;
|
||||
|
||||
protected void configure(HttpSecurity http) throws Exception {
|
||||
http.csrf().disable()
|
||||
.authorizeHttpRequests(auth -> {
|
||||
auth.antMatchers("/version").permitAll();
|
||||
auth.antMatchers("/session").authenticated();
|
||||
|
||||
if (allowedRoles != null && allowedRoles.length > 0) {
|
||||
auth.anyRequest().hasAnyAuthority(allowedRoles);
|
||||
}
|
||||
else {
|
||||
auth.anyRequest().authenticated();
|
||||
}
|
||||
})
|
||||
.sessionManagement(session ->
|
||||
session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
||||
)
|
||||
.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void configureGlobal(AuthenticationManagerBuilder auth) {
|
||||
auth.authenticationProvider(jwtAuthenticationProvider);
|
||||
}
|
||||
|
||||
@Bean(name = "authenticationManager")
|
||||
@Override
|
||||
public AuthenticationManager authenticationManagerBean() throws Exception {
|
||||
return super.authenticationManagerBean();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PasswordEncoder passwordEncoder(){
|
||||
return new BCryptPasswordEncoder();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package ru.micord.ervu.account_applications.security.context;
|
||||
|
||||
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
|
||||
|
||||
public interface SecurityContext {
|
||||
String getDomainId();
|
||||
|
||||
String getUserId();
|
||||
|
||||
UserSession getUserSession();
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package ru.micord.ervu.account_applications.security.context;
|
||||
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.authentication.JwtTokenAuthentication;
|
||||
|
||||
|
||||
@Component
|
||||
public class SecurityContextImpl
|
||||
implements SecurityContext {
|
||||
@Override
|
||||
public String getDomainId() {
|
||||
JwtTokenAuthentication auth = (JwtTokenAuthentication) SecurityContextHolder.getContext().getAuthentication();
|
||||
return auth != null ? auth.getUserSession().domainId() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUserId() {
|
||||
JwtTokenAuthentication auth = (JwtTokenAuthentication) SecurityContextHolder.getContext().getAuthentication();
|
||||
return auth != null ? auth.getUserSession().userId() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserSession getUserSession() {
|
||||
JwtTokenAuthentication auth = (JwtTokenAuthentication) SecurityContextHolder.getContext().getAuthentication();
|
||||
return auth != null ? auth.getUserSession() : null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package ru.micord.ervu.account_applications.security.controller;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
import ru.micord.ervu.account_applications.security.dto.SessionDto;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
|
||||
import ru.micord.ervu.account_applications.security.model.role.ErvuRoleAuthority;
|
||||
|
||||
|
||||
@RestController
|
||||
public class AuthorizationController {
|
||||
|
||||
private final SecurityContext securityContext;
|
||||
|
||||
public AuthorizationController(SecurityContext securityContext) {
|
||||
this.securityContext = securityContext;
|
||||
}
|
||||
|
||||
@GetMapping("/session")
|
||||
public SessionDto getSession() {
|
||||
UserSession userSession = securityContext.getUserSession();
|
||||
return new SessionDto(
|
||||
userSession.userId(),
|
||||
userSession.name(),
|
||||
userSession.realm(),
|
||||
userSession.roles()
|
||||
.stream()
|
||||
.map(ErvuRoleAuthority::getAuthority)
|
||||
.collect(Collectors.toSet()),
|
||||
userSession.domainId()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package ru.micord.ervu.account_applications.security.dto;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public record SessionDto(
|
||||
String userId,
|
||||
String name,
|
||||
String realm,
|
||||
Set<String> roles,
|
||||
String domainId
|
||||
) {}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package ru.micord.ervu.account_applications.security.exception;
|
||||
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
|
||||
/**
|
||||
* @author Adel Kalimullin
|
||||
*/
|
||||
public class JwtProcessingException extends AuthenticationException {
|
||||
|
||||
public JwtProcessingException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public JwtProcessingException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
package ru.micord.ervu.account_applications.security.filter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.net.URLDecoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Optional;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.security.authentication.AuthenticationManager;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.authentication.JwtTokenDummy;
|
||||
|
||||
|
||||
@Component
|
||||
public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(
|
||||
MethodHandles.lookup().lookupClass());
|
||||
|
||||
private final AuthenticationManager authenticationManager;
|
||||
|
||||
public JwtAuthenticationFilter(AuthenticationManager authenticationManager) {
|
||||
this.authenticationManager = authenticationManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
|
||||
FilterChain filterChain) throws ServletException, IOException {
|
||||
try {
|
||||
Authentication authentication = attemptAuthentication(request);
|
||||
if (authentication != null) {
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
}
|
||||
}
|
||||
catch (AuthenticationException e) {
|
||||
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
||||
LOGGER.warn(e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
filterChain.doFilter(request, response);
|
||||
}
|
||||
|
||||
protected Authentication attemptAuthentication(HttpServletRequest request)
|
||||
throws AuthenticationException {
|
||||
String token = extractAuthTokenFromRequest(request);
|
||||
if (token == null) {
|
||||
return null;
|
||||
}
|
||||
Authentication authentication = new JwtTokenDummy(token);
|
||||
authentication = authenticationManager.authenticate(authentication);
|
||||
return authentication;
|
||||
}
|
||||
|
||||
private String extractAuthTokenFromRequest(HttpServletRequest request) {
|
||||
return Optional.ofNullable(request.getHeader("Authorization"))
|
||||
.map(token -> URLDecoder.decode(token, StandardCharsets.UTF_8))
|
||||
.map(token -> token.replace("Bearer", ""))
|
||||
.map(String::trim)
|
||||
.orElse(null);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
package ru.micord.ervu.account_applications.security.model.jwt;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import ru.micord.ervu.account_applications.security.model.role.ErvuRoleAuthority;
|
||||
|
||||
public record UserSession(
|
||||
String userId,
|
||||
String name,
|
||||
String realm,
|
||||
Set<ErvuRoleAuthority> roles,
|
||||
String domainId
|
||||
) {
|
||||
|
||||
public static UserSessionBuilder builder() {
|
||||
return new UserSessionBuilder();
|
||||
}
|
||||
|
||||
public static final class UserSessionBuilder {
|
||||
private String userId;
|
||||
private String name;
|
||||
private String realm;
|
||||
private Set<ErvuRoleAuthority> roles;
|
||||
private String domainId;
|
||||
|
||||
private UserSessionBuilder() {
|
||||
}
|
||||
|
||||
public UserSessionBuilder withUserId(String userId) {
|
||||
this.userId = userId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserSessionBuilder withName(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserSessionBuilder withRealm(String realm) {
|
||||
this.realm = realm;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserSessionBuilder withRoles(Set<ErvuRoleAuthority> roles) {
|
||||
this.roles = roles;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserSessionBuilder withDomainId(String domainId) {
|
||||
this.domainId = domainId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserSession build() {
|
||||
return new UserSession(userId, name, realm, roles, domainId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
package ru.micord.ervu.account_applications.security.model.jwt.authentication;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
|
||||
|
||||
public class JwtTokenAuthentication implements Authentication {
|
||||
|
||||
private final UserSession userSession;
|
||||
|
||||
public JwtTokenAuthentication(UserSession userSession) {
|
||||
this.userSession = userSession;
|
||||
}
|
||||
|
||||
public UserSession getUserSession() {
|
||||
return userSession;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||
return userSession.roles();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getCredentials() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getDetails() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getPrincipal() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAuthenticated() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return userSession.name();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
package ru.micord.ervu.account_applications.security.model.jwt.authentication;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.apache.commons.lang3.NotImplementedException;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
|
||||
public class JwtTokenDummy implements Authentication {
|
||||
|
||||
private final String token;
|
||||
|
||||
public JwtTokenDummy(String token) {
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||
throw new NotImplementedException("Not implemented for dummy");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getCredentials() {
|
||||
throw new NotImplementedException("Not implemented for dummy");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getDetails() {
|
||||
throw new NotImplementedException("Not implemented for dummy");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getPrincipal() {
|
||||
throw new NotImplementedException("Not implemented for dummy");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAuthenticated() {
|
||||
throw new NotImplementedException("Not implemented for dummy");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
|
||||
throw new NotImplementedException("Not implemented for dummy");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
throw new NotImplementedException("Not implemented for dummy");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package ru.micord.ervu.account_applications.security.model.role;
|
||||
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
|
||||
public class ErvuRoleAuthority implements GrantedAuthority {
|
||||
|
||||
private final String role;
|
||||
|
||||
public ErvuRoleAuthority(String role) {
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthority() {
|
||||
return role;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package ru.micord.ervu.account_applications.security.provider;
|
||||
|
||||
import org.springframework.security.authentication.AuthenticationProvider;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.authentication.JwtTokenAuthentication;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.authentication.JwtTokenDummy;
|
||||
import ru.micord.ervu.account_applications.security.service.JwtTokenService;
|
||||
|
||||
@Component
|
||||
public class ErvuJwtAuthenticationProvider implements AuthenticationProvider {
|
||||
|
||||
private final JwtTokenService jwtTokenService;
|
||||
|
||||
public ErvuJwtAuthenticationProvider(JwtTokenService jwtTokenService) {
|
||||
this.jwtTokenService = jwtTokenService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
|
||||
JwtTokenDummy jwtTokenDummy = (JwtTokenDummy) authentication;
|
||||
String jwtToken = jwtTokenDummy.getToken();
|
||||
UserSession userSession = jwtTokenService.getUserSession(jwtToken);
|
||||
return new JwtTokenAuthentication(userSession);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supports(Class<?> authentication) {
|
||||
return JwtTokenDummy.class.isAssignableFrom(authentication);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
package ru.micord.ervu.account_applications.security.service;
|
||||
|
||||
import java.security.KeyFactory;
|
||||
import java.security.PublicKey;
|
||||
import java.security.spec.X509EncodedKeySpec;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import io.jsonwebtoken.Claims;
|
||||
import io.jsonwebtoken.JwtException;
|
||||
import io.jsonwebtoken.JwtParser;
|
||||
import io.jsonwebtoken.Jwts;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.micord.ervu.account_applications.security.exception.JwtProcessingException;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
|
||||
import ru.micord.ervu.account_applications.security.model.role.ErvuRoleAuthority;
|
||||
|
||||
@Service
|
||||
public class ErvuJwtTokenService implements JwtTokenService {
|
||||
private final boolean enableJwtValidation;
|
||||
private final String issuer;
|
||||
private final PublicKey publicKey;
|
||||
|
||||
public ErvuJwtTokenService(
|
||||
@Value("${security.jwt.validation.enable:false}") boolean enableJwtValidation,
|
||||
@Value("${security.jwt.validation.issuer:#{null}}") String issuer,
|
||||
@Value("${security.jwt.validation.public_key:#{null}}") String publicKeyStr
|
||||
) {
|
||||
this.enableJwtValidation = enableJwtValidation;
|
||||
this.issuer = issuer;
|
||||
this.publicKey =
|
||||
publicKeyStr != null ? extractPublicKey(publicKeyStr) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserSession getUserSession(String token) {
|
||||
return enableJwtValidation ? parseToken(token) : unsafeParseToken(token);
|
||||
}
|
||||
|
||||
protected UserSession unsafeParseToken(String token) {
|
||||
try {
|
||||
token = token.substring(0, token.lastIndexOf(".") + 1);
|
||||
JwtParser parser = Jwts.parser();
|
||||
Claims claims = parser
|
||||
.parseClaimsJwt(token).getBody();
|
||||
|
||||
return UserSession.builder()
|
||||
.withUserId(claims.getSubject())
|
||||
.withName(claims.get("name", String.class))
|
||||
.withRealm(claims.get("realm", String.class))
|
||||
.withDomainId(claims.get("domain_id", String.class))
|
||||
.withRoles(getRoles((List<String>) claims.get("roles", ArrayList.class)))
|
||||
.build();
|
||||
}
|
||||
catch (JwtException e) {
|
||||
throw new JwtProcessingException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected UserSession parseToken(String token) {
|
||||
JwtParser parser = Jwts.parser();
|
||||
try {
|
||||
if (issuer != null && !issuer.isEmpty()) {
|
||||
parser = parser.requireIssuer(issuer);
|
||||
}
|
||||
|
||||
if (publicKey != null) {
|
||||
parser = parser.setSigningKey(publicKey);
|
||||
}
|
||||
|
||||
Claims claims = parser.parseClaimsJws(token).getBody();
|
||||
|
||||
return UserSession.builder()
|
||||
.withUserId(claims.getSubject())
|
||||
.withName(claims.get("name", String.class))
|
||||
.withRealm(claims.get("realm", String.class))
|
||||
.withDomainId(claims.get("domain_id", String.class))
|
||||
.withRoles((getRoles((List<String>) claims.get("roles", ArrayList.class))))
|
||||
.build();
|
||||
}
|
||||
catch (JwtException e){
|
||||
throw new JwtProcessingException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
protected Set<ErvuRoleAuthority> getRoles(List<String> roles) {
|
||||
return roles
|
||||
.stream()
|
||||
.map(ErvuRoleAuthority::new)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
private PublicKey extractPublicKey(String publicKeyStr) {
|
||||
try {
|
||||
byte[] decodedPublicKey = Base64.getDecoder().decode(publicKeyStr);
|
||||
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(decodedPublicKey);
|
||||
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
|
||||
return keyFactory.generatePublic(x509EncodedKeySpec);
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package ru.micord.ervu.account_applications.security.service;
|
||||
|
||||
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
|
||||
|
||||
public interface JwtTokenService {
|
||||
UserSession getUserSession(String token);
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<databaseChangeLog
|
||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
|
||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
|
||||
|
||||
<changeSet id="0001" author="a.kalimullin">
|
||||
<comment>Create table user_application_role</comment>
|
||||
<sql>
|
||||
CREATE TABLE IF NOT EXISTS public.user_application_role (
|
||||
user_role_id VARCHAR(36) PRIMARY KEY,
|
||||
role_name VARCHAR(255) UNIQUE NOT NULL,
|
||||
created TIMESTAMP WITHOUT TIME ZONE DEFAULT now(),
|
||||
updated TIMESTAMP WITHOUT TIME ZONE DEFAULT now()
|
||||
)
|
||||
TABLESPACE pg_default;
|
||||
|
||||
ALTER TABLE IF EXISTS public.user_application_role
|
||||
OWNER TO ervu_account_applications;
|
||||
|
||||
GRANT ALL ON TABLE public.user_application_role TO ervu_account_applications;
|
||||
|
||||
|
||||
COMMENT ON COLUMN public.user_application_role.user_role_id IS 'Уникальный идентификатор роли пользователя';
|
||||
COMMENT ON COLUMN public.user_application_role.role_name IS 'Название роли пользователя';
|
||||
COMMENT ON COLUMN public.user_application_role.created IS 'Дата и время создания записи';
|
||||
COMMENT ON COLUMN public.user_application_role.updated IS 'Дата и время последнего обновления записи';
|
||||
|
||||
|
||||
INSERT INTO public.user_application_role (user_role_id, role_name)
|
||||
VALUES
|
||||
('562b57c0-8b89-4847-8b70-222f655c4134', 'Специалист ВК по воинскому учёту'),
|
||||
('1023907145', 'Сотрудник ВК'),
|
||||
('9230269d-6a0e-42d0-8830-8cfb7fe65c6d', 'Специалист ВК по комплектованию'),
|
||||
('c67e8903-a600-4c43-b3b5-139ee49eba01', 'Специалист ВК по обработке заявлений'),
|
||||
('60f2a601-5269-48b5-b2b9-4f8bef9f828f', 'Наблюдатель ГОМУ'),
|
||||
('da0b1320-96ae-43b3-834e-da981ff115ad', 'Наблюдатель штаба ВО'),
|
||||
('a496d6cf-872b-4b27-9439-9d33262fc9bf', 'Наблюдатель ВК субъекта'),
|
||||
('fd0dd608-acf3-46e5-af72-ff4105251b5c', 'Cотрудник Главного организационно-мобилизационного управления'),
|
||||
('cb1921c9-e0b5-44a4-9dfc-8b6944e44df3', 'Супервайзер ГОМУ'),
|
||||
('2df13796-2ea3-44f4-ad12-4764141cd84c', 'Администратор ИС'),
|
||||
('02e38044-7060-436b-99ec-cf11e3e051ea', 'Администратор ПОИБ'),
|
||||
('5cc57c00-4f3b-4c79-83ea-1d9371ce5f8e', 'Военный комиссар'),
|
||||
('bdf376ab-2e68-4751-94e5-f092794e5213', 'Администратор военкомата'),
|
||||
('d7c2a369-f68c-48fd-868e-3a81e546a9ab', 'Ответственный за защиту информации'),
|
||||
('0e9dca63-f66c-4e28-b29f-a9572df41df0', 'Ответственный за защиту информации военного комиссариата субъекта РФ')
|
||||
ON CONFLICT DO NOTHING;
|
||||
</sql>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="0002" author="a.kalimullin">
|
||||
<comment>Drop table public.link_user_application_user_group</comment>
|
||||
<sql>
|
||||
DROP TABLE IF EXISTS public.link_user_application_user_group CASCADE;
|
||||
</sql>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="0003" author="a.kalimullin">
|
||||
<comment>Create table link_user_application_user_application_role</comment>
|
||||
<sql>
|
||||
CREATE TABLE IF NOT EXISTS public.link_user_application_user_application_role (
|
||||
link_user_application_user_role_id bigserial,
|
||||
user_application_list_id bigint NOT NULL,
|
||||
user_role_id VARCHAR(36) NOT NULL,
|
||||
created TIMESTAMP WITHOUT TIME ZONE DEFAULT now(),
|
||||
CONSTRAINT pk_link_user_application_user_application_role PRIMARY KEY (link_user_application_user_role_id),
|
||||
CONSTRAINT uni_user_application_role UNIQUE (user_application_list_id, user_role_id),
|
||||
CONSTRAINT fk_user_application_list FOREIGN KEY (user_application_list_id)
|
||||
REFERENCES public.user_application_list (user_application_list_id) MATCH SIMPLE
|
||||
ON UPDATE NO ACTION
|
||||
ON DELETE CASCADE,
|
||||
CONSTRAINT fk_user_role FOREIGN KEY (user_role_id)
|
||||
REFERENCES public.user_application_role (user_role_id) MATCH SIMPLE
|
||||
ON UPDATE NO ACTION
|
||||
ON DELETE NO ACTION
|
||||
) TABLESPACE pg_default;
|
||||
|
||||
ALTER TABLE IF EXISTS public.link_user_application_user_application_role
|
||||
OWNER TO ervu_account_applications;
|
||||
|
||||
GRANT ALL ON TABLE public.link_user_application_user_application_role TO ervu_account_applications;
|
||||
</sql>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<databaseChangeLog
|
||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
|
||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
|
||||
|
||||
<changeSet id="0001" author="a.kalimullin">
|
||||
<sql>
|
||||
DROP SCHEMA security CASCADE;
|
||||
</sql>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
|
|
@ -11,6 +11,10 @@
|
|||
<include file="20250207_ERVU-273_create_db.xml" relativeToChangelogFile="true"/>
|
||||
<include file="20250211_create_admin_user.xml" relativeToChangelogFile="true"/>
|
||||
<include file="20250211_fix_parent_org_unit.xml" relativeToChangelogFile="true"/>
|
||||
<include file="20250303_SUPPORT-8956_create_table_role.xml" relativeToChangelogFile="true"/>
|
||||
<include file="20250304_SUPPORT-8956_drop_security.xml" relativeToChangelogFile="true"/>
|
||||
|
||||
|
||||
|
||||
|
||||
</databaseChangeLog>
|
||||
219
config.md
219
config.md
|
|
@ -4,18 +4,11 @@
|
|||
|
||||
## Общие
|
||||
|
||||
- `webbpm.security.login.case_sensitive`. Default value = true. Параметр отвечающий за чувствительность к регистру при обработке логина пользователя.
|
||||
- true - Login и login, обрабатываются как разные логины.
|
||||
- false - Login и login, обрабатывается как один и тот же логин.
|
||||
- `webbpm.db.pool_size`. Нужен только для `webbpm.mode` = development.
|
||||
- `webbpm.mode`. Режим работы приложения. Значения - development, production.
|
||||
- development - в этом режиме используется соединение к БД проекта, заданное в Studio.
|
||||
- production - в этом режиме используется соединение к БД проекта, заданное с помощью jndi имени.
|
||||
|
||||
## Модуль BPMN
|
||||
|
||||
```bpmn.enable``` - по умолчанию true, отвечает за создание бинов использующих модуль bpmn (при флаге false можно убрать зависимости модуля, смотри **docs/ru/developer-guide/Отключение_bpmn_модуля.md**)
|
||||
|
||||
Пример:
|
||||
```xml
|
||||
<property name="bpmn.enable" value="false"/>
|
||||
|
|
@ -54,211 +47,29 @@
|
|||
<property name="webbpm.jbpm.runtime_strategy" value="PER_PROCESS_INSTANCE"/>
|
||||
```
|
||||
|
||||
## Способ аутентификации
|
||||
## Способы авторизации:
|
||||
|
||||
- authentication.method - способ аутентификации. Поддерживаемые способы аутентификации: form, kerberos, cert_over_db, cert_over_ldap
|
||||
- По Jwt токену, указанному в заголовке Authorization
|
||||
|
||||
### По логину и паролю
|
||||
### Настройка авторизации по JWT
|
||||
|
||||
Пример конфигурации:
|
||||
По умолчанию все верификации токена отключены. Для того, чтобы нстроить авторизацию, следует использовать
|
||||
следующие переменные среды:
|
||||
|
||||
```xml
|
||||
<property name="authentication.method" value="form"/>
|
||||
```
|
||||
| Название переменной | Тип | Описание | Пример | Значение по умолчанию |
|
||||
|------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------|---------------------|-----------------------|
|
||||
| security.jwt.validation.enable | boolean | Включает базовую верификацию токена, включающее в себя поле exp. | true | false |
|
||||
| security.jwt.validation.issuer | String | Включает верификацию по issuer, включается только при security.jwt.validation.enable = true. При пустом значении не верифицируется. | https://example.com | null |
|
||||
| security.jwt.validation.public_key | String(base64) | Включает верификацию по ключу, включается только при security.jwt.validation.enable = true. При пустом значении не верифицируется. | ZGFzaGJvYXJk | null |
|
||||
| security.roles.allowed | String[] | Включает авторизацию по ролям. В случае, если пользователь не имеет ни одной указанной роли, доступ к ресурсам отклоняется | role1,role2,role3 | null |
|
||||
|
||||
### По сертификату
|
||||
## Настройка MFe:
|
||||
|
||||
- cert_over_db - проверка наличия пользователя в базе данных безопасности
|
||||
- cert_over_ldap - проверка наличия пользователя в базе данных безопасности и в LDAP
|
||||
Собранный образ фронтенда имеет возможность работать как полноценное standalone приложение, так и как удалённый модуль MFe. Для настройки Mfe следует указать следующие переменные:
|
||||
|
||||
Примеры:
|
||||
* MFE_BASE_URL - указывается frontend/.env, либо в переменных среды сборки приложения. При изменении переменной приложение надо пересобирать. По умолчанию /mfe/account-applications
|
||||
* backend.url - если необходимо настроить url бэкенда, его можно указать в frontend/src/resources/app.config.json
|
||||
|
||||
```xml
|
||||
<property name="authentication.method" value="cert_over_db"/>
|
||||
<property name="authentication.method" value="cert_over_ldap"/>
|
||||
```
|
||||
|
||||
Параметр способа аутентификации authentication.method должен быть также установлен на клиентской части приложения в app-config.json
|
||||
|
||||
Также для аутентификации по сертификату нужны свойства для хранилища сертификатов:
|
||||
|
||||
- certificate.keystore.location - путь до java key store. Key store - это хранилище доверенных сертификатов, с помощью которых можно проверить корневой сертификат. Сертификат устанавливается с помощью команды:
|
||||
|
||||
```text
|
||||
keytool -importcert -alias myAlias -file Example.cer -keystore exampleKeyStore
|
||||
```
|
||||
|
||||
- certificate.keystore.password - пароль для keystore, установленный при импорте сертификата
|
||||
|
||||
Примеры:
|
||||
|
||||
```xml
|
||||
<property name="certificate.keystore.location" value="${jboss.home.dir}/mfc"/>
|
||||
<property name="certificate.keystore.password" value="mfc_auth"/>
|
||||
```
|
||||
|
||||
### Kerberos
|
||||
|
||||
Получите от администратора Kerberos .keytab файл, из которого командой `klist -k http.keytab` можно получить список principal-ов
|
||||
Проверить успешность авторизации principal-а можно командой `kinit -t -i http.keytab %principal%`.
|
||||
В
|
||||
случае успешной авторизации команда `klist` в качестве default principal которым проводилась авторизация.
|
||||
После этого в standalone.xml поправить параметр `app.service-principal` на principal, которым успешно авторизовались. principal имеет формат: `HTTP/%hostname%@%REALM%`
|
||||
|
||||
Пример конфигурации:
|
||||
|
||||
```xml
|
||||
<property name="app.service-principal" value="HTTP/oleg-rxserver.alt.dom@ALT.DOM"/>
|
||||
<property name="app.keytab-location" value="${jboss.home.dir}/http.keytab"/>
|
||||
<property name="authentication.method" value="kerberos"/>
|
||||
```
|
||||
|
||||
- app.service-principal. Пример - HTTP/oleg-rxserver.alt.dom@ALT.DOM
|
||||
- app.keytab-location - расположение keytab файла. Пример - ${jboss.home.dir}/
|
||||
- http.keytab.
|
||||
|
||||
Также необходимо в настройках браузера на клиенте задать параметр `network.negotiate-auth.trusted-uris` задать значение `.%domain%`.
|
||||
Пример:
|
||||
|
||||
```xml
|
||||
.ALT.DOM
|
||||
```
|
||||
|
||||
### Ldap
|
||||
|
||||
Аутентификация происходит посредством логина и пароля синхронизированного пользователя Ldap.
|
||||
Логин и пароль введенные в форму входа, будут проверены сервисом Ldap.
|
||||
|
||||
Пример конфигурации:
|
||||
|
||||
```xml
|
||||
<property name="ldap.url" value="ldap://localhost:389"/>
|
||||
<property name="ldap.base" value="dc=example,dc=org"/>
|
||||
<property name="ldap.username" value="cn=admin,dc=example,dc=org"/>
|
||||
<property name="ldap.password" value="admin"/>
|
||||
<property name="authentication.method" value="form"/>
|
||||
```
|
||||
|
||||
#### Настройка сервера приложений для работы с Kerberos
|
||||
|
||||
1. создать учетные записи в домене:
|
||||
|
||||
- тестовые для проверки работоспособности функционала (пользователи домена, почтовые ящики):
|
||||
|
||||
`User1 pass1 user1@example.com`
|
||||
|
||||
`User2 pass2 user2@example.com`
|
||||
|
||||
- сервисную для доступа сервиса(приложения) к MS AD - (пользователь домена - снять устаревание пароля, ограничение по времени действия, почтовый ящик):
|
||||
|
||||
`serviceUser servicePass serviceuser@example.com`
|
||||
|
||||
---
|
||||
|
||||
2. завести учетную запись машины `appserver.machine.name` (fqdn-имя сервиса) в AD (вручную, как запись в computer) и в DNS (A-запись)
|
||||
|
||||
`appserver.machine.name 10.250.216.91`
|
||||
|
||||
3. сгенерировать keytab (утилита ktpass) для аутентификации сервисов(приложения) для единой точки входа - `serviceUser` - с именем test.file.name.keytab - привязав к ней пользователя serviceUser
|
||||
|
||||
например, так:
|
||||
|
||||
```
|
||||
ktpass -princ http/appserverMachineName.example.com@example.com -mapuser example.com\serviceUser -pass "пароль_уз_serviceUser" -crypto All -ptype KRB5_NT_PRINCIPAL -out "путь_к_директории_выгрузки_файла\test.file.name.keytab"
|
||||
```
|
||||
|
||||
##### Kerberos FAQ
|
||||
|
||||
- В случае, если авторизация не проходит и в логах сервера приложений присутствует следующий вывод:
|
||||
|
||||
```
|
||||
2019-05-14 05:33:36,588 INFO [security.controller.KerberosAuthenticationController] (default task-3) Authentication request header Authorization not exists
|
||||
2019-05-14 05:33:36,588 INFO [security.controller.KerberosAuthenticationController] (default task-3) Authentication object is not presented
|
||||
```
|
||||
|
||||
необходимо проверить настройку браузера firefox `network.negotiate-auth.trusted-uris`, она должна соответствовать домену из principal-а.
|
||||
Для этого в поисковую строку браузера вводим "about:config", в открывшемся окне нажимаем "accept with risk and continue", в поисковой строке открывшейся страницы ввести `network.negotiate-auth.trusted-uris`.
|
||||
Пример: для principal-а `HTTP/oleg-rxserver.alt.dom@ALT.DOM` настройка в браузере должна быть `.alt.dom`, приложение в браузере должно открываться по `http:\\oleg-rxserver.alt.dom:8080\...`
|
||||
|
||||
- если в логах сервера приложений есть ошибка:
|
||||
|
||||
```xml
|
||||
2019-05-13 14:13:07,095 WARN [org.springframework.security.kerberos.web.authentication.SpnegoAuthenticationProcessingFilter] (default task-1) Negotiate Header was invalid: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGNFAAAADw==: org.springframework.security.authentication.BadCredentialsException: Kerberos validation not successful
|
||||
...
|
||||
|
||||
Caused by: java.security.PrivilegedActionException: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag)
|
||||
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_211]
|
||||
at javax.security.auth.Subject.doAs(Subject.java:422) [rt.jar:1.8.0_211]
|
||||
at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator.validateTicket(SunJaasKerberosTicketValidator.java:68) [spring-security-kerberos-core-1.0.1.RELEASE.jar:1.0.1.RELEASE]
|
||||
... 66 more
|
||||
Caused by: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag)
|
||||
at sun.security.jgss.GSSHeader.(GSSHeader.java:97) [rt.jar:1.8.0_211]
|
||||
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:306) [rt.jar:1.8.0_211]
|
||||
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285) [rt.jar:1.8.0_211]
|
||||
at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidatorKerberosValidateAction.run(SunJaasKerberosTicketValidator.java:170) [spring-security-kerberos-core-1.0.1.RELEASE.jar:1.0.1.RELEASE]
|
||||
at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidatorKerberosValidateAction.run(SunJaasKerberosTicketValidator.java:153) [spring-security-kerberos-core-1.0.1.RELEASE.jar:1.0.1.RELEASE]
|
||||
... 69 more
|
||||
```
|
||||
|
||||
необходимо проверить правильность указанного в standalone.xml principal-а.
|
||||
|
||||
### Комбинации нескольких способов аутентификации
|
||||
|
||||
Приложение может обрабатывать запросы на несколько способов аутентификации. Для этого необходимо переичислить нужные профили через запятую.
|
||||
Примеры:
|
||||
|
||||
```xml
|
||||
<property name="authentication.method" value="form,cert_over_db"/>
|
||||
<property name="authentication.method" value="form,cert_over_ldap"/>
|
||||
<property name="authentication.method" value="kerberos,cert_over_db"/>
|
||||
<property name="authentication.method" value="kerberos,cert_over_ldap"/>
|
||||
```
|
||||
|
||||
### Время жизни токенов аутентификации
|
||||
|
||||
```xml
|
||||
<property name="webbpm.security.access_token.duration.minutes" value="60"/>
|
||||
<property name="webbpm.security.refresh_token.duration.days" value="30"/>
|
||||
<property name="webbpm.security.session.active.count" value="2"/>
|
||||
```
|
||||
|
||||
`webbpm.security.access_token.duration.minutes` - опциональный параметр (значение по умолчанию 60), время жизни в минутах, сколько будет действителен токен, после истечения этого времени токен будет обновлён `webbpm.security.refresh_token.duration.days` - опциональный параметр (значение по умолчанию 30), время жизни в днях, после истечения этого времени с последнего обновления, пользователю будет необходимо повторно войти `webbpm.security.session.active.count` - опциональный параметр (значение по умолчанию 1), количество сохраняемых в базу токенов обновления (количество активных сессий)
|
||||
|
||||
Примечания.
|
||||
|
||||
- Нельзя использовать одновременно профили cert_over_db c cert_over_ldap и kerberos с form.
|
||||
|
||||
## Синхронизация пользователей с LDAP
|
||||
|
||||
```xml
|
||||
<property name="ldap.auto.sync.enabled" value="true"/>
|
||||
<property name="ldap.synchronizer.cron" value="0 0 * * * *"/>
|
||||
<property name="ldap.url" value="ldap://localhost:389"/>
|
||||
<property name="ldap.base" value="dc=alt,dc=dom"/>
|
||||
<property name="ldap.username" value="uid=test,ou=People,dc=alt,dc=dom"/>
|
||||
<property name="ldap.password" value="password"/>
|
||||
<property name="webbpm.ldap.implementation" value="open-ldap"/>
|
||||
```
|
||||
|
||||
Настройки подключения к LDAP:
|
||||
|
||||
- `ldap.auto.sync.enabled` - включает/отключает автоматическую синхронизацию с LDAP
|
||||
- `ldap.synchronizer.cron` - cron расписание автоматической синхронизации с LDAP
|
||||
- `ldap.url`. Пример - ldap://localhost:389
|
||||
- `ldap.base`. Пример - dc=alt,dc=dom
|
||||
- `ldap.username`. Пример - uid=test,ou=People,dc=alt,dc=dom
|
||||
- `ldap.password`
|
||||
- `webbpm.ldap.implementation`. Допускается два значения: open-ldap и active-directory.
|
||||
|
||||
## WEBGUARD
|
||||
|
||||
Для синхронизации пользователей в WEBGUARD и для корректной работы админки необходимо указать настройки соединения к REST API WEBGUARD
|
||||
|
||||
```xml
|
||||
<property name="webguard.url" value="http://wg-host:8081/security-manager"/>
|
||||
<property name="webguard.user.login" value="wg-user"/>
|
||||
<property name="webguard.user.password" value="wg-password"/>
|
||||
```
|
||||
|
||||
## Статистика
|
||||
|
||||
|
|
|
|||
1
frontend/.env
Normal file
1
frontend/.env
Normal file
|
|
@ -0,0 +1 @@
|
|||
MFE_BASE_URL=/mfe/account-applications
|
||||
32
frontend/normalize-css-path.js
Normal file
32
frontend/normalize-css-path.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var fs = require('fs');
|
||||
var mfeBaseUrlKey = 'MFE_BASE_URL';
|
||||
var srcUrlRegex = /url\((\\?["'])?(?!data:)\S+(\\?["'])?\)/g;
|
||||
function normalizeCssPaths(params) {
|
||||
params.paths = params.paths ? params.paths : [];
|
||||
params.paths.forEach(function (path) { return normalizeCssPath(path, params.outDir); });
|
||||
}
|
||||
exports.normalizeCssPaths = normalizeCssPaths;
|
||||
function normalizeCssPath(path, outputDirectory) {
|
||||
console.log("Start processing " + path);
|
||||
var css = fs.readFileSync(path, 'utf8');
|
||||
var counter = 0;
|
||||
var processedCss = css.replace(srcUrlRegex, function (srcUrl) {
|
||||
if (srcUrl.search(outputDirectory) != -1)
|
||||
return srcUrl;
|
||||
var fileName = getFileName(srcUrl);
|
||||
var processedUrl = "url('" + outputDirectory + "/" + fileName + "')";
|
||||
counter++;
|
||||
console.log("Replaced " + srcUrl + " -> " + processedUrl);
|
||||
return processedUrl;
|
||||
});
|
||||
console.log("Replaced " + counter + " urls");
|
||||
fs.writeFileSync(path, processedCss);
|
||||
}
|
||||
function getFileName(srcUrl) {
|
||||
var url = srcUrl.substring(4, srcUrl.length - 1); // unbox 'url(...)'
|
||||
url = url.replace(/(\\?["'])/g, '');
|
||||
var urlPaths = url.split('/');
|
||||
return urlPaths[urlPaths.length - 1].split('?')[0];
|
||||
}
|
||||
33
frontend/normalize-css-path.ts
Normal file
33
frontend/normalize-css-path.ts
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
const fs = require('fs');
|
||||
|
||||
const srcUrlRegex = /url\((\\?["'])?(?!data:)\S+(\\?["'])?\)/g;
|
||||
|
||||
export function normalizeCssPaths(params: {paths: string[], outDir: string}) {
|
||||
params.paths = params.paths ? params.paths : [];
|
||||
params.paths.forEach(path => normalizeCssPath(path, params.outDir));
|
||||
}
|
||||
|
||||
function normalizeCssPath(path: string, outputDirectory: string) {
|
||||
console.log(`Start processing ${path}`);
|
||||
const css: string = fs.readFileSync(path, 'utf8');
|
||||
let counter = 0;
|
||||
|
||||
const processedCss = css.replace(srcUrlRegex, (srcUrl: string) => {
|
||||
if (srcUrl.search(outputDirectory) != -1) return srcUrl;
|
||||
|
||||
let fileName = getFileName(srcUrl);
|
||||
let processedUrl = `url('${outputDirectory}/${fileName}')`;
|
||||
counter++;
|
||||
console.log(`Replaced ${srcUrl} -> ${processedUrl}`);
|
||||
return processedUrl;
|
||||
});
|
||||
console.log(`Replaced ${counter} urls`);
|
||||
fs.writeFileSync(path, processedCss);
|
||||
}
|
||||
|
||||
function getFileName(srcUrl: string): string {
|
||||
let url = srcUrl.substring(4, srcUrl.length - 1); // unbox 'url(...)'
|
||||
url = url.replace(/(\\?["'])/g, '');
|
||||
let urlPaths = url.split('/');
|
||||
return urlPaths[urlPaths.length - 1].split('?')[0];
|
||||
}
|
||||
32
frontend/package-lock.json
generated
32
frontend/package-lock.json
generated
|
|
@ -3276,6 +3276,38 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "16.4.7",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/dotenv/-/dotenv-16.4.7.tgz",
|
||||
"integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
|
||||
"dev": true
|
||||
},
|
||||
"dotenv-defaults": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz",
|
||||
"integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"dotenv": "^8.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": {
|
||||
"version": "8.6.0",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/dotenv/-/dotenv-8.6.0.tgz",
|
||||
"integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"dotenv-webpack": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/dotenv-webpack/-/dotenv-webpack-8.1.0.tgz",
|
||||
"integrity": "sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"dotenv-defaults": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"downloadjs": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/downloadjs/-/downloadjs-1.4.8.tgz",
|
||||
|
|
|
|||
|
|
@ -85,6 +85,8 @@
|
|||
"cross-env": "5.2.1",
|
||||
"css-loader": "6.11.0",
|
||||
"del": "2.2.2",
|
||||
"dotenv": "^16.4.5",
|
||||
"dotenv-webpack": "^8.1.0",
|
||||
"file-loader": "6.2.0",
|
||||
"html-webpack-plugin": "5.6.0",
|
||||
"mini-css-extract-plugin": "2.9.1",
|
||||
|
|
|
|||
41
frontend/src/resources/css/font-faces.css
Normal file
41
frontend/src/resources/css/font-faces.css
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* @font-face from bootstrap-icons
|
||||
*/
|
||||
@font-face {
|
||||
font-display: block;
|
||||
font-family: "bootstrap-icons";
|
||||
src: url("../../../node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff2"),
|
||||
url("../../../node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff");
|
||||
}
|
||||
|
||||
/*
|
||||
* @font-face from font-awesome
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
src: url('../../../node_modules/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0');
|
||||
src: url('../../../node_modules/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),
|
||||
url('../../../node_modules/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),
|
||||
url('../../../node_modules/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),
|
||||
url('../../../node_modules/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),
|
||||
url('../../../node_modules/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Golos';
|
||||
src: url('../fonts/golos-regular.ttf');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'GolosM';
|
||||
src: url('../fonts/golos-medium.ttf');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'GolosUI';
|
||||
src: url('../fonts/golos-ul-regular.ttf');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'GolosUIM';
|
||||
src: url('../fonts/golos-ul-medium.ttf');
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<div *ngIf="(currentSession | async)?.authorities.includes('USER_MANAGEMENT.USER.LIST') ||
|
||||
(currentSession | async)?.authorities.includes('USER_MANAGEMENT.GROUP.LIST') ||
|
||||
(currentSession | async)?.authorities.includes('USER_MANAGEMENT.ROLE.LIST') ||
|
||||
(currentSession | async)?.authorities.includes('USER_MANAGEMENT.ORG_UNIT.LIST') ||
|
||||
(currentSession | async)?.authorities.includes('USER_MANAGEMENT.AUTHORITY.LIST')" ngbDropdown class="nav-item" [placement]="placement">
|
||||
<button class="nav-link bi bi-gear-fill" id="adminDropdownMenu" ngbDropdownToggle title="Администрирование"></button>
|
||||
<div ngbDropdownMenu aria-labelledby="adminDropdownMenu">
|
||||
<button *ngIf="(currentSession | async)?.authorities.includes('USER_MANAGEMENT.USER.LIST')"
|
||||
routerLink="/user-management/users" ngbDropdownItem>
|
||||
Пользователи
|
||||
</button>
|
||||
<button *ngIf="(currentSession | async)?.authorities.includes('USER_MANAGEMENT.GROUP.LIST')"
|
||||
routerLink="/user-management/groups" ngbDropdownItem>
|
||||
Группы
|
||||
</button>
|
||||
<button *ngIf="(currentSession | async)?.authorities.includes('USER_MANAGEMENT.ROLE.LIST')"
|
||||
routerLink="/user-management/roles" ngbDropdownItem>
|
||||
Роли
|
||||
</button>
|
||||
<button *ngIf="(currentSession | async)?.authorities.includes('USER_MANAGEMENT.ORG_UNIT.LIST')"
|
||||
routerLink="/user-management/org-units" ngbDropdownItem>
|
||||
Организации
|
||||
</button>
|
||||
<button *ngIf="(currentSession | async)?.authorities.includes('USER_MANAGEMENT.AUTHORITY.LIST')"
|
||||
routerLink="/user-management/authorities" ngbDropdownItem>
|
||||
Безопасность действий
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,11 +1,7 @@
|
|||
<nav class="header" *ngIf="currentSession | async as session" id="webbpm-header">
|
||||
<nav class="header" id="webbpm-header">
|
||||
<div class="header-logo">
|
||||
<div class="logo"><a routerLink="/"></a></div>
|
||||
<div class="main-page">ЦЕНТРАЛИЗОВАННОЕ УПРАВЛЕНИЕ УЧЕТНЫМИ ЗАПИСЯМИ</div>
|
||||
</div>
|
||||
<div class="header-menu">
|
||||
<admin-menu [placement]="'bottom'"></admin-menu>
|
||||
<div ngbDropdown class="logout" log-out></div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
<div class="confirm">
|
||||
<div class="form-logo">
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div>
|
||||
<h2>Подтверждение почты</h2>
|
||||
|
||||
<div *ngIf="verificationStatus.toString() === 'VERIFYING'">
|
||||
Подтверждение...
|
||||
</div>
|
||||
<div *ngIf="verificationStatus.toString() === 'VERIFIED'">
|
||||
<div class="alert alert-success">
|
||||
Адрес электронной почты успешно подтвержден
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="verificationStatus.toString() === 'FAILED'">
|
||||
<div class="alert alert-danger">{{ errorMessage }}</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="(currentSession | async) == null">
|
||||
<a href="#/login"><span class="fa fa-lock"></span>Войти</a><br/>
|
||||
<a href="#/registration">Зарегистрироваться</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<button class="nav-link bi bi-person-fill" ngbDropdownToggle title="Пользователь"></button>
|
||||
<div ngbDropdownMenu *ngIf="currentSession | async as session">
|
||||
<div class="user-info">
|
||||
<div class="user-fio">{{session.fullUserName}}</div>
|
||||
<div class="user-login">{{session.username}}</div>
|
||||
<div class="user-department">{{getOrgUnitName()}}</div>
|
||||
</div>
|
||||
<button ngbDropdownItem *ngIf="isLogoutButtonVisible()" (click)="logout()">Выход</button>
|
||||
</div>
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
<div class="form-signin">
|
||||
<form #formComponent="ngForm">
|
||||
<div class="alert alert-success" [hidden]="!confirmationSent">На ваш почтовый адрес было отправлено письмо. Подтвердите почту, чтобы войти в систему
|
||||
</div>
|
||||
<div class="alert alert-danger" [hidden]="!errorMessage">{{errorMessage}}</div>
|
||||
|
||||
<div class="logo">
|
||||
<h2>ЦЕНТРАЛИЗОВАННОЕ УПРАВЛЕНИЕ<br />УЧЕТНЫМИ ЗАПИСЯМИ</h2>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<input type="text" name="username" class="form-control" placeholder=" " required autofocus [(ngModel)]="username" maxlength="100">
|
||||
<label>Логин</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="input-group">
|
||||
<input
|
||||
[type]="passwordType ? 'text' : 'password'"
|
||||
name="password"
|
||||
class="form-control field-password-view"
|
||||
placeholder=" " required
|
||||
[(ngModel)]="password"
|
||||
maxlength="100"
|
||||
>
|
||||
<label>Пароль</label>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">
|
||||
<i
|
||||
(click)="togglePasswordType()"
|
||||
class="fa"
|
||||
[ngClass]="{
|
||||
'fa-eye': passwordType,
|
||||
'fa-eye-slash': !passwordType
|
||||
}"
|
||||
></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="msg-text"><a href="#/reset-password">Восстановить пароль</a></div>-->
|
||||
</div>
|
||||
<div class="btn-box">
|
||||
<!--<esia-login-button></esia-login-button>-->
|
||||
<button type="submit" class="btn btn-primary" (click)="formComponent.form.valid && login()">Войти</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
<div class="form-signup">
|
||||
<div class="form-logo">
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="form-new-password">
|
||||
<form #formComponent="ngForm">
|
||||
<div [hidden]="!errorMessage" class="alert alert-danger">{{ errorMessage }}</div>
|
||||
<p class="has-account">Вспомнили пароль?
|
||||
<a href="#/login"><span class="fa fa-lock"></span>Войти</a></p>
|
||||
|
||||
<p class="has-account">Задайте новый пароль</p>
|
||||
|
||||
<div class="row">
|
||||
<label>Пароль</label>
|
||||
<div class="input-group">
|
||||
<input
|
||||
#passwordInput="ngModel"
|
||||
[(ngModel)]="password"
|
||||
[type]="passwordType ? 'text' : 'password'"
|
||||
class="form-control"
|
||||
maxlength="32"
|
||||
minlength="6"
|
||||
name="password"
|
||||
pattern="^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$"
|
||||
required
|
||||
(change)="validPasswords()"
|
||||
>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">
|
||||
<i
|
||||
(click)="togglePasswordType()"
|
||||
class="fa"
|
||||
[ngClass]="{
|
||||
'fa-eye': passwordType,
|
||||
'fa-eye-slash': !passwordType
|
||||
}"
|
||||
></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="passwordInput.invalid && (passwordInput.dirty || passwordInput.touched)">
|
||||
<div *ngIf="passwordInput.errors.required" class="msg-alert">Поле обязательно
|
||||
</div>
|
||||
<div *ngIf="passwordInput.errors.minlength" class="msg-alert">Пароль должен
|
||||
содержать как минимум 6 символов
|
||||
</div>
|
||||
<div *ngIf="passwordInput.errors.pattern" class="msg-alert">Пароль должен
|
||||
содержать заглавные и прописные буквы и как минимум 1 цифру
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label>Подтверждение пароля</label>
|
||||
<div class="input-group">
|
||||
<input
|
||||
#confirmPasswordInput="ngModel"
|
||||
[(ngModel)]="confirmPassword"
|
||||
[type]="confirmPasswordType ? 'text' : 'password'"
|
||||
class="form-control"
|
||||
maxlength="32"
|
||||
minlength="6"
|
||||
name="confirmPassword"
|
||||
pattern="^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$"
|
||||
required
|
||||
(change)="validPasswords()"
|
||||
>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">
|
||||
<i
|
||||
(click)="toggleConfirmPasswordType()"
|
||||
class="fa"
|
||||
[ngClass]="{
|
||||
'fa-eye': confirmPasswordType,
|
||||
'fa-eye-slash': !confirmPasswordType
|
||||
}"
|
||||
></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="confirmPasswordInput.invalid && (confirmPasswordInput.dirty || confirmPasswordInput.touched)">
|
||||
<div *ngIf="confirmPasswordInput.errors.required" class="msg-alert">Поле обязательно
|
||||
</div>
|
||||
<div *ngIf="confirmPasswordInput.errors.minlength" class="msg-alert">Пароль должен
|
||||
содержать как минимум 6 символов
|
||||
</div>
|
||||
<div *ngIf="confirmPasswordInput.errors.pattern" class="msg-alert">Пароль должен
|
||||
содержать заглавные и прописные буквы и как минимум 1 цифру
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="reset-password-btn-box">
|
||||
<button
|
||||
(click)="formComponent.form.valid && validPasswords() && changePassword()"
|
||||
[disabled]="!formComponent.form.valid && !validPasswords()"
|
||||
class="btn btn-primary"
|
||||
type="submit"
|
||||
>
|
||||
Изменить пароль
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,121 +0,0 @@
|
|||
<div class="form-signup">
|
||||
<div class="form-logo">
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="form-register">
|
||||
<form #formComponent="ngForm">
|
||||
<div [hidden]="!errorMessage" class="alert alert-danger">{{ errorMessage }}</div>
|
||||
<h2>Регистрация</h2>
|
||||
<p class="has-account">Уже зарегистрированы?
|
||||
<a href="#/login"><span class="fa fa-lock"></span>Войти</a></p>
|
||||
|
||||
<div class="row">
|
||||
<label>Имя</label>
|
||||
<input
|
||||
#name="ngModel"
|
||||
[(ngModel)]="username"
|
||||
class="form-control"
|
||||
maxlength="100"
|
||||
name="username"
|
||||
required
|
||||
type="text"
|
||||
>
|
||||
<div *ngIf="name.invalid && (name.dirty || name.touched)">
|
||||
<div *ngIf="name.errors.required" class="msg-alert">Поле обязательно</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label>Адрес эл. почты</label>
|
||||
<input
|
||||
#emailInput="ngModel"
|
||||
[(ngModel)]="email"
|
||||
class="form-control"
|
||||
email
|
||||
maxlength="100"
|
||||
name="email"
|
||||
required
|
||||
type="email"
|
||||
>
|
||||
<div *ngIf="emailInput.invalid && (emailInput.dirty || emailInput.touched)">
|
||||
<div *ngIf="emailInput.errors.required" class="msg-alert">Поле обязательно</div>
|
||||
<div *ngIf="emailInput.errors.email" class="msg-alert">Неверный формат адреса
|
||||
эл. почты
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label>Номер телефона</label>
|
||||
<international-phone-number
|
||||
#phoneInput="ngModel"
|
||||
[(ngModel)]="phoneNumber"
|
||||
[defaultCountry]="'ru'"
|
||||
[pattern]="'^\\+(?!7 ?\\d{11})[0-9 ]+$'"
|
||||
maxlength="20"
|
||||
minlength="8"
|
||||
name="phoneNumber"
|
||||
placeholder="+79991112233"
|
||||
(focusout)="phoneInputFocusOut()"
|
||||
required
|
||||
></international-phone-number>
|
||||
<div *ngIf="phoneInput.invalid && (phoneInput.dirty || phoneIsTouched)">
|
||||
<div *ngIf="phone.selectedCountry">
|
||||
<div *ngIf="phoneHasOnlyDialCode()" class="msg-alert">Поле обязательно</div>
|
||||
<div *ngIf="!phoneHasOnlyDialCode()" class="msg-alert">Введите корректный номер</div>
|
||||
</div>
|
||||
<div *ngIf="!phone.selectedCountry">
|
||||
<div *ngIf="phoneInput.errors.required" class="msg-alert">Поле обязательно</div>
|
||||
<div *ngIf="!phoneInput.errors.required" class="msg-alert">Введите код страны</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label>Пароль</label>
|
||||
<div class="input-group">
|
||||
<input
|
||||
#passwordInput="ngModel"
|
||||
[(ngModel)]="password"
|
||||
[type]="fieldType ? 'text' : 'password'"
|
||||
class="form-control"
|
||||
maxlength="32"
|
||||
minlength="8"
|
||||
name="password"
|
||||
[pattern]="passwordPattern"
|
||||
required
|
||||
>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">
|
||||
<i
|
||||
(click)="toggleFieldType()"
|
||||
class="fa"
|
||||
[ngClass]="{
|
||||
'fa-eye': fieldType,
|
||||
'fa-eye-slash': !fieldType
|
||||
}"
|
||||
></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="passwordInput.invalid && (passwordInput.dirty || passwordInput.touched)">
|
||||
<div *ngIf="passwordInput.errors.required" class="msg-alert">Поле обязательно
|
||||
</div>
|
||||
<div *ngIf="passwordInput.errors.minlength" class="msg-alert">Пароль должен
|
||||
содержать как минимум 8 символов
|
||||
</div>
|
||||
<div *ngIf="passwordInput.errors.pattern" class="msg-alert" [innerText]="passwordPatternErrorMessage">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="register-btn-box">
|
||||
<button
|
||||
(click)="formComponent.form.valid && register()"
|
||||
[disabled]="!formComponent.form.valid"
|
||||
class="btn btn-primary"
|
||||
type="submit"
|
||||
>
|
||||
Зарегистрироваться
|
||||
</button>
|
||||
</div>
|
||||
<div *ngIf="consent" [innerHTML]="consent" class="consent"></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
<div class="form-signup">
|
||||
<div class="form-logo">
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="form-reset-password">
|
||||
<form #formComponent="ngForm">
|
||||
<div [hidden]="!errorMessage" class="alert alert-danger">{{ errorMessage }}</div>
|
||||
<p class="has-account">Вспомнили пароль?
|
||||
<a href="#/login"><span class="fa fa-lock"></span>Войти</a></p>
|
||||
|
||||
<p class="has-account">Укажите адрес эл. почты, который был указан при регистрации,
|
||||
на него пришлем временный пароль. Пароль сможете поменять в личном кабинете.
|
||||
</p>
|
||||
|
||||
<div class="row">
|
||||
<input
|
||||
#emailInput="ngModel"
|
||||
[(ngModel)]="email"
|
||||
class="form-control"
|
||||
email
|
||||
maxlength="100"
|
||||
name="email"
|
||||
required
|
||||
type="email"
|
||||
>
|
||||
<label>Адрес эл. почты</label>
|
||||
<div *ngIf="emailInput.invalid && (emailInput.dirty || emailInput.touched)" class="msg-text">
|
||||
<div *ngIf="emailInput.errors.required" class="msg-alert">Поле обязательно</div>
|
||||
<div *ngIf="emailInput.errors.email" class="msg-alert">Неверный формат адреса эл. почты
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-box">
|
||||
<button
|
||||
(click)="formComponent.form.valid && resetPassword()"
|
||||
[disabled]="!formComponent.form.valid"
|
||||
class="btn btn-primary"
|
||||
type="submit"
|
||||
>
|
||||
Восстановить
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
39
frontend/src/resources/template/webbpm/jwt-form.html
Normal file
39
frontend/src/resources/template/webbpm/jwt-form.html
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<div class="form-signin">
|
||||
<form #formComponent="ngForm">
|
||||
<div class="row">
|
||||
<label>Имя</label>
|
||||
<div class="input-group">
|
||||
<input type="text" name="name" class="form-control" placeholder="Имя" required autofocus
|
||||
[(ngModel)]="name">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<label>Название подразделения</label>
|
||||
<div class="input-group">
|
||||
<input type="text" name="realm" class="form-control" placeholder="Название подразделения" required
|
||||
[(ngModel)]="realm">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<label>Роль</label>
|
||||
<div class="input-group">
|
||||
<input type="text" name="role" class="form-control" placeholder="Роль" required
|
||||
[(ngModel)]="role">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<label>Domain id</label>
|
||||
<div class="input-group">
|
||||
<input type="text" name="domain_id" class="form-control" placeholder="Id подразделения" required
|
||||
[(ngModel)]="domainId">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="login-btn-box">
|
||||
<button type="submit" class="btn btn-primary" (click)="enter()">Войти</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
14
frontend/src/resources/template/webbpm/mfe-webbpm.html
Normal file
14
frontend/src/resources/template/webbpm/mfe-webbpm.html
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<div webbpm class="webbpm account-applications">
|
||||
<div class="wrapper">
|
||||
<app-header *ngIf="headerVisible">
|
||||
</app-header>
|
||||
|
||||
<div class="container">
|
||||
<div class="container-inside" id="webbpm-angular-application-container">
|
||||
<router-outlet></router-outlet>
|
||||
</div>
|
||||
</div>
|
||||
<app-footer *ngIf="footerVisible">
|
||||
</app-footer>
|
||||
</div>
|
||||
</div>
|
||||
1
frontend/src/resources/template/webbpm/mfe-wrapper.html
Normal file
1
frontend/src/resources/template/webbpm/mfe-wrapper.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
<mfe-webbpm style="all: initial; display: block; height: 100vh"></mfe-webbpm>
|
||||
17
frontend/src/ts/account_applications/ErvuCheckUserRole.ts
Normal file
17
frontend/src/ts/account_applications/ErvuCheckUserRole.ts
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import {AnalyticalScope, Behavior, Source, Visible} from "@webbpm/base-package";
|
||||
import {AuthorizationService} from "../modules/app/service/authorization.service";
|
||||
|
||||
@AnalyticalScope(Behavior)
|
||||
export class ErvuCheckUserRole extends Behavior{
|
||||
private authService: AuthorizationService;
|
||||
|
||||
public initialize(): void {
|
||||
super.initialize();
|
||||
this.authService = this.injector.get(AuthorizationService);
|
||||
}
|
||||
|
||||
@Visible()
|
||||
public hasRole(@Source("roles") role: string): boolean {
|
||||
return this.authService.hasRole(role);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
import {AnalyticalScope, Behavior, TextField} from "@webbpm/base-package";
|
||||
import {AuthorizationService} from "../../modules/app/service/authorization.service";
|
||||
|
||||
@AnalyticalScope("TextField")
|
||||
export class SetCurrentRecruitmentIdAsDefValue extends Behavior {
|
||||
private textField: TextField;
|
||||
private authService: AuthorizationService;
|
||||
|
||||
initialize() {
|
||||
super.initialize();
|
||||
this.textField = this.getScript('component.ControlWithValue');
|
||||
this.authService = this.injector.get(AuthorizationService);
|
||||
}
|
||||
|
||||
start(): void {
|
||||
super.start();
|
||||
|
||||
if (this.textField && this.textField.isPristine() && this.authService &&
|
||||
this.authService.getCurrentSession()) {
|
||||
this.textField.setValue(this.authService.getDomainId());
|
||||
this.getContext().getChangeDetector().detectChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
import {AnalyticalScope, Behavior, SessionStore, TextField} from "@webbpm/base-package";
|
||||
|
||||
@AnalyticalScope("TextField")
|
||||
export class SetCurrentUserIdAsDefValue extends Behavior {
|
||||
private textField: TextField;
|
||||
private sessionStore: SessionStore;
|
||||
|
||||
|
||||
initialize() {
|
||||
super.initialize();
|
||||
this.textField = this.getScript('component.ControlWithValue');
|
||||
this.sessionStore = this.injector.get(SessionStore);
|
||||
}
|
||||
|
||||
start(): void {
|
||||
super.start();
|
||||
|
||||
if (this.textField && this.textField.isPristine() && this.sessionStore &&
|
||||
this.sessionStore.getSession()) {
|
||||
this.textField.setValue(this.sessionStore.getSession().userAccountId);
|
||||
this.getContext().getChangeDetector().detectChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
74
frontend/src/ts/mfe-app-tools.ts
Normal file
74
frontend/src/ts/mfe-app-tools.ts
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
import {platformBrowserDynamic} from "@angular/platform-browser-dynamic";
|
||||
import {MfeConfigurationProvider} from "./modules/mfe/provider/mfe-configuration.provider";
|
||||
import {NgModuleRef} from "@angular/core";
|
||||
|
||||
let childEventHandlerFromContainer = null;
|
||||
|
||||
export type ChildEventType = 'navigate' | 'token-request'
|
||||
export type ParentEventType = 'navigate';
|
||||
|
||||
export function fireMfeEventToContainer(eventType: ChildEventType, eventData: any): Promise<any> {
|
||||
if (typeof childEventHandlerFromContainer === 'function') {
|
||||
return childEventHandlerFromContainer(eventType, eventData);
|
||||
}
|
||||
else {
|
||||
throw new Error(
|
||||
'Event fired from child MFE to container before being bootstrapped as MFE App',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function bootstrapMfeApp(createApp: () => Promise<NgModuleRef<unknown> | void>) {
|
||||
function mount(
|
||||
element: HTMLElement,
|
||||
settings: {
|
||||
standalone: boolean,
|
||||
useShadowDom?: boolean,
|
||||
containerBaseUrl?: string,
|
||||
componentBaseUrl?: string,
|
||||
startUrl: string,
|
||||
childEventHandler?: any,
|
||||
params?: any
|
||||
} = {
|
||||
standalone: false,
|
||||
startUrl: '/mfe/account-applications'
|
||||
},
|
||||
) {
|
||||
let containerBaseUrl = settings.containerBaseUrl || ''; // префикс ресурса
|
||||
let startUrl = settings.startUrl || ''; // ресурс хост-приложения
|
||||
MfeConfigurationProvider.setPageBaseUrl(joinPath(containerBaseUrl, startUrl));
|
||||
|
||||
element.appendChild(createContainerForBootstrap())
|
||||
|
||||
childEventHandlerFromContainer = settings.childEventHandler;
|
||||
|
||||
createApp();
|
||||
return {
|
||||
parentEventHandler(eventType: ParentEventType, url: string) {
|
||||
},
|
||||
unmount() {
|
||||
console.log("Unmounting account-applications application");
|
||||
platformBrowserDynamic().destroy();
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
mount,
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
function createContainerForBootstrap(): HTMLElement {
|
||||
let mfeBootstrapContainer = document.createElement('div');
|
||||
mfeBootstrapContainer.setAttribute(MfeConfigurationProvider.BASE_COMPONENT_ATTRIBUTE, '');
|
||||
return mfeBootstrapContainer;
|
||||
}
|
||||
|
||||
export function joinPath(...paths: string[]): string {
|
||||
return '/' + paths
|
||||
.filter(path => path)
|
||||
.map(path => path.endsWith('/') ? path.substring(0, path.length - 1) : path)
|
||||
.map(path => path.startsWith('/') ? path.substring(1, path.length) : path)
|
||||
.join('/')
|
||||
}
|
||||
18
frontend/src/ts/mfe-main.aot.ts
Normal file
18
frontend/src/ts/mfe-main.aot.ts
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import 'zone.js/dist/zone';
|
||||
|
||||
import {enableProdMode} from "@angular/core";
|
||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||
import {bootstrapMfeApp} from './mfe-app-tools';
|
||||
// @ts-ignore
|
||||
import {MfeWebbpmModuleNgFactory} from "./modules/mfe/mfe-webbpm.module.ngfactory";
|
||||
|
||||
window['dev_mode'] = false;
|
||||
enableProdMode();
|
||||
|
||||
const mount = bootstrapMfeApp(() => {
|
||||
return platformBrowserDynamic()
|
||||
.bootstrapModuleFactory(MfeWebbpmModuleNgFactory)
|
||||
.catch((err) => console.error(err));
|
||||
}).mount;
|
||||
|
||||
export {mount};
|
||||
|
|
@ -1,70 +1,39 @@
|
|||
import {NgModule} from "@angular/core";
|
||||
import {RouterModule, Routes} from "@angular/router";
|
||||
import {AccessDeniedComponent} from "./component/access-denied.component";
|
||||
import {LoginComponent} from "./component/login.component";
|
||||
import {AuthenticationGuard, ConfirmExitGuard, SignedInGuard} from "@webbpm/base-package";
|
||||
import {RegisterComponent} from "./component/register.component";
|
||||
import {ConfirmUserEmailComponent} from "./component/confirm-user-email.component";
|
||||
import {ResetPasswordComponent} from "./component/reset-password.component";
|
||||
import {NewPasswordComponent} from "./component/new-password.component";
|
||||
import {ConfirmExitGuard} from "@webbpm/base-package";
|
||||
import {RolesGuard} from "./guard/RolesGuard";
|
||||
|
||||
|
||||
const appRoutes: Routes = [
|
||||
{
|
||||
path: 'login',
|
||||
component: LoginComponent,
|
||||
canActivate: [SignedInGuard]
|
||||
},
|
||||
{
|
||||
path: 'home',
|
||||
loadChildren: 'generated-sources/page-home.module#PagehomeModule',
|
||||
canActivate: [AuthenticationGuard, ConfirmExitGuard]
|
||||
canActivate: [ConfirmExitGuard, RolesGuard]
|
||||
},
|
||||
{
|
||||
path: 'app_list',
|
||||
loadChildren: 'generated-sources/page-app_list.module#Pageapp_listModule',
|
||||
canActivate: [AuthenticationGuard, ConfirmExitGuard]
|
||||
canActivate: [ConfirmExitGuard, RolesGuard]
|
||||
},
|
||||
{
|
||||
path: 'add_user_application',
|
||||
loadChildren: 'generated-sources/page-add_user_application.module#Pageadd_user_applicationModule',
|
||||
canActivate: [AuthenticationGuard, ConfirmExitGuard]
|
||||
canActivate: [ConfirmExitGuard, RolesGuard]
|
||||
},
|
||||
{
|
||||
path: 'edit_user_application',
|
||||
loadChildren: 'generated-sources/page-edit_user_application.module#Pageedit_user_applicationModule',
|
||||
canActivate: [AuthenticationGuard, ConfirmExitGuard]
|
||||
canActivate: [ConfirmExitGuard, RolesGuard]
|
||||
},
|
||||
{
|
||||
path: 'block_user_application',
|
||||
loadChildren: 'generated-sources/page-block_user_application.module#Pageblock_user_applicationModule',
|
||||
canActivate: [AuthenticationGuard, ConfirmExitGuard]
|
||||
canActivate: [ConfirmExitGuard, RolesGuard]
|
||||
},
|
||||
{
|
||||
path: 'process_application/:id',
|
||||
loadChildren: 'generated-sources/page-process_application.module#Pageprocess_applicationModule',
|
||||
canActivate: [AuthenticationGuard, ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'access-denied',
|
||||
component: AccessDeniedComponent,
|
||||
canActivate: [AuthenticationGuard, ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'registration',
|
||||
component: RegisterComponent,
|
||||
canActivate: [SignedInGuard]
|
||||
},
|
||||
{
|
||||
path: 'confirm',
|
||||
component: ConfirmUserEmailComponent
|
||||
},
|
||||
{
|
||||
path: 'reset-password',
|
||||
component: ResetPasswordComponent
|
||||
},
|
||||
{
|
||||
path: 'new-password',
|
||||
component: NewPasswordComponent
|
||||
canActivate: [ConfirmExitGuard, RolesGuard]
|
||||
}
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -11,23 +11,16 @@ import {
|
|||
ProgressIndicationService,
|
||||
SecurityModule
|
||||
} from "@webbpm/base-package";
|
||||
import {AdminMenuComponent} from "./component/admin-menu.component";
|
||||
import {AppHeaderComponent} from "./component/app-header.component";
|
||||
import {AppFooterComponent} from "./component/app-footer.component";
|
||||
import {LogOutComponent} from "./component/logout.component";
|
||||
import {LoginComponent} from "./component/login.component";
|
||||
import {AccessDeniedComponent} from "./component/access-denied.component";
|
||||
import {ApplicationVersionComponent} from "./component/application-version.component";
|
||||
import {RouterModule} from "@angular/router";
|
||||
import {RegisterComponent} from "./component/register.component";
|
||||
import {ConfirmUserEmailComponent} from "./component/confirm-user-email.component";
|
||||
import {InternationalPhoneNumberModule} from "ngx-international-phone-number";
|
||||
import {ResetPasswordComponent} from "./component/reset-password.component";
|
||||
import {NewPasswordComponent} from "./component/new-password.component";
|
||||
import {AppProgressIndicationComponent} from "./component/app-progress-indication.component";
|
||||
import {AppProgressIndicationService} from "./service/app-progress-indication.service";
|
||||
import {VBoxLoadValues} from "../../account_applications/component/container/VBoxLoadValues";
|
||||
import {ErvuAccountTextFieldGridEditor} from "../../account_applications/component/editablegrid/editors/ErvuAccountTextFieldGridEditor";
|
||||
import {TokenInterceptor} from "./interceptor/token.interceptor.service";
|
||||
import {DropdownTreeViewComponent}from "../../account_applications/component/field/DropdownTreeViewComponent";
|
||||
import {DropdownTreeviewSelectComponent} from "../../account_applications/component/external/ngx-treeview/dropdown-treeview-select/dropdown-treeview-select.component";
|
||||
import {TreeviewModule} from "ngx-treeview";
|
||||
|
|
@ -36,15 +29,7 @@ registerLocaleData(localeRu);
|
|||
export const DIRECTIVES = [
|
||||
forwardRef(() => AppHeaderComponent),
|
||||
forwardRef(() => AppFooterComponent),
|
||||
forwardRef(() => AdminMenuComponent),
|
||||
forwardRef(() => ApplicationVersionComponent),
|
||||
forwardRef(() => LogOutComponent),
|
||||
forwardRef(() => LoginComponent),
|
||||
forwardRef(() => AccessDeniedComponent),
|
||||
forwardRef(() => RegisterComponent),
|
||||
forwardRef(() => ConfirmUserEmailComponent),
|
||||
forwardRef(() => ResetPasswordComponent),
|
||||
forwardRef(() => NewPasswordComponent),
|
||||
forwardRef(() => AppProgressIndicationComponent),
|
||||
forwardRef(() => VBoxLoadValues),
|
||||
forwardRef(() => DropdownTreeViewComponent),
|
||||
|
|
@ -73,7 +58,8 @@ export const DIRECTIVES = [
|
|||
DIRECTIVES
|
||||
],
|
||||
providers: [
|
||||
{ provide: ProgressIndicationService, useClass: AppProgressIndicationService }
|
||||
TokenInterceptor,
|
||||
{provide: ProgressIndicationService, useClass: AppProgressIndicationService }
|
||||
],
|
||||
bootstrap: [],
|
||||
entryComponents: [AppProgressIndicationComponent]
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
import {ChangeDetectionStrategy, Component, Input} from "@angular/core";
|
||||
import {UserService, Session} from "@webbpm/base-package";
|
||||
import {NgbDropdownConfig, Placement} from "@ng-bootstrap/ng-bootstrap";
|
||||
import {Observable} from "rxjs";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: 'admin-menu',
|
||||
templateUrl: '../../../../../src/resources/template/app/component/admin_menu.html',
|
||||
providers: [NgbDropdownConfig],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class AdminMenuComponent {
|
||||
|
||||
@Input()
|
||||
public placement: Placement = 'bottom';
|
||||
public currentSession: Observable<Session>;
|
||||
|
||||
constructor(protected userService: UserService, public config: NgbDropdownConfig) {
|
||||
this.config.placement = this.placement;
|
||||
this.currentSession = this.userService.getCurrentSession();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,5 @@
|
|||
import {ChangeDetectionStrategy, Component} from "@angular/core";
|
||||
import {Router} from "@angular/router";
|
||||
import {UserService, Session} from "@webbpm/base-package";
|
||||
import {Observable} from "rxjs";
|
||||
import {ChangeDetectionStrategy, ChangeDetectorRef, Component} from "@angular/core";
|
||||
import {AuthorizationService} from "../service/authorization.service";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
|
|
@ -11,10 +9,16 @@ import {Observable} from "rxjs";
|
|||
})
|
||||
export class AppHeaderComponent {
|
||||
|
||||
public currentSession: Observable<Session>;
|
||||
name: string;
|
||||
realm: string;
|
||||
|
||||
constructor(protected userService: UserService,
|
||||
protected router: Router) {
|
||||
this.currentSession = this.userService.getCurrentSession();
|
||||
constructor(protected authService: AuthorizationService,
|
||||
protected cd: ChangeDetectorRef) {
|
||||
authService.onSessionUpdate
|
||||
.subscribe(session => {
|
||||
this.name = session.name;
|
||||
this.realm = session.realm;
|
||||
cd.markForCheck()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,51 +0,0 @@
|
|||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input} from "@angular/core";
|
||||
import {Session, UserService} from "@webbpm/base-package";
|
||||
import {Observable} from "rxjs";
|
||||
|
||||
enum VerificationStatus {
|
||||
VERIFYING = "VERIFYING",
|
||||
VERIFIED = "VERIFIED",
|
||||
FAILED = "FAILED"
|
||||
}
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: "confirm",
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
templateUrl: "../../../../../src/resources/template/app/component/confirm-user-email.html"
|
||||
})
|
||||
export class ConfirmUserEmailComponent {
|
||||
public verificationStatus = VerificationStatus.VERIFYING;
|
||||
public currentSession: Observable<Session>;
|
||||
|
||||
@Input()
|
||||
public errorMessage: string;
|
||||
|
||||
constructor(private router: Router, private userService: UserService,
|
||||
private route: ActivatedRoute, private cd: ChangeDetectorRef) {
|
||||
this.currentSession = this.userService.getCurrentSession();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
const link: string = this.route.snapshot.queryParamMap.get("link");
|
||||
// remove link from url to prevent http referer leakage
|
||||
this.router.navigate([], { relativeTo: this.route, replaceUrl: true });
|
||||
this.userService.confirm(
|
||||
link,
|
||||
(reason) => {
|
||||
this.verificationStatus = VerificationStatus.FAILED;
|
||||
if (reason.status === 404) {
|
||||
this.errorMessage = 'Ссылка недействительна. Требуется повторная регистрация.';
|
||||
}
|
||||
else {
|
||||
this.errorMessage = 'Произошла ошибка, обратитесь в службу технической поддержки!';
|
||||
}
|
||||
this.cd.markForCheck();
|
||||
})
|
||||
.then(() => {
|
||||
this.verificationStatus = VerificationStatus.VERIFIED;
|
||||
this.cd.markForCheck();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
import {Component, Input} from "@angular/core";
|
||||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {UserService, Credentials} from "@webbpm/base-package";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: "login",
|
||||
templateUrl: "../../../../../src/resources/template/app/component/login.html"
|
||||
})
|
||||
export class LoginComponent {
|
||||
|
||||
@Input()
|
||||
public username: string;
|
||||
|
||||
@Input()
|
||||
public password: string;
|
||||
public passwordType: boolean;
|
||||
|
||||
@Input()
|
||||
public errorMessage: string;
|
||||
|
||||
@Input()
|
||||
public confirmationSent: boolean;
|
||||
|
||||
constructor(private router: Router, private userService: UserService,
|
||||
private route: ActivatedRoute) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.confirmationSent = this.route.snapshot.queryParamMap.get('confirmationSent') === 'true';
|
||||
this.router.navigate([], { relativeTo: this.route, replaceUrl: true });
|
||||
}
|
||||
|
||||
public login(): void {
|
||||
let credentials: Credentials = new Credentials();
|
||||
credentials.username = this.username;
|
||||
credentials.password = this.password;
|
||||
|
||||
this.userService.login(credentials, "Password")
|
||||
.then(() => this.router.navigateByUrl("/"),
|
||||
(reason: any) => {
|
||||
switch (reason.status) {
|
||||
case 401: {
|
||||
this.errorMessage = "Неправильный логин или пароль";
|
||||
break;
|
||||
}
|
||||
case 404: {
|
||||
this.errorMessage = "Приложение стартует. Пожалуйста, подождите...";
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
this.errorMessage =
|
||||
"Произошла неизвестная ошибка, обратитесь в службу технической поддержки!";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public goToRegister(): void {
|
||||
this.router.navigateByUrl("/register");
|
||||
}
|
||||
|
||||
togglePasswordType(): void {
|
||||
this.passwordType = !this.passwordType;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
import {Component} from "@angular/core";
|
||||
import {UserService, Session, AuthenticationMethodService} from "@webbpm/base-package";
|
||||
import {Observable} from "rxjs";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: "[log-out]",
|
||||
templateUrl: "../../../../../src/resources/template/app/component/log_out.html"
|
||||
})
|
||||
export class LogOutComponent {
|
||||
|
||||
public currentSession: Observable<Session>;
|
||||
|
||||
constructor(private userService: UserService, private authenticationMethodService: AuthenticationMethodService) {
|
||||
this.currentSession = userService.getCurrentSession();
|
||||
}
|
||||
|
||||
public logout(): void {
|
||||
this.userService.logout();
|
||||
}
|
||||
|
||||
public getCurrentUserName(): string {
|
||||
return this.userService.getCurrentUserName();
|
||||
}
|
||||
|
||||
public getFullUserName(): string {
|
||||
return this.userService.getFullUserName();
|
||||
}
|
||||
|
||||
public isLogoutButtonVisible(): boolean {
|
||||
return this.authenticationMethodService.isFormAuth();
|
||||
}
|
||||
|
||||
public getOrgUnitName(): string {
|
||||
return this.userService.getOrgUnitName();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
import {ActivatedRoute, Router} from "@angular/router";
|
||||
import {Component, Input} from "@angular/core";
|
||||
import {Session, UserPasswordResetRequestDto, UserService} from "@webbpm/base-package";
|
||||
import {Observable} from "rxjs";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: "newPassword",
|
||||
templateUrl: "../../../../../src/resources/template/app/component/new_password.html"
|
||||
})
|
||||
export class NewPasswordComponent {
|
||||
public currentSession: Observable<Session>;
|
||||
|
||||
private token: string;
|
||||
|
||||
@Input()
|
||||
public password: string;
|
||||
public passwordType: boolean;
|
||||
|
||||
@Input()
|
||||
public confirmPassword: string;
|
||||
public confirmPasswordType: boolean;
|
||||
|
||||
@Input()
|
||||
public errorMessage: string;
|
||||
|
||||
constructor(private router: Router, private userService: UserService,
|
||||
private route: ActivatedRoute) {
|
||||
this.currentSession = this.userService.getCurrentSession();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.token = this.route.snapshot.queryParamMap.get("token");
|
||||
|
||||
this.router.navigate([], {relativeTo: this.route, replaceUrl: true});
|
||||
|
||||
if (this.token == undefined || this.token === '') {
|
||||
this.errorMessage = 'Ссылка недействительна. Требуется повторить восстановление пароля.';
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public changePassword(): void {
|
||||
let dto: UserPasswordResetRequestDto = new UserPasswordResetRequestDto();
|
||||
dto.password = this.password;
|
||||
dto.passwordConfirm = this.confirmPassword;
|
||||
this.userService.changePassword(dto, this.token)
|
||||
.then(() => this.router.navigateByUrl("/"),
|
||||
() => {
|
||||
this.errorMessage =
|
||||
'Произошла неизвестная ошибка, обратитесь в службу технической поддержки!';
|
||||
});
|
||||
}
|
||||
|
||||
togglePasswordType(): void {
|
||||
this.passwordType = !this.passwordType;
|
||||
}
|
||||
|
||||
toggleConfirmPasswordType(): void {
|
||||
this.confirmPasswordType = !this.confirmPasswordType;
|
||||
}
|
||||
|
||||
validPasswords(): boolean {
|
||||
if (this.password === undefined || this.confirmPassword === undefined) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let eq = this.password === this.confirmPassword;
|
||||
if (!eq) {
|
||||
this.errorMessage = 'Введенные пароли не совпадают. Убедитесь, что данные, ' +
|
||||
'введенные в поле "Подтверждение пароля", совпадают с теми, ' +
|
||||
'которые указаны в поле "Пароль".';
|
||||
}
|
||||
else {
|
||||
this.errorMessage = '';
|
||||
}
|
||||
return eq;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
import {Component, Input, ViewChild} from "@angular/core";
|
||||
import {AppConfigService, UserDto, UserService} from "@webbpm/base-package";
|
||||
import {Router} from "@angular/router";
|
||||
import {PhoneNumberComponent} from "ngx-international-phone-number";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: "register",
|
||||
templateUrl: "../../../../../src/resources/template/app/component/register.html"
|
||||
})
|
||||
export class RegisterComponent {
|
||||
|
||||
public passwordPattern: string;
|
||||
public passwordPatternErrorMessage: string;
|
||||
public errorMessage: string;
|
||||
|
||||
@Input()
|
||||
public username: string;
|
||||
|
||||
@Input()
|
||||
public email: string;
|
||||
@ViewChild(PhoneNumberComponent)
|
||||
public phone: PhoneNumberComponent;
|
||||
public phoneNumber: string;
|
||||
|
||||
public phoneIsTouched: boolean = false;
|
||||
@Input()
|
||||
public password: string;
|
||||
|
||||
public fieldType: boolean;
|
||||
|
||||
@Input()
|
||||
public consent: string;
|
||||
|
||||
constructor(private router: Router, private userService: UserService,private appConfigService: AppConfigService) {
|
||||
this.passwordPattern = appConfigService.getParamValue("password_pattern");
|
||||
this.passwordPatternErrorMessage = appConfigService.getParamValue("password_pattern_error");
|
||||
}
|
||||
|
||||
public register(): void {
|
||||
let user: UserDto = new UserDto();
|
||||
user.username = this.username;
|
||||
user.email = this.email;
|
||||
user.name = this.username;
|
||||
user.phone = this.phone.value;
|
||||
user.password = this.password;
|
||||
|
||||
this.userService.register(user)
|
||||
.then(() => this.router.navigateByUrl("/login?confirmationSent=true"),
|
||||
(reason: any) => {
|
||||
if (reason.status === 409) {
|
||||
this.errorMessage = 'Пользователь с данным почтовым адресом уже существует';
|
||||
}
|
||||
else {
|
||||
this.errorMessage = 'Произошла неизвестная ошибка, обратитесь в службу технической поддержки!';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
toggleFieldType(): void {
|
||||
this.fieldType = !this.fieldType;
|
||||
}
|
||||
|
||||
phoneHasOnlyDialCode(): boolean {
|
||||
return this.phone.phoneNumber.trim() === this.phone.getSelectedCountryDialCode().trim()
|
||||
}
|
||||
|
||||
phoneInputFocusOut(): void {
|
||||
this.phoneIsTouched = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
import {Component, Input} from "@angular/core";
|
||||
import {UserService} from "@webbpm/base-package";
|
||||
import {Router} from "@angular/router";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: "resetPassword",
|
||||
templateUrl: "../../../../../src/resources/template/app/component/reset_password.html"
|
||||
})
|
||||
export class ResetPasswordComponent {
|
||||
|
||||
@Input()
|
||||
public email: string;
|
||||
|
||||
@Input()
|
||||
public errorMessage: string;
|
||||
|
||||
constructor(private router: Router, private userService: UserService) {
|
||||
}
|
||||
|
||||
resetPassword(): void {
|
||||
|
||||
this.userService.resetPassword(this.email)
|
||||
.then(() => this.router.navigateByUrl("/"),
|
||||
(reason: any) => {
|
||||
this.errorMessage =
|
||||
'Произошла неизвестная ошибка, обратитесь в службу технической поддержки!';
|
||||
});
|
||||
}
|
||||
}
|
||||
47
frontend/src/ts/modules/app/guard/RolesGuard.ts
Normal file
47
frontend/src/ts/modules/app/guard/RolesGuard.ts
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import {
|
||||
ActivatedRouteSnapshot,
|
||||
CanActivate,
|
||||
Router,
|
||||
RouterStateSnapshot,
|
||||
UrlTree
|
||||
} from "@angular/router";
|
||||
import {Injectable} from "@angular/core";
|
||||
import {AuthorizationService} from "../service/authorization.service";
|
||||
import {TokenProvider} from "../provider/token.provider";
|
||||
|
||||
@Injectable({providedIn: 'root'})
|
||||
export class RolesGuard implements CanActivate{
|
||||
|
||||
protected readonly allowedRoles: string[] = [];
|
||||
|
||||
constructor(protected authService: AuthorizationService,
|
||||
protected tokenProvider: TokenProvider,
|
||||
protected router: Router) {
|
||||
}
|
||||
|
||||
async canActivate(
|
||||
route: ActivatedRouteSnapshot, state: RouterStateSnapshot
|
||||
): Promise<boolean | UrlTree> {
|
||||
if (!await this.tokenProvider.getToken()) {
|
||||
return this.getUrlOnFailure()
|
||||
}
|
||||
|
||||
if (!this.authService.isAuthorized()) {
|
||||
return this.authService.getCurrentSession()
|
||||
.then(() => this.checkRoles() ? true : this.getUrlOnFailure())
|
||||
.catch(() => this.getUrlOnFailure());
|
||||
}
|
||||
else {
|
||||
return this.checkRoles();
|
||||
}
|
||||
}
|
||||
|
||||
protected getUrlOnFailure(): UrlTree {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected checkRoles(): boolean {
|
||||
return this.allowedRoles.length === 0
|
||||
|| this.authService.hasAnyRole(this.allowedRoles);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from "@angular/common/http";
|
||||
import {from, Observable} from "rxjs";
|
||||
import {TokenProvider} from "../provider/token.provider";
|
||||
import {Injectable} from "@angular/core";
|
||||
|
||||
@Injectable({providedIn: 'root'})
|
||||
export class TokenInterceptor implements HttpInterceptor{
|
||||
constructor(protected tokenProvider: TokenProvider) { }
|
||||
|
||||
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
|
||||
return from(this.handle(request, next))
|
||||
}
|
||||
|
||||
private async handle(request: HttpRequest<any>, next: HttpHandler): Promise<HttpEvent<any>> {
|
||||
const token = await this.tokenProvider.getToken();
|
||||
request = request.clone({
|
||||
setHeaders: {Authorization: `Bearer ${token}`}
|
||||
});
|
||||
return next.handle(request).toPromise();
|
||||
}
|
||||
}
|
||||
3
frontend/src/ts/modules/app/provider/token.provider.ts
Normal file
3
frontend/src/ts/modules/app/provider/token.provider.ts
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
export class TokenProvider {
|
||||
public getToken(): Promise<string> { return null }
|
||||
}
|
||||
|
|
@ -10,16 +10,16 @@ export class AppProgressIndicationService {
|
|||
event.stopPropagation();
|
||||
};
|
||||
|
||||
private counter: number = 0;
|
||||
private focused: any;
|
||||
private ngbModalRef: NgbModalRef;
|
||||
private options: NgbModalOptions = {
|
||||
protected counter: number = 0;
|
||||
protected focused: any;
|
||||
protected ngbModalRef: NgbModalRef;
|
||||
protected options: NgbModalOptions = {
|
||||
backdrop: 'static',
|
||||
keyboard: false,
|
||||
windowClass: 'modal-center loader'
|
||||
};
|
||||
|
||||
constructor(private ngbModal: NgbModal) {
|
||||
constructor(protected ngbModal: NgbModal) {
|
||||
}
|
||||
|
||||
public showProgressBar(): boolean {
|
||||
|
|
@ -58,11 +58,11 @@ export class AppProgressIndicationService {
|
|||
}
|
||||
}
|
||||
|
||||
private showProgressIndicator() {
|
||||
protected showProgressIndicator() {
|
||||
this.ngbModalRef = this.ngbModal.open(AppProgressIndicationComponent, this.options);
|
||||
}
|
||||
|
||||
private hideProgressIndicator() {
|
||||
protected hideProgressIndicator() {
|
||||
this.ngbModalRef.dismiss('cancel');
|
||||
this.ngbModalRef = null;
|
||||
}
|
||||
|
|
|
|||
64
frontend/src/ts/modules/app/service/authorization.service.ts
Normal file
64
frontend/src/ts/modules/app/service/authorization.service.ts
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
import {Injectable} from "@angular/core";
|
||||
import {Subject} from "rxjs";
|
||||
import {HttpClient} from "@angular/common/http";
|
||||
|
||||
export interface UserSession {
|
||||
userId: string,
|
||||
name: string,
|
||||
realm: string,
|
||||
domainId: string,
|
||||
roles: string[]
|
||||
}
|
||||
|
||||
@Injectable({providedIn: 'root'})
|
||||
export class AuthorizationService {
|
||||
|
||||
private session: UserSession;
|
||||
|
||||
public onSessionUpdate: Subject<UserSession> = new Subject<UserSession>();
|
||||
|
||||
constructor(protected httpClient: HttpClient) {}
|
||||
|
||||
public getCurrentSession(): Promise<any> {
|
||||
if (this.session) return new Promise(resolve => resolve(this.session))
|
||||
return this.httpClient.get('session')
|
||||
.toPromise()
|
||||
.then((session: UserSession) => {
|
||||
this.session = session;
|
||||
this.onSessionUpdate.next(session);
|
||||
return session;
|
||||
})
|
||||
}
|
||||
|
||||
isAuthorized(): boolean {
|
||||
return !!this.session;
|
||||
}
|
||||
|
||||
hasAnyRole(roles: string[]): boolean {
|
||||
return this.isAuthorized() && roles.some(role => this.getRoles().includes(role));
|
||||
}
|
||||
|
||||
hasRole(role: string): boolean {
|
||||
return this.isAuthorized() && this.getRoles().includes(role);
|
||||
}
|
||||
|
||||
getUserId(): string{
|
||||
return this.isAuthorized() ? this.session.userId: null;
|
||||
}
|
||||
|
||||
getName(): string {
|
||||
return this.isAuthorized() ? this.session.name : null;
|
||||
}
|
||||
|
||||
getRealm(): string {
|
||||
return this.isAuthorized() ? this.session.realm : null;
|
||||
}
|
||||
|
||||
getDomainId(): string {
|
||||
return this.isAuthorized() ? this.session.domainId : null;
|
||||
}
|
||||
|
||||
getRoles(): string[] {
|
||||
return this.isAuthorized() ? this.session.roles : null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
import {Component, ViewEncapsulation} from "@angular/core";
|
||||
import {
|
||||
Event,
|
||||
NavigationCancel,
|
||||
NavigationEnd,
|
||||
NavigationError,
|
||||
NavigationStart,
|
||||
Router
|
||||
} from "@angular/router";
|
||||
import {ProgressIndicationService} from "@webbpm/base-package";
|
||||
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
encapsulation: ViewEncapsulation.ShadowDom,
|
||||
selector: 'mfe-webbpm',
|
||||
templateUrl: './../../../../../src/resources/template/webbpm/mfe-webbpm.html',
|
||||
styleUrls: ['./../../../../../src/resources/css/style.css'],
|
||||
})
|
||||
export class MfeWebbpmComponent {
|
||||
public headerVisible: boolean = true;
|
||||
public footerVisible: boolean = true;
|
||||
|
||||
constructor(private router: Router,
|
||||
private progressIndicationService: ProgressIndicationService) {
|
||||
router.events.subscribe((event: Event) => {
|
||||
if (event instanceof NavigationStart) {
|
||||
progressIndicationService.showProgressBar();
|
||||
}
|
||||
else if (event instanceof NavigationEnd
|
||||
|| event instanceof NavigationError
|
||||
|| event instanceof NavigationCancel) {
|
||||
progressIndicationService.hideProgressBar();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import {Component} from "@angular/core";
|
||||
import {MfeConfigurationProvider} from "../provider/mfe-configuration.provider";
|
||||
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: `[${MfeConfigurationProvider.BASE_COMPONENT_ATTRIBUTE}]`,
|
||||
templateUrl: './../../../../../src/resources/template/webbpm/mfe-wrapper.html',
|
||||
styleUrls: ['./../../../../../src/resources/css/font-faces.css']
|
||||
})
|
||||
export class MfeWrapperComponent {
|
||||
|
||||
}
|
||||
10
frontend/src/ts/modules/mfe/guard/MfeRolesGuard.ts
Normal file
10
frontend/src/ts/modules/mfe/guard/MfeRolesGuard.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
import {RolesGuard} from "../../app/guard/RolesGuard";
|
||||
import {UrlTree} from "@angular/router";
|
||||
import {Injectable} from "@angular/core";
|
||||
|
||||
@Injectable({providedIn: 'root'})
|
||||
export class MfeRolesGuard extends RolesGuard {
|
||||
protected getUrlOnFailure(): UrlTree {
|
||||
return this.router.createUrlTree(['access-denied']);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import {HTTP_INTERCEPTORS} from "@angular/common/http";
|
||||
import {
|
||||
FormDirtyInterceptor,
|
||||
HttpSecurityErrorInterceptor
|
||||
} from "@webbpm/base-package";
|
||||
import {MfeHttpBackendInterceptor} from "./mfe-http-backend-interceptor";
|
||||
import {TokenInterceptor} from "../../app/interceptor/token.interceptor.service";
|
||||
|
||||
|
||||
export const DEFAULT_HTTP_INTERCEPTOR_PROVIDERS = [
|
||||
{provide: HTTP_INTERCEPTORS, useClass: MfeHttpBackendInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: HttpSecurityErrorInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: FormDirtyInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true}
|
||||
];
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from "@angular/common/http";
|
||||
import {
|
||||
AppConfigService,
|
||||
ApplicationSettingsProvider,
|
||||
AppVersionService,
|
||||
TokenHeaderUtil
|
||||
} from "@webbpm/base-package";
|
||||
import {Observable} from "rxjs";
|
||||
import {MfeConfigurationProvider} from "../provider/mfe-configuration.provider";
|
||||
import {joinPath} from "../../../mfe-app-tools";
|
||||
|
||||
|
||||
export class MfeHttpBackendInterceptor implements HttpInterceptor {
|
||||
private static readonly CONTENT_TYPE_HEADER = 'Content-Type';
|
||||
private static readonly ENABLE_VERSION_IN_URL: string = "enable.version.in.url";
|
||||
private static readonly BACKEND_URL: string = "backend.url";
|
||||
private static readonly BACKEND_CONTEXT: string = "backend.context";
|
||||
|
||||
constructor(private appConfigService: AppConfigService,
|
||||
private appVersionService: AppVersionService) {
|
||||
}
|
||||
|
||||
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
|
||||
req = TokenHeaderUtil.addHeader(
|
||||
req, MfeHttpBackendInterceptor.CONTENT_TYPE_HEADER, 'application/json;charset=UTF-8'
|
||||
);
|
||||
|
||||
let overrideObj
|
||||
|
||||
if (!req.url.startsWith(ApplicationSettingsProvider.RESOURCES_PATH)
|
||||
&& !req.url.startsWith('http:') && !req.url.startsWith('https:')) {
|
||||
|
||||
let appVersionInUrl = this.getVersion();
|
||||
let backendUrl = this.appConfigService.getParamValue(MfeHttpBackendInterceptor.BACKEND_URL);
|
||||
let backendContext = this.appConfigService.getParamValue(
|
||||
MfeHttpBackendInterceptor.BACKEND_CONTEXT);
|
||||
|
||||
let url;
|
||||
|
||||
if (backendUrl) {
|
||||
url = backendUrl;
|
||||
}
|
||||
else if (backendContext) {
|
||||
url = joinPath(
|
||||
MfeConfigurationProvider.MFE_BASE_URL,
|
||||
backendContext
|
||||
);
|
||||
}
|
||||
else {
|
||||
url = ApplicationSettingsProvider.BACKEND_URL;
|
||||
}
|
||||
|
||||
overrideObj = {url: `${url}${appVersionInUrl}/${req.url}`};
|
||||
}
|
||||
return next.handle(req.clone(overrideObj));
|
||||
}
|
||||
|
||||
private getVersion(): string {
|
||||
return this.appConfigService.getParamValue(MfeHttpBackendInterceptor.ENABLE_VERSION_IN_URL) ==
|
||||
"true" ? "-" + this.appVersionService.getAppVersion() : "";
|
||||
}
|
||||
}
|
||||
38
frontend/src/ts/modules/mfe/mfe-webbpm-routing.module.ts
Normal file
38
frontend/src/ts/modules/mfe/mfe-webbpm-routing.module.ts
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
import {ConfirmExitGuard} from "@webbpm/base-package";
|
||||
import {RolesGuard} from "../app/guard/RolesGuard";
|
||||
import {RouterModule, Routes} from "@angular/router";
|
||||
import {AccessDeniedComponent} from "../app/component/access-denied.component";
|
||||
import {NgModule} from "@angular/core";
|
||||
import {APP_BASE_HREF} from "@angular/common";
|
||||
import {MfeConfigurationProvider} from "./provider/mfe-configuration.provider";
|
||||
|
||||
const webbpmRoutes: Routes = [
|
||||
{
|
||||
path: 'access-denied',
|
||||
component: AccessDeniedComponent,
|
||||
},
|
||||
{
|
||||
path: '',
|
||||
loadChildren: 'generated-sources/page-home.module#PagehomeModule',
|
||||
canActivate: [ConfirmExitGuard, RolesGuard],
|
||||
pathMatch: 'full',
|
||||
},
|
||||
{
|
||||
path: '**',
|
||||
redirectTo: '',
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
providers: [
|
||||
{provide: APP_BASE_HREF, useFactory: () => MfeConfigurationProvider.getPageBaseUrl()}
|
||||
],
|
||||
imports: [RouterModule.forRoot(webbpmRoutes, {
|
||||
useHash: false,
|
||||
onSameUrlNavigation: "reload"
|
||||
})],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class MfeWebbpmRoutingModule {
|
||||
|
||||
}
|
||||
69
frontend/src/ts/modules/mfe/mfe-webbpm.module.ts
Normal file
69
frontend/src/ts/modules/mfe/mfe-webbpm.module.ts
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
|
||||
import {BrowserModule} from "@angular/platform-browser";
|
||||
import {FormsModule} from "@angular/forms";
|
||||
import {NgbModule} from "@ng-bootstrap/ng-bootstrap";
|
||||
import {ToastNoAnimationModule} from "ngx-toastr";
|
||||
import {AgGridModule} from "ag-grid-angular";
|
||||
import {AppRoutingModule} from "../app/app-routing.module";
|
||||
import {
|
||||
AppConfigService,
|
||||
AppVersionService,
|
||||
BpmnModule,
|
||||
ComponentsModule,
|
||||
CoreModule, ProgressIndicationService
|
||||
} from "@webbpm/base-package";
|
||||
import {AppModule} from "../app/app.module";
|
||||
import {MfeWebbpmRoutingModule} from "./mfe-webbpm-routing.module";
|
||||
import {ErrorHandler, NgModule} from "@angular/core";
|
||||
import {MfeWrapperComponent} from "./component/mfe-wrapper.component";
|
||||
import {MfeWebbpmComponent} from "./component/mfe-webbpm.component";
|
||||
import {AccessDeniedComponent} from "../app/component/access-denied.component";
|
||||
import {MfeAppVersionService} from "./service/mfe-app-version.service";
|
||||
import {MfeAppConfigService} from "./service/mfe-app-config.service";
|
||||
import {GlobalErrorHandler} from "../webbpm/handler/global-error.handler.prod";
|
||||
import {MfeProgressIndicationService} from "./service/mfe-progress-indication.service";
|
||||
import {MfeRolesGuard} from "./guard/MfeRolesGuard";
|
||||
import {RolesGuard} from "../app/guard/RolesGuard";
|
||||
import {TokenProvider} from "../app/provider/token.provider";
|
||||
import {MfeTokenProvider} from "./provider/mfe-token.provider";
|
||||
import {DEFAULT_HTTP_INTERCEPTOR_PROVIDERS} from "./interceptor/mfe-default-interceptors.prod";
|
||||
|
||||
|
||||
let IMPORTS = [
|
||||
BrowserAnimationsModule,
|
||||
BrowserModule,
|
||||
FormsModule,
|
||||
NgbModule,
|
||||
ToastNoAnimationModule.forRoot(),
|
||||
AgGridModule,
|
||||
AppRoutingModule,
|
||||
BpmnModule,
|
||||
CoreModule,
|
||||
ComponentsModule,
|
||||
AppModule,
|
||||
MfeWebbpmRoutingModule
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: IMPORTS,
|
||||
declarations: [
|
||||
MfeWrapperComponent,
|
||||
MfeWebbpmComponent,
|
||||
AccessDeniedComponent
|
||||
],
|
||||
exports: [],
|
||||
providers: [
|
||||
{provide: AppVersionService, useClass: MfeAppVersionService},
|
||||
{provide: AppConfigService, useClass: MfeAppConfigService},
|
||||
{provide: ErrorHandler, useClass: GlobalErrorHandler},
|
||||
{provide: ProgressIndicationService, useClass: MfeProgressIndicationService},
|
||||
{provide: RolesGuard, useClass: MfeRolesGuard},
|
||||
{provide: TokenProvider, useClass: MfeTokenProvider},
|
||||
DEFAULT_HTTP_INTERCEPTOR_PROVIDERS
|
||||
],
|
||||
bootstrap: [
|
||||
MfeWrapperComponent
|
||||
]
|
||||
})
|
||||
export class MfeWebbpmModule {
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
export class MfeConfigurationProvider {
|
||||
private static config; // way to avoid webpack optimization
|
||||
public static MFE_BASE_URL = process.env.MFE_BASE_URL || '';
|
||||
public static BASE_COMPONENT_ATTRIBUTE = 'mfe-webbpm-account-applications';
|
||||
|
||||
public static getPageBaseUrl(): string {
|
||||
return this.config.PAGE_BASE_URL
|
||||
}
|
||||
|
||||
public static setPageBaseUrl(pageBaseUrl: string) {
|
||||
if (!this.config) this.config = {};
|
||||
this.config.PAGE_BASE_URL = pageBaseUrl;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
import {TokenProvider} from "../../app/provider/token.provider";
|
||||
import {fireMfeEventToContainer} from "../../../mfe-app-tools";
|
||||
|
||||
|
||||
export class MfeTokenProvider extends TokenProvider {
|
||||
getToken(): Promise<string> {
|
||||
return fireMfeEventToContainer('token-request', {});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import {Injectable} from "@angular/core";
|
||||
import {AppConfigService, ApplicationSettingsProvider} from "@webbpm/base-package";
|
||||
import {HttpClient} from "@angular/common/http";
|
||||
import {MfeConfigurationProvider} from "../provider/mfe-configuration.provider";
|
||||
import {joinPath} from "../../../mfe-app-tools";
|
||||
|
||||
|
||||
@Injectable({providedIn:'root'})
|
||||
export class MfeAppConfigService extends AppConfigService {
|
||||
|
||||
load(): Promise<any> {
|
||||
let http: HttpClient = this['http'];
|
||||
let url = joinPath(
|
||||
MfeConfigurationProvider.MFE_BASE_URL,
|
||||
ApplicationSettingsProvider.RESOURCES_PATH,
|
||||
'app-config.json'
|
||||
)
|
||||
return http
|
||||
.get(url)
|
||||
.toPromise()
|
||||
.then(configData => {
|
||||
this['mapParam'] = configData;
|
||||
})
|
||||
.catch((error: any): any => {
|
||||
console.error('Account Applications configuration file "app-config.json" could not be read');
|
||||
return Promise.reject(error);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
import {Injectable} from "@angular/core";
|
||||
import {ApplicationSettingsProvider, AppVersionService} from "@webbpm/base-package";
|
||||
import {HttpClient} from "@angular/common/http";
|
||||
import {MfeConfigurationProvider} from "../provider/mfe-configuration.provider";
|
||||
import {joinPath} from "../../../mfe-app-tools";
|
||||
|
||||
|
||||
@Injectable({providedIn:'root'})
|
||||
export class MfeAppVersionService extends AppVersionService {
|
||||
|
||||
load(): Promise<any> {
|
||||
let http: HttpClient = this['http'];
|
||||
let url = joinPath(
|
||||
MfeConfigurationProvider.MFE_BASE_URL,
|
||||
ApplicationSettingsProvider.RESOURCES_PATH,
|
||||
'app.version'
|
||||
)
|
||||
return http
|
||||
.get(url, {responseType: 'text'})
|
||||
.toPromise()
|
||||
.then(version => {
|
||||
this['appVersion'] = version;
|
||||
console.log(`Account Applications application version = ${version}`);
|
||||
})
|
||||
.catch((error: any): any => {
|
||||
console.error('Account Applications file "app.version" could not be read');
|
||||
return Promise.reject(error);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
import {Injectable} from "@angular/core";
|
||||
import {AppProgressIndicationService} from "../../app/service/app-progress-indication.service";
|
||||
import {
|
||||
AppProgressIndicationComponent
|
||||
} from "../../app/component/app-progress-indication.component";
|
||||
|
||||
|
||||
@Injectable({providedIn: 'root'})
|
||||
export class MfeProgressIndicationService extends AppProgressIndicationService {
|
||||
|
||||
protected showProgressIndicator() {
|
||||
const options = {...this.options};
|
||||
options.container = this.getContainerForProgressIndication();
|
||||
this.ngbModalRef = this.ngbModal.open(AppProgressIndicationComponent, options);
|
||||
}
|
||||
|
||||
getContainerForProgressIndication(): HTMLElement {
|
||||
return document.querySelector('mfe-webbpm')
|
||||
.shadowRoot.querySelector('[webbpm]');
|
||||
}
|
||||
}
|
||||
|
|
@ -8,7 +8,12 @@ import {PreviewContainerComponent} from "./component/preview-container.component
|
|||
import {NgbModule} from "@ng-bootstrap/ng-bootstrap";
|
||||
import {ToastNoAnimationModule} from "ngx-toastr";
|
||||
import {AppModule} from "../app/app.module";
|
||||
import {ComponentsModule, CoreModule, SecurityModule} from "@webbpm/base-package";
|
||||
import {
|
||||
ComponentsModule,
|
||||
CoreModule,
|
||||
SecurityModule,
|
||||
TaskParamsProvider
|
||||
} from "@webbpm/base-package";
|
||||
import {HTTP_INTERCEPTORS} from "@angular/common/http";
|
||||
import {HttpPreviewInterceptor} from "./service/http-preview-interceptor.service";
|
||||
|
||||
|
|
@ -37,6 +42,7 @@ let IMPORTS = [
|
|||
],
|
||||
exports: [],
|
||||
providers: [
|
||||
TaskParamsProvider,
|
||||
HTTP_INTERCEPTOR_PROVIDERS
|
||||
],
|
||||
bootstrap: [
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
import {Component} from "@angular/core";
|
||||
import {Router} from "@angular/router";
|
||||
import {WebbpmTokenProvider} from "../provider/webbpm-token-provider";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: 'token-form',
|
||||
templateUrl: '../../../../../src/resources/template/webbpm/jwt-form.html'
|
||||
})
|
||||
export class TokenFormComponent {
|
||||
|
||||
name: string = '';
|
||||
realm: string = '';
|
||||
domainId: string = '';
|
||||
role: string = '';
|
||||
|
||||
private readonly encodedHeader = this.encodeBase64Url(JSON.stringify({
|
||||
kid: "69d4a060-4053-4056-ae69-5e9bcf41125f",
|
||||
typ: "JWT",
|
||||
alg: "RS512"
|
||||
}));
|
||||
|
||||
constructor(private router: Router) {
|
||||
}
|
||||
|
||||
public enter() {
|
||||
localStorage.setItem(WebbpmTokenProvider.ACCESS_TOKEN_STORAGE_KEY, this.generateToken());
|
||||
this.router.navigateByUrl('');
|
||||
}
|
||||
|
||||
private generateToken(): string {
|
||||
let claims = {
|
||||
name: this.name,
|
||||
realm: this.realm,
|
||||
domain_id: this.domainId,
|
||||
roles: [this.role]
|
||||
};
|
||||
return `${this.encodedHeader}.${this.encodeBase64Url(JSON.stringify(claims))}.`
|
||||
}
|
||||
|
||||
private encodeBase64Url(input: string): string {
|
||||
let bytes = new TextEncoder().encode(input);
|
||||
const byteArray = Array.from(bytes);
|
||||
const binString = String.fromCharCode(...byteArray);
|
||||
return btoa(binString).replace(/\+/g, '-')
|
||||
.replace(/\//g, '_')
|
||||
.replace(/=+$/, '');
|
||||
}
|
||||
}
|
||||
11
frontend/src/ts/modules/webbpm/guard/WebbpmRolesGuard.ts
Normal file
11
frontend/src/ts/modules/webbpm/guard/WebbpmRolesGuard.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import {Injectable} from "@angular/core";
|
||||
import {RolesGuard} from "../../app/guard/RolesGuard";
|
||||
import {UrlTree} from "@angular/router";
|
||||
|
||||
|
||||
@Injectable({providedIn: 'root'})
|
||||
export class WebbpmRolesGuard extends RolesGuard {
|
||||
protected getUrlOnFailure(): UrlTree {
|
||||
return this.router.createUrlTree(['token-form']);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,9 +4,11 @@ import {
|
|||
HttpSecurityErrorInterceptor,
|
||||
HttpSecurityInterceptor
|
||||
} from "@webbpm/base-package";
|
||||
import {TokenInterceptor} from "../../app/interceptor/token.interceptor.service";
|
||||
|
||||
export const DEFAULT_HTTP_INTERCEPTOR_PROVIDERS = [
|
||||
{provide: HTTP_INTERCEPTORS, useClass: HttpSecurityInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: HttpSecurityErrorInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: FormDirtyInterceptor, multi: true}
|
||||
{provide: HTTP_INTERCEPTORS, useClass: FormDirtyInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
import {HTTP_INTERCEPTORS} from "@angular/common/http";
|
||||
import {FormDirtyInterceptor, HttpSecurityInterceptor} from "@webbpm/base-package";
|
||||
import {DevHttpSecurityErrorInterceptor} from "./http-security-error-interceptor.dev";
|
||||
import {TokenInterceptor} from "../../app/interceptor/token.interceptor.service";
|
||||
|
||||
export const DEFAULT_HTTP_INTERCEPTOR_PROVIDERS = [
|
||||
{provide: HTTP_INTERCEPTORS, useClass: HttpSecurityInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: DevHttpSecurityErrorInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: FormDirtyInterceptor, multi: true}
|
||||
{provide: HTTP_INTERCEPTORS, useClass: FormDirtyInterceptor, multi: true},
|
||||
{provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true}
|
||||
];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
import {TokenProvider} from "../../app/provider/token.provider";
|
||||
|
||||
export class WebbpmTokenProvider implements TokenProvider {
|
||||
|
||||
public static readonly ACCESS_TOKEN_STORAGE_KEY = 'accessToken'
|
||||
|
||||
getToken(): Promise<string> {
|
||||
return new Promise(resolve => {
|
||||
resolve(localStorage.getItem(WebbpmTokenProvider.ACCESS_TOKEN_STORAGE_KEY));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
import {RouterModule, Routes} from "@angular/router";
|
||||
import {NgModule} from "@angular/core";
|
||||
import {
|
||||
AuthenticationGuard,
|
||||
ConfirmExitGuard
|
||||
} from "@webbpm/base-package";
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: 'user-management',
|
||||
canActivate: [AuthenticationGuard],
|
||||
children: [
|
||||
{
|
||||
path: 'users',
|
||||
loadChildren: 'generated-sources/page-user-management-users.module#PageusermanagementusersModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'users/new',
|
||||
loadChildren: 'generated-sources/page-user-management-user-create.module#PageusermanagementusercreateModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'users/:id',
|
||||
loadChildren: 'generated-sources/page-user-management-user-edit.module#PageusermanagementusereditModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'org-units',
|
||||
loadChildren: 'generated-sources/page-user-management-org-units.module#PageusermanagementorgunitsModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'org-units/new',
|
||||
loadChildren: 'generated-sources/page-user-management-org-unit.module#PageusermanagementorgunitModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'org-units/:id',
|
||||
loadChildren: 'generated-sources/page-user-management-org-unit.module#PageusermanagementorgunitModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'roles',
|
||||
loadChildren: 'generated-sources/page-user-management-roles.module#PageusermanagementrolesModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'roles/new',
|
||||
loadChildren: 'generated-sources/page-user-management-role.module#PageusermanagementroleModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'roles/:id',
|
||||
loadChildren: 'generated-sources/page-user-management-role.module#PageusermanagementroleModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'groups',
|
||||
loadChildren: 'generated-sources/page-user-management-groups.module#PageusermanagementgroupsModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'groups/new',
|
||||
loadChildren: 'generated-sources/page-user-management-group-create.module#PageusermanagementgroupcreateModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'groups/:id',
|
||||
loadChildren: 'generated-sources/page-user-management-group-edit.module#PageusermanagementgroupeditModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
},
|
||||
{
|
||||
path: 'authorities',
|
||||
loadChildren: 'generated-sources/page-user-management-authorities.module#PageusermanagementauthoritiesModule',
|
||||
canActivate: [ConfirmExitGuard]
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class UserManagementRoutingModule {
|
||||
|
||||
}
|
||||
|
|
@ -1,15 +1,20 @@
|
|||
import {NgModule} from "@angular/core";
|
||||
import {RouterModule, Routes} from "@angular/router";
|
||||
import {
|
||||
AuthenticationGuard,
|
||||
ConfirmExitGuard
|
||||
} from "@webbpm/base-package";
|
||||
import {TokenFormComponent} from "./component/token-form.component";
|
||||
import {RolesGuard} from "../app/guard/RolesGuard";
|
||||
|
||||
const webbpmRoutes: Routes = [
|
||||
{
|
||||
path: 'token-form',
|
||||
component: TokenFormComponent
|
||||
},
|
||||
{
|
||||
path: '',
|
||||
loadChildren: 'generated-sources/page-home.module#PagehomeModule',
|
||||
canActivate: [AuthenticationGuard, ConfirmExitGuard],
|
||||
canActivate: [ConfirmExitGuard, RolesGuard],
|
||||
pathMatch: 'full',
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -13,12 +13,15 @@ import {
|
|||
BpmnModule,
|
||||
ComponentsModule,
|
||||
CoreModule,
|
||||
SecurityModule,
|
||||
} from "@webbpm/base-package";
|
||||
import {AppRoutingModule} from "../app/app-routing.module";
|
||||
import {UserManagementRoutingModule} from "./user-management-routing.module";
|
||||
import {GlobalErrorHandler} from "./handler/global-error.handler.prod";
|
||||
import {DEFAULT_HTTP_INTERCEPTOR_PROVIDERS} from "./interceptor/default-interceptors.prod";
|
||||
import {TokenFormComponent} from "./component/token-form.component";
|
||||
import {WebbpmTokenProvider} from "./provider/webbpm-token-provider";
|
||||
import {RolesGuard} from "../app/guard/RolesGuard";
|
||||
import {TokenProvider} from "../app/provider/token.provider";
|
||||
import {WebbpmRolesGuard} from "./guard/WebbpmRolesGuard";
|
||||
|
||||
let IMPORTS = [
|
||||
BrowserAnimationsModule,
|
||||
|
|
@ -28,11 +31,9 @@ let IMPORTS = [
|
|||
ToastNoAnimationModule.forRoot(),
|
||||
AgGridModule,
|
||||
AppRoutingModule,
|
||||
UserManagementRoutingModule,
|
||||
BpmnModule,
|
||||
CoreModule,
|
||||
ComponentsModule,
|
||||
SecurityModule,
|
||||
AppModule,
|
||||
WebbpmRoutingModule
|
||||
];
|
||||
|
|
@ -41,11 +42,14 @@ let IMPORTS = [
|
|||
imports: IMPORTS,
|
||||
declarations: [
|
||||
WebbpmComponent,
|
||||
HomeComponent
|
||||
HomeComponent,
|
||||
TokenFormComponent
|
||||
],
|
||||
exports: [],
|
||||
providers: [
|
||||
{provide: ErrorHandler, useClass: GlobalErrorHandler},
|
||||
{provide: TokenProvider, useClass: WebbpmTokenProvider},
|
||||
{provide: RolesGuard, useClass: WebbpmRolesGuard},
|
||||
DEFAULT_HTTP_INTERCEPTOR_PROVIDERS
|
||||
],
|
||||
bootstrap: [
|
||||
|
|
|
|||
|
|
@ -5,11 +5,19 @@ const CopyWebpackPlugin = require('copy-webpack-plugin');
|
|||
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||
const TerserPlugin = require('terser-webpack-plugin');
|
||||
const Dotenv = require('dotenv-webpack');
|
||||
const {config} = require('dotenv')
|
||||
const {
|
||||
container: {ModuleFederationPlugin}
|
||||
} = webpack;
|
||||
const {normalizeCssPaths} = require("./normalize-css-path");
|
||||
|
||||
function _path(p) {
|
||||
return path.join(__dirname, p);
|
||||
}
|
||||
|
||||
config();
|
||||
|
||||
module.exports = {
|
||||
mode: 'production',
|
||||
entry: {
|
||||
|
|
@ -90,6 +98,14 @@ module.exports = {
|
|||
},
|
||||
|
||||
plugins: [
|
||||
new Dotenv(),
|
||||
() => normalizeCssPaths({
|
||||
paths: [
|
||||
'./build/resources/css/font-faces.css.shim.ngstyle.js',
|
||||
'./build/resources/css/style.css.ngstyle.js'
|
||||
],
|
||||
outDir: `${process.env.MFE_BASE_URL || ''}/src/resources`,
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
template: 'index.webpack.html',
|
||||
filename: 'index.html',
|
||||
|
|
@ -111,6 +127,13 @@ module.exports = {
|
|||
jQuery: "jquery",
|
||||
"window.jQuery": "jquery",
|
||||
Popper: ['popper.js', 'default']
|
||||
}),
|
||||
new ModuleFederationPlugin({
|
||||
name: 'account_applications',
|
||||
filename: 'remoteEntry.js',
|
||||
exposes: {
|
||||
"./account-applications": "./build/scripts/mfe-main.aot",
|
||||
},
|
||||
})
|
||||
],
|
||||
|
||||
|
|
|
|||
28
pom.xml
28
pom.xml
|
|
@ -93,6 +93,14 @@
|
|||
<artifactId>security-esia</artifactId>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-api</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-beans</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<artifactId>security-db-synchronization-api</artifactId>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
|
|
@ -188,16 +196,6 @@
|
|||
<version>${webbpm-platform.version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-beans</artifactId>
|
||||
<version>${webbpm-platform.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-api</artifactId>
|
||||
<version>${webbpm-platform.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules</groupId>
|
||||
<artifactId>webkit-rpc</artifactId>
|
||||
|
|
@ -288,16 +286,6 @@
|
|||
<version>${webbpm-platform.version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-db-synchronization-api</artifactId>
|
||||
<version>${webbpm-platform.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules.security</groupId>
|
||||
<artifactId>security-db-synchronization-ldap-impl</artifactId>
|
||||
<version>${webbpm-platform.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<repositories>
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
<componentRootId>240c9b7b-b6a5-40c9-82f3-c54924205a32</componentRootId>
|
||||
<name>Vbox</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
|
|
@ -69,6 +70,7 @@
|
|||
<componentRootId>5ace6303-ecf8-40a2-ad53-3dc08b46c1e0</componentRootId>
|
||||
<name>Список заявок</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
|
|||
|
|
@ -1,278 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-group-edit</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="1011fa6a-8730-41f1-836a-928dc32f1786">
|
||||
<prototypeId>ed47cfae-64da-4360-8f61-1087179ad78b</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>GroupsEdit</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="88379f0a-c2bf-40d7-81fd-9470ad4ca71e">
|
||||
<prototypeId>a18909dd-64ee-433f-82b3-70e1917f1b8d</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="416cf037-bb57-4fcd-82ed-13f2cd10ce63">
|
||||
<prototypeId>e2c223a4-377d-49e3-904f-375ca30a08d5</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Form</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="c4b18ad6-092d-4913-bb1f-1b3b007e632d"/>
|
||||
<scripts id="c9290870-7915-4826-89ba-1fb86da57701"/>
|
||||
<scripts id="57779237-6bd7-4f73-ab62-efc79cc249b9"/>
|
||||
<scripts id="ad6ccafe-914e-4e13-a351-88bf107a5007"/>
|
||||
<scripts id="9ad247a3-9c46-4f12-9949-b1c905bd73bc"/>
|
||||
<scripts id="79188cdc-d646-433e-9751-1482b9247ee6"/>
|
||||
<children id="a9e90772-99a7-42b5-9ca8-c36bec6564eb">
|
||||
<prototypeId>c629e7bd-878a-4411-9e29-bb44f4c11ba7</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="e68cd489-ed18-4eab-9d39-5fd5482e8c6e">
|
||||
<prototypeId>075ead72-0b6f-411f-88b4-69f5ab4a4052</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="a582ea6f-f0ff-4b3e-906d-3a5a1307b648">
|
||||
<prototypeId>389e2f20-104b-4136-aba0-3a0ccd45f96e</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Текст</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="428a6d51-0834-4bd6-b684-7fcf98acc76a">
|
||||
<prototypeId>d2a08a08-2807-4471-a2b5-f7a78fd1bb0d</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="2afb923f-8d5a-4159-92e1-36e29eecf796"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="ea085755-0129-496a-b0c1-c2927c2a422c">
|
||||
<prototypeId>76cc68cf-575a-46a0-8ca2-31109c3963c4</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>created</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="b3e71640-b543-46be-a190-c6d177d1831b"/>
|
||||
<scripts id="f45759cb-b51a-4ba8-9608-6393ca82d8ae"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="40d996a3-c4d2-496e-91ca-57be92216c6d">
|
||||
<prototypeId>0a47e758-c21e-4f8a-92bf-150c872b58ed</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>updated</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="f5c00722-9832-479d-bbe4-3c1295889a49"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="37ad6604-73e5-441d-aca5-26b58329fea0">
|
||||
<prototypeId>ae991562-f703-4403-8d49-a0e5e540bc6c</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>access_level</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="23992f0e-94ed-4fb4-b4d1-dc6ad7f13227"/>
|
||||
<scripts id="efb0fec7-9951-4b36-bbda-fa17aa002d74"/>
|
||||
<scripts id="4d028ea6-e4a3-4acf-bd60-de7aa1a78f71"/>
|
||||
<scripts id="9f543b36-92e3-4a63-b8db-a4d7e852113e"/>
|
||||
<scripts id="47f307b6-79a7-4c9a-96d6-6ee423565f02"/>
|
||||
<scripts id="fc2918be-82e7-46af-b195-8c7e2e809e76"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="3d388cd2-79ad-4613-aeec-5f1af3811a20">
|
||||
<prototypeId>41774d7b-90c5-4bc0-a563-509d036206e3</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="4e5d7521-ffee-4fab-a14c-5c6c3dc1fc88">
|
||||
<prototypeId>4eb50f01-cccc-4f3a-b66d-4d57dde0a212</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="3509049c-0a5f-4c61-ae9f-fd8eca34c540">
|
||||
<prototypeId>704d07af-1823-48d6-acad-83771428be38</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="e1dd4cec-c17d-47bf-9d51-efbbf0b30118">
|
||||
<prototypeId>528504db-2727-4750-92a9-5f09dacc781d</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>AvailableRecordsGrid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="53cc1ea5-3feb-4a45-b8cd-44f010fa2800"/>
|
||||
<scripts id="5a788014-f258-4cf9-890d-1ae696047a8b"/>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="bd96fb29-7063-450a-aa4d-a0cf4945de61"/>
|
||||
<scripts id="d56d612f-ce74-4a1c-9a7e-1d9bfb77360c"/>
|
||||
<scripts id="067f1a83-dd56-4884-91ac-52bb91d69a58"/>
|
||||
<scripts id="d7448a99-b5e2-413b-b0f0-68efd4b4c189"/>
|
||||
</children>
|
||||
<children id="02cebd3f-b9ee-49f0-8a69-a29aacc6de0e">
|
||||
<prototypeId>e791675f-a1d1-402b-afe1-556b434b1248</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Buttons</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="490e497c-1ab3-4663-8825-9df069772ce2">
|
||||
<prototypeId>6731261c-f859-489e-9ca9-08b33aa77b58</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Add</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b06faf2e-48d8-4094-ae08-5dad718007d3"/>
|
||||
</children>
|
||||
<children id="c9c6a534-d10b-42b3-9036-875c9cc8311c">
|
||||
<prototypeId>639fa2da-bdb2-4d26-97db-4a2bef4cfb81</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>AddAll</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="cd544d24-e341-43a2-8a47-01115e200e08"/>
|
||||
</children>
|
||||
<children id="f36f1926-a477-4f1f-920f-74acbef4488e">
|
||||
<prototypeId>291de4f8-51a4-4331-b26c-5994e9de5697</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>Remove</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="7b247053-e690-44e7-ad8b-82f574bc7d6d"/>
|
||||
</children>
|
||||
<children id="f1938d22-176a-4a8a-8b0b-058f8a9e33e1">
|
||||
<prototypeId>366c5745-c04f-4d11-a652-54abe1a5d4ca</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>RemoveAll</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="5bb38c78-84e3-4c42-9fef-5183111ad1aa"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="c872b8da-dd07-4dcf-a34b-bb8623ec9f86">
|
||||
<prototypeId>76735e43-2b8f-440a-abd1-80c556326763</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>LinkFieldDialog</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="4bb5549d-f484-40da-99d1-998c8c963789"/>
|
||||
<scripts id="a3fe02c2-a871-481f-bbed-a278b2ce8b13"/>
|
||||
<scripts id="b500faf2-33d5-47ba-8bd0-b17670edc9df"/>
|
||||
<scripts id="603631c2-ddf5-400f-8238-7844782ed5fb"/>
|
||||
<scripts id="01009323-fac3-43d6-9c9c-d40ddd537cfe"/>
|
||||
<scripts id="e8d7e9c0-afbd-4e9e-a475-00e5ad024d6d"/>
|
||||
<scripts id="39608513-f2fe-47d8-83ae-f4e34ee43cdb"/>
|
||||
<scripts id="1f62bddb-0b1c-4da1-bfa2-c1ac10d82734"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="04a93467-aba1-4e58-9fe2-d3896b1970b4">
|
||||
<prototypeId>fb5e15d6-c838-4fa7-b20d-714a2abd03a6</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="45eb6d3b-413f-46aa-b090-8c6bb4711706">
|
||||
<prototypeId>3a2c64e6-edcf-4058-9a02-897b6dc9704e</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>save-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
</children>
|
||||
<children id="1e6e1037-43c2-40a6-b891-932efa9f3f43">
|
||||
<prototypeId>29e058b0-bc2a-45bb-8422-2922881db1be</prototypeId>
|
||||
<componentRootId>1011fa6a-8730-41f1-836a-928dc32f1786</componentRootId>
|
||||
<name>exit-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
</children>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,280 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-group-create</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="deab5d8f-591d-41b4-8485-1c5d3ef48a16">
|
||||
<prototypeId>ca7390f1-1891-4161-b8ae-ef66de5776b7</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>GroupsCreate</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="f4f2612c-1d3a-4549-8172-ac6dc1c3ee16">
|
||||
<prototypeId>fa5b05d3-871d-4be9-b8f5-8912dfb35d45</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="cf877d06-80d5-4759-8b98-45dc72b50aec">
|
||||
<prototypeId>bcb8e5ad-b8e7-44b0-a145-13de809dbf33</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Form</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="c4b18ad6-092d-4913-bb1f-1b3b007e632d"/>
|
||||
<scripts id="c9290870-7915-4826-89ba-1fb86da57701"/>
|
||||
<scripts id="57779237-6bd7-4f73-ab62-efc79cc249b9"/>
|
||||
<scripts id="ad6ccafe-914e-4e13-a351-88bf107a5007"/>
|
||||
<scripts id="9ad247a3-9c46-4f12-9949-b1c905bd73bc"/>
|
||||
<scripts id="79188cdc-d646-433e-9751-1482b9247ee6"/>
|
||||
<children id="b36d01d8-b90a-4fe0-861c-f422d28c8b9c">
|
||||
<prototypeId>ff9f35ed-bf7f-42c0-8479-068abaa39911</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="06b7502f-af4e-48b0-b70b-cad24916ed08">
|
||||
<prototypeId>624bdc70-52da-4c81-8033-316b3309260e</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="a93da22c-cecb-46f5-99d9-0ee513a5af9b">
|
||||
<prototypeId>4cde8573-92ae-4c4c-9428-d7d852e78c62</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Текст</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="22193dbb-84ba-4975-a330-c39f0f0c6081">
|
||||
<prototypeId>485b6e35-2b31-4d0e-8ce8-fe03980ea0d8</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="2afb923f-8d5a-4159-92e1-36e29eecf796"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="92482f1c-3d46-4ea4-8325-33aad15c1f6e">
|
||||
<prototypeId>0233b718-9edb-4650-863d-298d21d16aee</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>created</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="b3e71640-b543-46be-a190-c6d177d1831b"/>
|
||||
<scripts id="f45759cb-b51a-4ba8-9608-6393ca82d8ae"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="4179724d-9475-48fe-aa61-406e711de868">
|
||||
<prototypeId>5b38db22-58c4-4d64-b5ee-b252e7b0bd66</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>updated</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="f5c00722-9832-479d-bbe4-3c1295889a49"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="23f22090-1e2a-46d5-b864-a780b83cd6f7">
|
||||
<prototypeId>1aa93ca2-3ba3-4ac8-bcae-4307ceb4d3cf</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>access_level</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="23992f0e-94ed-4fb4-b4d1-dc6ad7f13227"/>
|
||||
<scripts id="efb0fec7-9951-4b36-bbda-fa17aa002d74"/>
|
||||
<scripts id="4d028ea6-e4a3-4acf-bd60-de7aa1a78f71"/>
|
||||
<scripts id="9f543b36-92e3-4a63-b8db-a4d7e852113e"/>
|
||||
<scripts id="47f307b6-79a7-4c9a-96d6-6ee423565f02"/>
|
||||
<scripts id="fc2918be-82e7-46af-b195-8c7e2e809e76"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="fc8959f2-cc4e-486a-a6c9-a09aa8e6bde8">
|
||||
<prototypeId>8e395fd7-a9b5-4eae-8c95-72e594ee3357</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="bfd36a70-07f7-4f5c-b5f6-ff081362efa4">
|
||||
<prototypeId>91956fb3-8832-4572-9823-df2e83ab8922</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="ada5c559-9fbb-4a01-9771-e373daadd1d8">
|
||||
<prototypeId>7d4e83a4-45d2-45a5-a778-40d0c0f4aa3a</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="0946ea72-2204-49eb-ad5e-27e5b841af74">
|
||||
<prototypeId>ed5afd59-d3c6-42b1-8744-687909c3f2dc</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>AvailableRecordsGrid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="53cc1ea5-3feb-4a45-b8cd-44f010fa2800"/>
|
||||
<scripts id="5a788014-f258-4cf9-890d-1ae696047a8b"/>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="bd96fb29-7063-450a-aa4d-a0cf4945de61"/>
|
||||
<scripts id="d56d612f-ce74-4a1c-9a7e-1d9bfb77360c"/>
|
||||
<scripts id="067f1a83-dd56-4884-91ac-52bb91d69a58"/>
|
||||
<scripts id="d7448a99-b5e2-413b-b0f0-68efd4b4c189"/>
|
||||
</children>
|
||||
<children id="0c89ba47-95ae-429e-9578-3fb08a768abf">
|
||||
<prototypeId>2272444f-bb2b-4c87-a54e-7c44a5cdc67a</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Buttons</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="157d1023-a926-4598-b6a4-368fba814637">
|
||||
<prototypeId>b33d3f9b-74a1-4c30-a5a6-da14bf2b8c7d</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Add</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b06faf2e-48d8-4094-ae08-5dad718007d3"/>
|
||||
</children>
|
||||
<children id="e946836f-5e7c-42b8-9af7-5dce0ceab519">
|
||||
<prototypeId>bc429b81-de76-48e1-834f-7757ab4c97a1</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>AddAll</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="cd544d24-e341-43a2-8a47-01115e200e08"/>
|
||||
</children>
|
||||
<children id="7ba0d1e9-e12c-404d-a13f-9d10f1c8b5c4">
|
||||
<prototypeId>84165e8b-829a-4656-a2e9-4ca87cfd217e</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>Remove</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="7b247053-e690-44e7-ad8b-82f574bc7d6d"/>
|
||||
</children>
|
||||
<children id="0269bd1e-5848-4f41-91d0-7a9dca2ab66b">
|
||||
<prototypeId>49906463-bdeb-424c-aa70-afec7bc4da20</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>RemoveAll</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="5bb38c78-84e3-4c42-9fef-5183111ad1aa"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="df161b5c-9a26-4129-a047-827e2cd4e8b2">
|
||||
<prototypeId>ed375b71-5f95-43af-ae69-5a5eacb3f479</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>LinkFieldDialog</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="4bb5549d-f484-40da-99d1-998c8c963789"/>
|
||||
<scripts id="a3fe02c2-a871-481f-bbed-a278b2ce8b13"/>
|
||||
<scripts id="b500faf2-33d5-47ba-8bd0-b17670edc9df"/>
|
||||
<scripts id="603631c2-ddf5-400f-8238-7844782ed5fb"/>
|
||||
<scripts id="01009323-fac3-43d6-9c9c-d40ddd537cfe"/>
|
||||
<scripts id="e8d7e9c0-afbd-4e9e-a475-00e5ad024d6d">
|
||||
<enabled>false</enabled>
|
||||
</scripts>
|
||||
<scripts id="39608513-f2fe-47d8-83ae-f4e34ee43cdb"/>
|
||||
<scripts id="a35eb2bb-94e7-4903-bb1c-a045d93782ba"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="560e796d-14ba-489a-9e0a-1a648cf73e3a">
|
||||
<prototypeId>a65dbf74-aa81-4b28-b008-2df11395b9f8</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="5e246e93-5fb6-4c2c-8eed-e792e6ad5735">
|
||||
<prototypeId>b9463b17-97c1-4c49-9fc7-e4ee9bb621dd</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>save-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
</children>
|
||||
<children id="1c0dc06e-76c8-4a6b-b73e-d5b9eae9b2cd">
|
||||
<prototypeId>0b170e2b-a865-4aca-a9da-c7da77d9b0fd</prototypeId>
|
||||
<componentRootId>deab5d8f-591d-41b4-8485-1c5d3ef48a16</componentRootId>
|
||||
<name>exit-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
</children>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,229 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-groups</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="edc984f0-039d-4fa6-93d2-df03bf6dc08c">
|
||||
<prototypeId>0f8d0a8b-8014-4367-8ff3-7f049c284978</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>Groups</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="4edaccaa-ce4f-4703-a698-f4170aa9df5f">
|
||||
<prototypeId>7a7ae21a-2c01-49ee-a2d4-22f933d9445c</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="a81d3587-d5b7-44f1-8cdd-af797162f818">
|
||||
<prototypeId>9055eba3-0243-4746-9890-70b486c3fb8d</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>FilterGroup</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="3f5f352c-1a86-4702-a914-6c163c903157">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>filterableComp</key>
|
||||
<value>
|
||||
<simple>null</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="b5dcccfd-643a-4c8c-aa3b-a44da851a86a">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>filterable</key>
|
||||
<value>
|
||||
<simple>{"objectId":"1ddc006e-75b2-4103-87e1-7991c9f3520d","packageName":"rpc","className":"GridRpcService","type":"JAVA"}</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="f3aff680-1783-45ac-9dcc-fc7f76fd8110">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="7176bfcf-d736-48a3-b620-6a77412d4026"/>
|
||||
<scripts id="21c9994a-3743-4adb-ae52-130f48aeab83"/>
|
||||
<scripts id="fc0d4368-d207-4b1f-b9e9-4bb06ae7291f"/>
|
||||
<children id="96fa1a5d-b031-477c-ba1b-467b84479a5e">
|
||||
<prototypeId>9c81110c-d0d5-4d2a-afa8-e5b093ad47ba</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>search</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="734c5516-d349-4b42-a92a-4469760104fe"/>
|
||||
<scripts id="03303cda-9195-45db-8a93-4b3e9340d506"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="ab666d58-a9b4-417c-9da9-eab2e0b6a958">
|
||||
<prototypeId>1ddc006e-75b2-4103-87e1-7991c9f3520d</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>Grid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="c3c97f9e-5b9a-488b-ae19-6e4cb8fd0835"/>
|
||||
<scripts id="7f3a1500-8834-4e0b-ac07-1e3ca79893b8"/>
|
||||
<scripts id="0e46c03a-886b-47bb-8ac0-ebd6c4e1fed8"/>
|
||||
</children>
|
||||
<children id="e244a39f-355f-4e67-9794-7d831a70fbd2">
|
||||
<prototypeId>3ae192dd-d45b-4c23-bd8d-b386abda0273</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="d47c01f2-6c2e-46f9-a793-1303e9f4cc6c">
|
||||
<prototypeId>18b01c4c-1c1d-4436-870d-7541a72648b6</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>create-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
<scripts id="6ff714a8-34a6-405c-a8de-2a309a2eb1d2"/>
|
||||
</children>
|
||||
<children id="7cf8274b-2beb-4353-9769-f3fe63829de0">
|
||||
<prototypeId>5c8de2f4-6849-48bc-b8dd-36e649ad2540</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>edit-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="d9f3e73e-a18c-4ff6-80f5-0698f90db0c3"/>
|
||||
<scripts id="a6cc52aa-12b6-4324-bac9-4119103f77b2"/>
|
||||
</children>
|
||||
<children id="3556a56a-df79-4417-8ab5-9bd428c13911">
|
||||
<prototypeId>4a9e9ed8-9936-428d-8ddd-4502e2a55700</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>delete-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0d"/>
|
||||
<scripts id="3b670fbf-d046-4d08-9bbe-c9cc320b5473"/>
|
||||
</children>
|
||||
<children id="a6183d73-802d-4d37-91d4-24bc28bc115c">
|
||||
<prototypeId>26d4430f-ddf1-4997-83c5-0009edf32719</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>ac-create</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="9b918034-46dc-4509-ac72-88fa885261ef">
|
||||
<prototypeId>15964601-92db-4da1-a279-5664844a0bf5</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>ac-edit</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="16e939af-7075-4ca1-99a6-ff426217a9df">
|
||||
<prototypeId>c4317a56-f9f6-4ea1-90bc-776c3bfaa8c0</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>ac-delete</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="d04b2db6-18f5-4f6a-b786-93d2350ade81">
|
||||
<prototypeId>6c034de2-0633-4f45-9ba1-625a00421718</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>Roles</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="81c443eb-55f8-4504-b5d9-4a71d3c70a3a">
|
||||
<prototypeId>3acecb3c-c1d3-4a1e-9873-1c6050ff74f0</prototypeId>
|
||||
<componentRootId>edc984f0-039d-4fa6-93d2-df03bf6dc08c</componentRootId>
|
||||
<name>RolesGrid</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="c3c97f9e-5b9a-488b-ae19-6e4cb8fd0835"/>
|
||||
<scripts id="9ce2d664-4bee-41cb-b226-77bd8322ede1"/>
|
||||
<scripts id="8338dd50-04dc-497c-bfaf-720a8c7509ff"/>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,168 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-org-units</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3">
|
||||
<prototypeId>5cc0e63d-f697-47a8-a9dc-3170f1a99721</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>Organizations</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="886ac172-506a-4fa4-8206-1a96f32d354d">
|
||||
<prototypeId>c262a5da-38cb-4739-9d59-3bb7fdf55e26</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>Текст</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="87577f03-906e-427a-bce4-316a575c5c43">
|
||||
<prototypeId>2c143f13-f25f-49e2-8615-aa76a1dac394</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>Группа фильтров</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="3f5f352c-1a86-4702-a914-6c163c903157">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>filterableComp</key>
|
||||
<value>
|
||||
<simple>null</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="b5dcccfd-643a-4c8c-aa3b-a44da851a86a">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>filterable</key>
|
||||
<value>
|
||||
<simple>{"objectId":"2db7e240-3978-4826-aa2d-4d031cb0e7a0","packageName":"rpc","className":"TreeGridRpcService","type":"JAVA"}</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="f3aff680-1783-45ac-9dcc-fc7f76fd8110"/>
|
||||
<scripts id="7176bfcf-d736-48a3-b620-6a77412d4026"/>
|
||||
<scripts id="21c9994a-3743-4adb-ae52-130f48aeab83"/>
|
||||
<scripts id="fc0d4368-d207-4b1f-b9e9-4bb06ae7291f"/>
|
||||
<children id="8255eac9-f9c8-4f58-96e0-a8f377f6066f">
|
||||
<prototypeId>d64cc9e2-4e33-4a5d-9792-d4ac8f5a5754</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>Фильтр по текстовому полю</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="734c5516-d349-4b42-a92a-4469760104fe"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="2132ba87-abe7-4551-b54e-fe5ea10ef290"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="9484883a-3a6b-45d5-93c6-695ee47912db">
|
||||
<prototypeId>2db7e240-3978-4826-aa2d-4d031cb0e7a0</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>Древовидная таблица</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="a01d4d82-4ab0-4fa0-8e33-a241da64767e"/>
|
||||
<scripts id="9d216075-d5a5-4313-a8b2-ba32d8b9a84b"/>
|
||||
<scripts id="a5fa4588-3c5f-4c17-9a11-82180ed166cc"/>
|
||||
</children>
|
||||
<children id="5427dd68-37d7-42e4-bf21-805f9b9b9b98">
|
||||
<prototypeId>e3ca31f5-4ec1-45a9-b195-94806048ba3f</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="8ab6ea3a-d30f-4057-ae3a-9a694183cee8">
|
||||
<prototypeId>480a06a2-f4b1-46eb-bf3f-0e4097460719</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>create-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
<scripts id="6ff714a8-34a6-405c-a8de-2a309a2eb1d2"/>
|
||||
</children>
|
||||
<children id="25ec66d2-6da6-4db8-94a5-d50486864135">
|
||||
<prototypeId>653b6b0c-072c-40d1-bcc0-41157a888fad</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>edit-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="d9f3e73e-a18c-4ff6-80f5-0698f90db0c3"/>
|
||||
<scripts id="a6cc52aa-12b6-4324-bac9-4119103f77b2"/>
|
||||
</children>
|
||||
<children id="122b0f68-53c9-4d94-8c69-e83df0ed665f">
|
||||
<prototypeId>e61b659b-d293-4005-a1c2-0d110d058c52</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>delete-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0d"/>
|
||||
<scripts id="3b670fbf-d046-4d08-9bbe-c9cc320b5473"/>
|
||||
</children>
|
||||
<children id="804d0b5e-0d3c-4421-9e9c-de178b0e5f71">
|
||||
<prototypeId>a01d154c-55fe-4a77-97b0-e2e90ce5e370</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>ac-create</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="3e721c29-8137-489c-a318-5b50e517db42">
|
||||
<prototypeId>8ec15acd-7973-4f09-8723-3c69ec829f78</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>ac-edit</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="6477da51-5f38-4128-88c6-ce5cf72b1c9a">
|
||||
<prototypeId>885a70ad-e6fd-4a17-a9ac-66c326c117fe</prototypeId>
|
||||
<componentRootId>73bf62ed-7cbe-4b46-be5e-5669e5e3f2f3</componentRootId>
|
||||
<name>ac-delete</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,225 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-org-unit</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="0e7f6825-534f-4eba-9ec6-c43cbad07636">
|
||||
<prototypeId>63022aff-e117-4b58-88ac-8e230b0e9b22</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>OrganizationEdit</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="4396436c-370e-48df-bea2-589b57874947">
|
||||
<prototypeId>2b44d4d9-20e0-49be-8a98-993fd14f7be5</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Текст</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="65d273bf-d2a9-45a7-a84d-a88de09b4ad6">
|
||||
<prototypeId>ff113441-2a31-440c-9c81-a987176bff61</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Форма</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="c4b18ad6-092d-4913-bb1f-1b3b007e632d"/>
|
||||
<scripts id="c9290870-7915-4826-89ba-1fb86da57701"/>
|
||||
<scripts id="57779237-6bd7-4f73-ab62-efc79cc249b9">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="ad6ccafe-914e-4e13-a351-88bf107a5007"/>
|
||||
<scripts id="9ad247a3-9c46-4f12-9949-b1c905bd73bc"/>
|
||||
<scripts id="79188cdc-d646-433e-9751-1482b9247ee6"/>
|
||||
<children id="0880b7bf-45bc-4be7-bb35-41099723257b">
|
||||
<prototypeId>bd8deb9b-95ce-4849-b214-19cb36d94830</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="ba4f580e-2f2d-4617-bb7b-0126f5aa5f61">
|
||||
<prototypeId>b994094c-96bb-476f-8f92-f5fa3c2961bd</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="ce6f98f4-039b-4f06-9b14-7311856a8fbc">
|
||||
<prototypeId>51b5145b-92ca-42be-9aa4-9402abe670c7</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Выпадающий список (с возможностью сохранения)</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="23992f0e-94ed-4fb4-b4d1-dc6ad7f13227"/>
|
||||
<scripts id="efb0fec7-9951-4b36-bbda-fa17aa002d74"/>
|
||||
<scripts id="c00949dd-0091-483c-bbf1-6e8f7f091869"/>
|
||||
<scripts id="4d028ea6-e4a3-4acf-bd60-de7aa1a78f71"/>
|
||||
<scripts id="9f543b36-92e3-4a63-b8db-a4d7e852113e"/>
|
||||
<scripts id="47f307b6-79a7-4c9a-96d6-6ee423565f02"/>
|
||||
</children>
|
||||
<children id="f09552c8-353c-4d4b-b48b-437e5bc3df1c">
|
||||
<prototypeId>64e9908e-1afc-4ae1-adb3-512576ea8ff4</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Текстовое поле (с возможностью сохранения)</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="319aadc0-25fa-45fb-a2a5-3f27c6590bfe"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="db2b1414-6f6e-43c7-8e39-143c058bf7f5">
|
||||
<prototypeId>f8640cfc-d68c-4596-80a5-0ecb2c6ce5a4</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Текстовое поле (с возможностью сохранения)</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="2731eb56-349b-437c-8fae-363aef0659d1"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="4444efaf-aaa4-4c35-88a7-5fa0ec778948">
|
||||
<prototypeId>10165a7a-48db-42dc-882e-afcfad67717a</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="dcf31202-99b5-4867-b220-d75b18292462">
|
||||
<prototypeId>1bb8d3bb-5e09-49ba-8169-488e55f2285a</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="32d9efda-4f8e-416b-880f-66df6b279b5e">
|
||||
<prototypeId>e426c18f-190b-4dac-be54-dad7a39d2000</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>save-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
</children>
|
||||
<children id="3eca6d40-ee3d-4460-a0c1-f21aa1d6cf2c">
|
||||
<prototypeId>7ca91a23-0453-4875-9288-312d051defcd</prototypeId>
|
||||
<componentRootId>0e7f6825-534f-4eba-9ec6-c43cbad07636</componentRootId>
|
||||
<name>exit-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
</children>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,531 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-user-edit</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="77d9d4a8-d9a5-47a3-b614-4f4f66893c98">
|
||||
<prototypeId>c4b48815-f449-48fe-9ae0-dec9b6f4c53c</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>UsersEdit</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="1b290108-e35f-4958-a398-2990c5af7cd3">
|
||||
<prototypeId>10b97eb7-30d3-4af1-877c-7870d5178172</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="fa3bd49f-fe20-427f-8d2e-d36d8adaa0f0">
|
||||
<prototypeId>9d2fca5f-4354-46fc-a743-2644fbb9699d</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Form</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5b65252f-09a6-4998-bf36-36816961fa2d"/>
|
||||
<scripts id="6b160b6e-7f5d-46d3-8e42-e16045c135b2"/>
|
||||
<scripts id="57779237-6bd7-4f73-ab62-efc79cc249b9"/>
|
||||
<scripts id="ad6ccafe-914e-4e13-a351-88bf107a5007"/>
|
||||
<scripts id="9ad247a3-9c46-4f12-9949-b1c905bd73bc"/>
|
||||
<scripts id="79188cdc-d646-433e-9751-1482b9247ee6"/>
|
||||
<scripts id="513a1b43-dd9c-433b-8033-2c66896106c9"/>
|
||||
<children id="087daffe-e0a5-4d19-b56f-a85f9f87f134">
|
||||
<prototypeId>b538ab89-381a-4c01-b8f6-77cb61a2b3f6</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="55c26a33-c071-401a-a679-569d463abd2e">
|
||||
<prototypeId>2f2b7ec7-dfd8-4789-b27b-5d72f509314c</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="b2b64253-9d0a-4c10-a74f-322043c9947c">
|
||||
<prototypeId>2837d2f5-2a60-400e-ab3f-68556cce3981</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="63fd6e7d-191c-42ed-a32f-1ca9398df4d2">
|
||||
<prototypeId>51ad723f-1b70-49ca-96be-137e51e907bb</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="0d9b977a-91d1-4ed0-8d53-413c144a78f1">
|
||||
<prototypeId>2adc0c45-dd66-4398-b21b-27a008756228</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
</children>
|
||||
<children id="b1140e34-1132-447b-a8a5-1b4ed0fbfe05">
|
||||
<prototypeId>80de32f7-e75d-44c4-9c5a-8fa9e9563ebf</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="f78f73a6-d5b2-41fc-8bef-dc52c07fd487">
|
||||
<prototypeId>c4ce09bf-b91d-4025-8715-e76925202713</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>last-name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="f133b0b6-1bd8-4e05-875f-fbf35eb539ca"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="927dc6c0-60aa-4bef-adbc-c8c1a6e8ca34">
|
||||
<prototypeId>bc4815fd-2f8d-4545-b6f8-7a651beef2f6</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>first-name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="c3ecbf19-dd91-4fe9-97e6-2988b0f041bf"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="5580c8c1-bcf4-409e-9a7e-c60b75abdb83">
|
||||
<prototypeId>778d3b64-d52f-48ff-b854-7df244f20d55</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>middleName</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="1e1f0789-d5a4-4e04-8c0c-89a0040b62b7"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="8dbf053a-d82b-431e-8f34-25136214e958">
|
||||
<prototypeId>7c66e464-2e75-4774-93ae-fbd88633fab7</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>phone</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="1e1f0789-d5a4-4e04-8c0c-89a0040b62b7"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="cdc51773-8fc5-48b2-ae54-0973e04faf2e">
|
||||
<prototypeId>a014b3b3-1cd2-46cd-b317-74fa0dbf5733</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>created</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="275a5858-ae67-4b09-ba44-2a1df8a9c524"/>
|
||||
<scripts id="a1f7e57b-164c-4cbe-ae25-7feb9819009f"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="376f7f67-7053-4095-91f8-94d1c8fb9871">
|
||||
<prototypeId>627b604f-8102-4df7-932a-ac88b410ed1b</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>updated</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="460e2787-a41a-4eeb-baf1-f7b9b16e927f"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="cbbc94b8-712f-45fc-b63d-fae9a2c52741">
|
||||
<prototypeId>b5373d18-ea29-428e-be37-62016f619693</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="bfccbac2-a419-4e3f-856a-17354b7d7d87">
|
||||
<prototypeId>0507914c-bc97-4e76-8ef5-4617c868b50a</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="8c625dbf-7225-45a8-89ed-b9a96e56b78e">
|
||||
<prototypeId>749b6444-6ba3-4ca5-a6f7-eaef9641e644</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="ec59850c-2739-4705-af7f-0dd0143a7df7">
|
||||
<prototypeId>00688380-2458-43bc-96ca-6b3b775bcce0</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
</children>
|
||||
<children id="08757906-5087-4173-acc3-699cb2d96194">
|
||||
<prototypeId>ed515db1-d2d0-495e-ab83-4a66431b311d</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="5cbe97aa-e7ff-4966-a248-0e1976aae7b6">
|
||||
<prototypeId>77dc7647-69d5-4f7c-9f75-14eaa4609671</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>login</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="d9cc59a5-1aa7-4475-92d2-4e80fc2666e1"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="a4a646d6-1691-4786-8bc7-e20451263e21">
|
||||
<prototypeId>bbb1fc4f-922e-46e4-8ceb-b911af24a32f</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>password</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="1d0f9d8e-1669-454a-a11e-2602b37d010a"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="cd632c24-f994-46fd-a0fd-3d113f9c81c1"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
<children id="09688b16-ca1f-4e44-8e22-b4a870c63bd1">
|
||||
<prototypeId>84ef055e-dd0d-446e-87d4-9c25a3fc86e0</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>password-repeat</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="d8073293-b8c0-4296-b613-43565ae62e6a">
|
||||
<prototypeId>04c23030-0c55-414a-9228-77ce8046deac</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>email</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>required</key>
|
||||
<value>
|
||||
<simple>false</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="65a2fd7d-1842-48ed-a297-6f1aa1a6b3d2"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="cc8b3cca-f614-49f4-97fc-35691b17fac4">
|
||||
<prototypeId>5486199d-c932-413c-8ab6-e674633898af</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>blocked</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="b7c451ce-53e4-45be-8fec-2bcd67fac11c"/>
|
||||
<scripts id="514bc2c8-5fa9-4a6d-bf18-e37d109c757b"/>
|
||||
<scripts id="4273d23d-add7-483f-95a5-0849005c975b"/>
|
||||
<scripts id="d4e0342b-e32a-415c-8d45-83b71f074db2"/>
|
||||
<scripts id="cf967f04-f483-4815-b84e-8d502546c07e"/>
|
||||
</children>
|
||||
<children id="c4bf2477-c900-439e-be3c-590457ecf820">
|
||||
<prototypeId>3c84ea2f-68bb-4cba-a32a-da97a043e84c</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>password-changed</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="d52f78ff-4dbe-43ad-b9c8-212904229482"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="48faa0ef-1aa4-4f07-80c3-fb44f95da823">
|
||||
<prototypeId>7cde5b9a-404d-4654-ae17-f0c753c64518</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>password-expires</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="0b481b9a-aaaa-4302-9591-21061c2b7f0e"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="d6689963-5770-4785-902d-2607c1792bf4">
|
||||
<prototypeId>ad491899-f407-4067-a0fe-d59e528b7470</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>org_unit_id</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="23992f0e-94ed-4fb4-b4d1-dc6ad7f13227"/>
|
||||
<scripts id="efb0fec7-9951-4b36-bbda-fa17aa002d74"/>
|
||||
<scripts id="4d028ea6-e4a3-4acf-bd60-de7aa1a78f71"/>
|
||||
<scripts id="9f543b36-92e3-4a63-b8db-a4d7e852113e"/>
|
||||
<scripts id="47f307b6-79a7-4c9a-96d6-6ee423565f02"/>
|
||||
<scripts id="ec1e9370-303a-4a7e-948f-27ef7687cd03"/>
|
||||
<scripts id="a2bcda6f-0d7a-4438-a3bc-39407f6b504f"/>
|
||||
</children>
|
||||
<children id="6d377c43-560b-434c-b573-f7edd4a2d74b">
|
||||
<prototypeId>a9e6fbb2-4bb7-40af-966a-b22e6074e31c</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>password-validate</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="ca52740b-c0d9-4544-bbbb-f083877e384f"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="5213ab96-5011-4811-b2ee-0dc906fb9d60">
|
||||
<prototypeId>2142f803-011b-44cb-834b-a71c16debb88</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="9aeb7354-96b3-4a8f-91e4-ecb3022d7724">
|
||||
<prototypeId>fe1ee732-1a3f-44ec-a6c4-caa6b0ee5151</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="804b17fe-6512-4abe-be30-2642d139b188">
|
||||
<prototypeId>dd4366b6-b12e-4426-8004-22b9d1cf5db8</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="6fc04db2-b6fb-4385-8d2a-8a3c31613e1d">
|
||||
<prototypeId>db2236ac-ab9e-403c-bc96-3b4b6882ddf3</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>AvailableRecordsGrid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="53cc1ea5-3feb-4a45-b8cd-44f010fa2800"/>
|
||||
<scripts id="5a788014-f258-4cf9-890d-1ae696047a8b"/>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="bd96fb29-7063-450a-aa4d-a0cf4945de61"/>
|
||||
<scripts id="80fb96da-9b1a-4ca7-8f6d-136d4a1d0c90"/>
|
||||
<scripts id="ddf99c78-3db1-4a4e-b132-12410eddfe45"/>
|
||||
<scripts id="c336dd67-ff0a-4b10-92f0-1e81972a6b6d"/>
|
||||
</children>
|
||||
<children id="6ff38e35-a1b1-4a2f-8de1-b12bbeafd5bd">
|
||||
<prototypeId>9ac36b9c-2c4e-46dc-9f62-e713bc4dac7c</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Buttons</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="a9ab20b8-fd5d-446d-add0-e07444c6bf41">
|
||||
<prototypeId>6b850ea5-255b-418c-be2d-5ec96d31e2bd</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Add</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b06faf2e-48d8-4094-ae08-5dad718007d3"/>
|
||||
</children>
|
||||
<children id="5138a472-b603-4f75-a40d-791e897183d5">
|
||||
<prototypeId>3b902822-cad9-4f06-9ddc-48d48378a06e</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>AddAll</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="cd544d24-e341-43a2-8a47-01115e200e08"/>
|
||||
</children>
|
||||
<children id="a396a845-386d-4a9a-8d73-05231cf859cd">
|
||||
<prototypeId>35c8b7b8-4527-4c67-b0cb-2755cd40ee5a</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Remove</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="7b247053-e690-44e7-ad8b-82f574bc7d6d"/>
|
||||
</children>
|
||||
<children id="6f332b45-ec43-4836-90ee-aeaa1cf6252d">
|
||||
<prototypeId>0263acc1-f1e9-44a6-b175-f679838a5d4a</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>RemoveAll</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="5bb38c78-84e3-4c42-9fef-5183111ad1aa"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="8e068cdd-b7f0-4273-8875-d65be75302de">
|
||||
<prototypeId>05d0feb4-fd4a-49c4-bd75-54866a194c49</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>LinkFieldDialog for save</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="4bb5549d-f484-40da-99d1-998c8c963789"/>
|
||||
<scripts id="a3fe02c2-a871-481f-bbed-a278b2ce8b13"/>
|
||||
<scripts id="b500faf2-33d5-47ba-8bd0-b17670edc9df"/>
|
||||
<scripts id="f388a0d0-e14b-4700-b24b-86e392ed935c"/>
|
||||
<scripts id="3ef16eb9-959a-433c-8c47-88286526ae55"/>
|
||||
<scripts id="e8d7e9c0-afbd-4e9e-a475-00e5ad024d6d"/>
|
||||
<scripts id="39608513-f2fe-47d8-83ae-f4e34ee43cdb"/>
|
||||
<scripts id="ec1b3693-4777-486a-9d73-473ea2024995"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="09a8ab92-ea55-4d32-955e-11497980078e">
|
||||
<prototypeId>c34de737-90e6-4db0-a417-186a7ee0b8ad</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="72a27b92-951b-493b-80d8-f7dd55bb46a3">
|
||||
<prototypeId>41b7094b-17d2-46cc-b2c3-a2ab5823a01a</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>save-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
</children>
|
||||
<children id="e0eef911-21ff-481e-a76a-1e26684f958e">
|
||||
<prototypeId>f70c25d7-0dcf-4d00-bec4-44a059217558</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>cancel-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="3de7e10b-0439-4aca-bb63-84bdc0d1ce40">
|
||||
<prototypeId>94939abc-6c57-464e-b480-c86ea7a689e9</prototypeId>
|
||||
<componentRootId>77d9d4a8-d9a5-47a3-b614-4f4f66893c98</componentRootId>
|
||||
<name>Скрыть и сделать неактивным</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,455 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-user-create</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="42a604ab-8830-4fb9-bd8b-b3ca06ebdd46">
|
||||
<prototypeId>5f9c58f8-9ee1-4df3-b93c-e48534e798db</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>UsersCreate</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="56c16669-eb25-4e5a-b3b4-226d1ec016d3">
|
||||
<prototypeId>e44fca88-2550-43a5-acc6-8b3d8a320f54</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="1112b0b9-7641-449e-b27e-7b954c6a49fa">
|
||||
<prototypeId>dd8d4f7a-d682-4ad5-b912-2f893c80286c</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>Form</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5b65252f-09a6-4998-bf36-36816961fa2d"/>
|
||||
<scripts id="6b160b6e-7f5d-46d3-8e42-e16045c135b2"/>
|
||||
<scripts id="57779237-6bd7-4f73-ab62-efc79cc249b9"/>
|
||||
<scripts id="ad6ccafe-914e-4e13-a351-88bf107a5007"/>
|
||||
<scripts id="9ad247a3-9c46-4f12-9949-b1c905bd73bc"/>
|
||||
<scripts id="79188cdc-d646-433e-9751-1482b9247ee6"/>
|
||||
<children id="383d1c14-43d2-4822-87ed-11949a71731a">
|
||||
<prototypeId>2d7ce830-8c41-45b4-ae68-65aa13bfd73d</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="159cf81a-72e4-436d-bb8a-f5c83543ab63">
|
||||
<prototypeId>93142136-1c5f-48ee-bbed-735568f4dc5a</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="b4ccfdba-cf8d-4313-94f8-a9d741bf00e0">
|
||||
<prototypeId>262f4f43-1fce-4db7-a1e8-79cec29d193d</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="d2749eae-4940-46cb-afd5-a3f59ae8a50b">
|
||||
<prototypeId>ef93e007-1dca-4b4b-9214-55e4206139f3</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>last-name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="f133b0b6-1bd8-4e05-875f-fbf35eb539ca"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="71c74fa2-bf44-4b13-927e-4c581ddff9b5">
|
||||
<prototypeId>3267256f-78bd-46ca-ad92-e25f41660ec0</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>first-name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="c3ecbf19-dd91-4fe9-97e6-2988b0f041bf"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="477583e1-1674-40fe-845c-98374152cae3">
|
||||
<prototypeId>f8710d37-2fb4-4a70-aae6-065e039c6456</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>middleName</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="1e1f0789-d5a4-4e04-8c0c-89a0040b62b7"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="d8111745-5794-4862-9d22-c867031b7cef">
|
||||
<prototypeId>d561dee7-1216-4969-9e83-4c45ed4116cf</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>phone</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="1e1f0789-d5a4-4e04-8c0c-89a0040b62b7"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="be9d4614-725a-43e8-b8de-a94253d6b0bd">
|
||||
<prototypeId>47505972-bba3-481f-8c60-573a3060ff51</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>created</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="275a5858-ae67-4b09-ba44-2a1df8a9c524"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="d4cb659b-a052-4cbf-bc4d-043853c5557f">
|
||||
<prototypeId>38387d09-b753-4ca7-9916-6e2745a913b6</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>updated</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="460e2787-a41a-4eeb-baf1-f7b9b16e927f"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="f12be901-2347-4f20-b537-214272fff89f">
|
||||
<prototypeId>b8f86b7b-bbfb-453d-b5d2-85fb75b89ce7</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="4a6f7f54-124d-4408-9093-94ace8e023e5">
|
||||
<prototypeId>63ea4fcf-b2ea-493a-9127-7a4aa14b5a0b</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="deefef2b-0844-4788-bc1f-eb825e8ba7e0">
|
||||
<prototypeId>7d28a15a-bf1a-4dac-8637-a72b13595e78</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>login</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="d9cc59a5-1aa7-4475-92d2-4e80fc2666e1"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="3972d563-31b9-4367-8d52-a9f4da03d0e5">
|
||||
<prototypeId>4a616993-de8f-4b2f-b3e6-86f09cf6447c</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>password</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="1d0f9d8e-1669-454a-a11e-2602b37d010a"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="cd632c24-f994-46fd-a0fd-3d113f9c81c1"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
<children id="08fb4dad-b287-4f5a-88f7-e8df2bd22021">
|
||||
<prototypeId>040f3580-a20b-449c-8587-c9e399b5e6a2</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>password-repeat</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="afdb682c-4b78-4dfc-a647-114fd0d582b8">
|
||||
<prototypeId>7d626425-0b20-4e2f-a3b3-7452f1a5df9e</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>email</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>required</key>
|
||||
<value>
|
||||
<simple>false</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="65a2fd7d-1842-48ed-a297-6f1aa1a6b3d2"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="4a33fc06-ce99-41d6-968f-c60998fc2f41">
|
||||
<prototypeId>09c340df-f4bb-4cc6-9a9f-76b78dca7143</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>password-changed</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="d52f78ff-4dbe-43ad-b9c8-212904229482"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="201f6530-6a34-4a9b-a942-0519a9efdf3c">
|
||||
<prototypeId>4d56ec4a-6df8-4a6c-8c44-d77c1a8099df</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>password-expires</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="0b481b9a-aaaa-4302-9591-21061c2b7f0e"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="beb2e4be-4381-4cff-bf5a-34d772451888">
|
||||
<prototypeId>dad3e113-6fc0-4577-a730-a99af433b70b</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>org_unit_id</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="23992f0e-94ed-4fb4-b4d1-dc6ad7f13227"/>
|
||||
<scripts id="efb0fec7-9951-4b36-bbda-fa17aa002d74"/>
|
||||
<scripts id="4d028ea6-e4a3-4acf-bd60-de7aa1a78f71"/>
|
||||
<scripts id="9f543b36-92e3-4a63-b8db-a4d7e852113e"/>
|
||||
<scripts id="47f307b6-79a7-4c9a-96d6-6ee423565f02"/>
|
||||
<scripts id="fbee16c2-a234-49c5-9ee5-379c256fa95e"/>
|
||||
</children>
|
||||
<children id="452550b3-145a-4213-aaac-2b663a4d50cf">
|
||||
<prototypeId>e1b037cb-0008-450f-8719-621422b6e155</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>password-validate</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="ca52740b-c0d9-4544-bbbb-f083877e384f"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="21b4a639-6459-4261-a7f9-7ac0e6d7a355">
|
||||
<prototypeId>f414d74e-2247-4e41-8280-638063712186</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="13ca007c-f560-4369-9a2a-4f30277add84">
|
||||
<prototypeId>0b9b0cf3-55c1-4108-bea2-f70100ab92f2</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="51eb150c-2375-4759-9dce-1d5ce5002827">
|
||||
<prototypeId>d148dfe4-0c8a-4bb2-94da-336d4399a7c4</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="f80a1669-4c6d-4513-900b-8dccfa932f2c">
|
||||
<prototypeId>7c06a3a6-1040-4bc0-bf3c-4760cd70335a</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>AvailableRecordsGrid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="53cc1ea5-3feb-4a45-b8cd-44f010fa2800"/>
|
||||
<scripts id="5a788014-f258-4cf9-890d-1ae696047a8b">
|
||||
<enabled>false</enabled>
|
||||
</scripts>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="bd96fb29-7063-450a-aa4d-a0cf4945de61"/>
|
||||
<scripts id="80fb96da-9b1a-4ca7-8f6d-136d4a1d0c90"/>
|
||||
<scripts id="0e1ff3d7-ebc6-4706-9baa-3ed434b70dd8"/>
|
||||
<scripts id="a5049bea-9fc0-447f-a49f-ae8470b9543a"/>
|
||||
<scripts id="17f15dbe-2516-43d4-b261-6fe16afebaa4">
|
||||
<classRef type="TS">
|
||||
<className>ErvuAvailableGridFilter</className>
|
||||
<packageName>account_applications.component.filter</packageName>
|
||||
</classRef>
|
||||
<enabled>true</enabled>
|
||||
<expanded>true</expanded>
|
||||
<properties>
|
||||
<entry>
|
||||
<key>existingRowsField</key>
|
||||
<value>
|
||||
<simple>{"objectId":"5691688f-b132-46b2-8ee9-2641d0c8b4f0","packageName":"modules.user-management.component","className":"StaticColumnLinkField","type":"TS"}</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
</children>
|
||||
<children id="9a73b8fe-47dc-497e-8f0b-b97376e61ea1">
|
||||
<prototypeId>8bf9cb9b-edc5-4009-be41-c838c5d8e63d</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>Buttons</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="2a9b2511-9c11-46f6-861c-ff2643b58128">
|
||||
<prototypeId>18cdf07c-f772-4be3-8eea-2ca5d3f651eb</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>Add</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b06faf2e-48d8-4094-ae08-5dad718007d3"/>
|
||||
</children>
|
||||
<children id="7c82e163-4e0e-4420-afbf-99fc179b9b3f">
|
||||
<prototypeId>3074285f-453f-4ad2-8ae2-6cddaf5e8e0f</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>AddAll</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="cd544d24-e341-43a2-8a47-01115e200e08"/>
|
||||
</children>
|
||||
<children id="70323de2-66b6-4c6e-b007-72a2a2386966">
|
||||
<prototypeId>1498ef4e-0a51-4dac-9b06-8d83263f03b4</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>Remove</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="7b247053-e690-44e7-ad8b-82f574bc7d6d"/>
|
||||
</children>
|
||||
<children id="5e9ed3d5-f5a2-4613-83d9-f95a5bd73458">
|
||||
<prototypeId>407e4d1d-7adf-415c-9ff6-19c4f2a8223f</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>RemoveAll</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="5bb38c78-84e3-4c42-9fef-5183111ad1aa"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="5691688f-b132-46b2-8ee9-2641d0c8b4f0">
|
||||
<prototypeId>379fd159-d5a5-4b96-805b-0bae71b3f495</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>LinkFieldDialog for save</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="4bb5549d-f484-40da-99d1-998c8c963789"/>
|
||||
<scripts id="a3fe02c2-a871-481f-bbed-a278b2ce8b13"/>
|
||||
<scripts id="b500faf2-33d5-47ba-8bd0-b17670edc9df"/>
|
||||
<scripts id="f388a0d0-e14b-4700-b24b-86e392ed935c"/>
|
||||
<scripts id="3ef16eb9-959a-433c-8c47-88286526ae55"/>
|
||||
<scripts id="e8d7e9c0-afbd-4e9e-a475-00e5ad024d6d">
|
||||
<enabled>false</enabled>
|
||||
</scripts>
|
||||
<scripts id="39608513-f2fe-47d8-83ae-f4e34ee43cdb"/>
|
||||
<scripts id="c55450df-af8c-4c60-b5b3-7ceccda4853e"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="5a790a1e-0f04-4eda-b774-34de77c19a90">
|
||||
<prototypeId>8766dbfa-3bf8-4e80-9662-c9a9865ad15c</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="09496747-a880-49a7-879a-49788dc9a85d">
|
||||
<prototypeId>796756c2-02da-4f18-9ab0-cae55047227a</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>save-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
</children>
|
||||
<children id="cbc3cdd7-9dc3-4753-88b9-4c18aaf99d91">
|
||||
<prototypeId>95e88b88-64d3-482b-bc59-de692c3a44f6</prototypeId>
|
||||
<componentRootId>42a604ab-8830-4fb9-bd8b-b3ca06ebdd46</componentRootId>
|
||||
<name>cancel-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,723 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-users</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="245a43c7-6af2-45d7-ac76-9195075586a7">
|
||||
<prototypeId>0f470331-dfb0-4f10-b748-c9a7f33d31d9</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>Users</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="eae3f5cb-920e-4d77-a11c-34df92eadac0">
|
||||
<prototypeId>ea5eba30-e9c2-4b22-a31e-1f96336aba5a</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="ea9c1af5-3409-4750-b691-5692bae00794">
|
||||
<prototypeId>ce583acc-4291-4ca5-9b8c-d1830f568763</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>Сворачиваемая панель</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="65283686-768f-44f9-9621-0c8327d90f11"/>
|
||||
<scripts id="59a83c24-bbe6-4720-8184-9223bcd866bb">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="809e4238-8d84-4bcd-941c-5d1d3332a852"/>
|
||||
<scripts id="14f340e5-5106-4780-8358-6f292054689f"/>
|
||||
<scripts id="7d2046c5-502d-474f-b2c9-fa8e2b7cfe7c"/>
|
||||
<children id="dccb6762-0a28-4155-a1d2-13ce4f6ca177">
|
||||
<prototypeId>91582081-f678-4d59-aa8c-4461b9cf9041</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>FilterGroup</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="3f5f352c-1a86-4702-a914-6c163c903157">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>filterableComp</key>
|
||||
<value>
|
||||
<simple>null</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="b5dcccfd-643a-4c8c-aa3b-a44da851a86a">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>filterable</key>
|
||||
<value>
|
||||
<simple>{"objectId":"d7266db0-3d4e-4e8c-9f63-19deb4c12ee3","packageName":"rpc","className":"GridRpcService","type":"JAVA"}</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="f3aff680-1783-45ac-9dcc-fc7f76fd8110">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="7176bfcf-d736-48a3-b620-6a77412d4026"/>
|
||||
<scripts id="21c9994a-3743-4adb-ae52-130f48aeab83"/>
|
||||
<scripts id="fc0d4368-d207-4b1f-b9e9-4bb06ae7291f"/>
|
||||
<children id="87c2f0cf-1a50-48cf-9b05-dd6c8fbd700c">
|
||||
<prototypeId>40211a7d-fa00-4355-9840-c79db51c1266</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="221139a0-6933-419a-9fd4-f9c89225b730">
|
||||
<prototypeId>982ee732-78fb-4937-8049-802b92307e41</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="c49eb0f7-b6f6-4d2a-989c-6231195dc4aa">
|
||||
<prototypeId>5f640a94-630c-4b5d-93de-ca4693859901</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>last-name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="734c5516-d349-4b42-a92a-4469760104fe"/>
|
||||
<scripts id="3c042081-dc6c-46ff-aef8-8263a8186fb6"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
<children id="4d6051d1-6e0b-4289-aca5-413cf3711ca8">
|
||||
<prototypeId>aa610427-b2e3-4f3f-a8df-ee1aded6fe37</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>first-name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="734c5516-d349-4b42-a92a-4469760104fe"/>
|
||||
<scripts id="5be8720c-507a-459e-95c5-22fa1960ebeb"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
<children id="0e257ac6-c8c2-452f-94cc-1012ad6c64c4">
|
||||
<prototypeId>1d7465e8-260a-4581-9e37-77d8a5158b8f</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>middle-name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="734c5516-d349-4b42-a92a-4469760104fe"/>
|
||||
<scripts id="1dd44898-ee1c-4e7d-af77-b9f1aba73246"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="8db76b82-8b69-411c-8cad-d6f4927e4964">
|
||||
<prototypeId>9c945c9c-4b2d-408b-a525-0c0d35e73d40</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="ba01915d-bf65-4583-ad7b-89beed38b486">
|
||||
<prototypeId>bed574e8-73e4-45e3-857c-ce7cd7c8156b</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>login</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="734c5516-d349-4b42-a92a-4469760104fe"/>
|
||||
<scripts id="2cb90b93-db56-4c48-8f62-b4f916783d35"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
<children id="77b30db9-73fd-4331-a0b1-56c9fdd336f4">
|
||||
<prototypeId>840e4e3e-c178-404e-815e-16429e0b484d</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>phone</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="734c5516-d349-4b42-a92a-4469760104fe"/>
|
||||
<scripts id="2cb90b93-db56-4c48-8f62-b4f916783d35"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
<children id="05e4023a-c83b-4aaf-b250-6a7d93b4dc44">
|
||||
<prototypeId>104b37e8-9b20-4738-a978-a1f890c0d986</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>org_unit_id</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="859913ec-9a30-439c-afc2-3c83cddcfe03"/>
|
||||
<scripts id="44ef54e2-ee96-4239-9e10-7d3e50e1ce4e"/>
|
||||
<scripts id="a9671ca3-e400-4848-ae6e-b3ff5b5fa732"/>
|
||||
<scripts id="0b478949-71f8-4a8c-bcfc-8407265d231c"/>
|
||||
<scripts id="2d8e021b-77e9-4d5c-a3e7-36fa9f8f1c42"/>
|
||||
<scripts id="5c1508fe-b7fe-44cb-bec9-11eb7b09570f"/>
|
||||
<scripts id="b26e8065-5cb8-40d4-b160-61e2ccc0cb14"/>
|
||||
</children>
|
||||
<children id="f82f9f1e-e3bf-40c9-bf7a-8452762a681d">
|
||||
<prototypeId>ddbdddc4-09d7-45fc-91ce-a66bf6a7c3eb</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>blocked</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="b7c451ce-53e4-45be-8fec-2bcd67fac11c"/>
|
||||
<scripts id="609d3d73-3afc-43ab-ac23-182b192c3173"/>
|
||||
<scripts id="e5a8326d-43f2-421f-9c82-2b8ef02e430f"/>
|
||||
<scripts id="4273d23d-add7-483f-95a5-0849005c975b"/>
|
||||
<scripts id="d4e0342b-e32a-415c-8d45-83b71f074db2"/>
|
||||
<scripts id="cf967f04-f483-4815-b84e-8d502546c07e"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="c7bdb5d1-29b3-474e-917f-ba33a9efe4d1">
|
||||
<prototypeId>4e5e921a-39ed-40e4-90a6-5087ae66c6c9</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>Form</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="0b1f2457-d665-428d-bb80-d0d1e7dca08d"/>
|
||||
<scripts id="17e3e745-fac5-4955-a974-28e381faee42"/>
|
||||
<scripts id="57779237-6bd7-4f73-ab62-efc79cc249b9">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="ad6ccafe-914e-4e13-a351-88bf107a5007"/>
|
||||
<scripts id="9ad247a3-9c46-4f12-9949-b1c905bd73bc"/>
|
||||
<scripts id="79188cdc-d646-433e-9751-1482b9247ee6"/>
|
||||
<children id="955a3a9f-3628-41f8-8e96-85dae51121a6">
|
||||
<prototypeId>98868f0f-1d43-40a4-ad6d-ba2961e6cff4</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="8ec96a55-db09-4e59-8942-84cde039f7fc">
|
||||
<prototypeId>959d104a-1e3f-4ac2-be5e-7d7b90f66a5f</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="61d7d613-6dc7-442d-95b2-6f41748b2fe5">
|
||||
<prototypeId>e5be7900-dfec-4748-91da-c715fee6cac4</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>full-name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="de43e6d3-693d-443e-b132-077d35e15302"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="9b2ebff3-c5fa-4210-b091-8783d23a67e0">
|
||||
<prototypeId>0c9190f0-0784-4f04-9859-4f0fbaf00f74</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>blocked</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="b7c451ce-53e4-45be-8fec-2bcd67fac11c"/>
|
||||
<scripts id="68d40d81-63c5-4700-9135-7425eb5256f7"/>
|
||||
<scripts id="4273d23d-add7-483f-95a5-0849005c975b"/>
|
||||
<scripts id="d4e0342b-e32a-415c-8d45-83b71f074db2"/>
|
||||
<scripts id="cf967f04-f483-4815-b84e-8d502546c07e"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="54f90fb4-3c81-4ddf-aaa0-a7af7c1cff24">
|
||||
<prototypeId>0c4e9e51-0ee4-479f-8f09-c7e46909ff44</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="894ad41c-9ce5-4b2d-ad09-ef95d4dccb74">
|
||||
<prototypeId>8b2e2c4f-6b66-4d6f-bd0c-a89e539356bb</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>password-expires</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="ecfc371b-de42-4266-b002-8368c7c9a70e"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="da3dff3d-7a33-4068-9aba-fc10a67c9309">
|
||||
<prototypeId>d042fd93-60b2-4efe-86b0-f38023bb9a7f</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>created</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="fadb8459-7e47-4dfe-86a1-c309f4a37ef4"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="c02b27a2-2ccc-4aec-abef-b6772e676fde">
|
||||
<prototypeId>9e35c92d-2741-4d9d-867f-4c8b83166638</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="9a66e05e-b83e-4be1-a32f-ea562d3bbf13">
|
||||
<prototypeId>66b422e9-0f90-4114-ba87-4a235cbf7648</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="e6bfd54d-b9b3-47ed-86a8-9bda7e5bea08">
|
||||
<prototypeId>d7266db0-3d4e-4e8c-9f63-19deb4c12ee3</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>Grid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="dec398bf-a79f-4d84-92f2-667795915d2b"/>
|
||||
<scripts id="87e83fd0-6ac2-449f-96ae-51dd2cbe6eac"/>
|
||||
<scripts id="a39d2f2a-e0e5-47ff-94b6-06c505b4821c"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="884effb6-5f88-406f-bb93-6ee54c5b3fab">
|
||||
<prototypeId>c7ac179d-9577-4703-8313-1c2c4c90ac36</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>VBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="64031d30-2f05-4ef0-bac4-73c2246de170">
|
||||
<prototypeId>d3f54b16-ae69-4685-a071-4f781c3f9b61</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>DependentGrid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="2499531e-c31f-4368-8718-544b23e50d30"/>
|
||||
<scripts id="5b5f4919-6401-470a-80c8-4eeeac07bc35"/>
|
||||
<scripts id="a39d2f2a-e0e5-47ff-94b6-06c505b4821c"/>
|
||||
<scripts id="272be1c9-b121-4e00-aeb9-bf3f6c3152a7"/>
|
||||
</children>
|
||||
<children id="39d75668-05ad-4f8f-9f38-ea9b5f81f5d6">
|
||||
<prototypeId>4d7361c8-5071-4d62-b50e-e79ee636fa57</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-dependent-grid</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="a53dd92f-63ea-4b7d-835e-7c7e85afaf53">
|
||||
<prototypeId>c4f7ba4d-03b3-4948-86ed-2ca4b8a6631b</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<scripts id="1942d69d-8e28-4622-9b82-eb3f16a4d120"/>
|
||||
<children id="328aad2c-1a09-4554-bbd1-cbadf75a0012">
|
||||
<prototypeId>a034e0fd-82dd-40c8-bada-c3a0d6eebeb5</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>create-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
<scripts id="8161015a-5295-487e-a24f-7fa4a3daee5a"/>
|
||||
<scripts id="5087febe-68e5-45dc-aeec-c945277baea9"/>
|
||||
</children>
|
||||
<children id="0e3820bc-9411-4561-9ab5-a244f159a438">
|
||||
<prototypeId>d45bf7b0-dcab-48f6-a53b-26723524b371</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>edit-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="d9f3e73e-a18c-4ff6-80f5-0698f90db0c3"/>
|
||||
<scripts id="1c7b477c-4fca-4cf1-af3d-9838577d32c3"/>
|
||||
<scripts id="6e5fb061-a990-440b-82c8-ed514ca43846"/>
|
||||
</children>
|
||||
<children id="42a6ab09-17dd-4667-b213-6dfc1cb73635">
|
||||
<prototypeId>3d6e68c8-b745-49bb-a5d5-d27f5fdad72d</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>delete-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0d"/>
|
||||
<scripts id="df910ff7-f70a-4a6f-b334-e7787dcfefbd"/>
|
||||
<scripts id="a273863f-3976-4eff-9833-a62c019bd96d"/>
|
||||
</children>
|
||||
<children id="2a01996b-5951-434d-b107-e57eecab63ce">
|
||||
<prototypeId>98d7a384-bac4-4b95-9d8f-9245d91927c1</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ldap-sync-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="c8992c28-e60c-40fd-8cd5-2d8354e0463e"/>
|
||||
<scripts id="999406f0-fab7-49ff-9ce4-7909e6822382"/>
|
||||
</children>
|
||||
<children id="af8f0253-cd19-4d29-8a28-7fd64168ca79">
|
||||
<prototypeId>dacfb992-f471-468a-b8bc-2fe3b916a2f7</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>clear-security-cache-btn</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="0e096119-d47f-4798-be4e-088af8a4f9d5"/>
|
||||
<scripts id="3530df78-99a1-4e53-8f4a-82d81c0c4078"/>
|
||||
</children>
|
||||
<children id="7e580e19-0b91-484a-83f5-b127513b8382">
|
||||
<prototypeId>a72d531c-3c9f-4390-8b7a-1f6bb3fa0e9d</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-edit</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="2c717833-5a89-4b71-96e4-4ab7470e21cc">
|
||||
<prototypeId>250006ff-42d5-4c45-87f3-183857d7a13b</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-remove</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="9bb72342-09a1-42b1-b526-3cfed7263a64">
|
||||
<prototypeId>696aaf8c-3075-4d6a-b58b-c7c79394affe</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-create-button-hide-if-kerberos-or-no-authority</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="44c5eae9-c55d-48e3-8249-f93daf4b11f3">
|
||||
<prototypeId>8b27dfb0-9d38-492b-8ee2-100d6c5a58d7</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-edit-button-hide-if-kerberos-or-no-authority</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="aa709cae-f833-47e3-8d7e-50ac2c21e515">
|
||||
<prototypeId>6377bc60-5a59-42d9-b5f1-3ccefac4ffe4</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-edit-button-enabled-if-has-authority</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="9d5c1109-236a-472e-9d91-85f7ac471d37">
|
||||
<prototypeId>7b63ea1b-1c51-4237-8946-14cc474d5eb0</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-delete-button-hide-if-kerberos-or-no-authority</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="7def372f-5945-439e-98a1-9cf250f26768">
|
||||
<prototypeId>7af3269d-369f-4a2a-85e7-8e4b621da324</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-delete-button-enabled-if-has-authority</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="4526eb55-d9db-4020-b0f0-e32a879aa03b">
|
||||
<prototypeId>3f2cb52c-a805-4bbd-a893-48506a2ee1cf</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-ldap-sync-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="c75da0da-cf02-4967-a36d-98af2855193c">
|
||||
<prototypeId>af550f44-c563-4e73-9703-a8dfd73f4627</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>ac-clear-security-cache-btn</name>
|
||||
<container>false</container>
|
||||
<expanded>true</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="412382cf-3acd-4bfc-8376-078c06f032ab">
|
||||
<prototypeId>e3ed2a20-be7f-4ee3-a85c-29bcffad04dc</prototypeId>
|
||||
<componentRootId>245a43c7-6af2-45d7-ac76-9195075586a7</componentRootId>
|
||||
<name>hide-if-kerberos</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,224 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-role</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="72f6fc40-525b-466c-86f8-3dc4e1c21bb7">
|
||||
<prototypeId>a6f1a48d-fc19-46fd-9cad-e7fe0d9f29c6</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>RolesEdit</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="07e1abe6-4a1d-4875-bfd9-a42f9998a25e">
|
||||
<prototypeId>90fc7ebc-3819-4bc5-b2a4-b0dae9b151ea</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>Текст</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="3779f868-2615-43ed-8f18-eeb65e77fd4f">
|
||||
<prototypeId>183f1b4b-6c93-4858-ad6e-1d3ac3d3d6f1</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>Form</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="8efd6752-250d-4585-bd3b-c10893634eb6"/>
|
||||
<scripts id="3be2858b-2abd-4a9b-8b3c-4247b38a1ea5"/>
|
||||
<scripts id="57779237-6bd7-4f73-ab62-efc79cc249b9">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="ad6ccafe-914e-4e13-a351-88bf107a5007"/>
|
||||
<scripts id="9ad247a3-9c46-4f12-9949-b1c905bd73bc"/>
|
||||
<scripts id="79188cdc-d646-433e-9751-1482b9247ee6"/>
|
||||
<children id="565b1668-01eb-4764-9e28-7ed170990f25">
|
||||
<prototypeId>61750ac1-fa74-4c35-9057-d0bead8241cc</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="c54c46f6-e78e-4f99-a6b2-dcd583be8672">
|
||||
<prototypeId>5047ac15-2114-48db-b457-3cca811df6f4</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="ddec9003-ffe4-4743-9752-898840fd28c4">
|
||||
<prototypeId>b8514208-f422-488a-82ab-fc8eca271a82</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>name</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="a5d1b355-52f3-4911-aec4-065cdc3bb9e4"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="bbd3987c-e516-4490-94f9-d96534f6adf8">
|
||||
<prototypeId>be586ede-3dcb-4ef9-a5ac-4ecdaff22d42</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>created</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="63ce08fa-9663-4e3e-9cf3-deef40413104"/>
|
||||
<scripts id="f672c801-b76c-4080-bdab-e0e8dd43eb72"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
<children id="fec7e405-d6df-4e10-9357-cdaff42e73c2">
|
||||
<prototypeId>01a7320b-31b6-4809-bc2e-aafeefcc2bdb</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>updated</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="5274357c-ce77-4621-8965-bd9c80700008"/>
|
||||
<scripts id="27fc7bfc-97fb-452d-87db-3813a8aad62e"/>
|
||||
<scripts id="65fc388a-1f45-42ac-91d0-6b8b8b6d1f94"/>
|
||||
<scripts id="8bd1dd61-b5ba-4ba4-8abb-2af9efd5380f"/>
|
||||
<scripts id="0d25bd04-4c45-4cb3-8e9a-b13ff7118a07"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="65cc1bcc-495e-475e-980d-72cfec22ab53">
|
||||
<prototypeId>50797ba0-3422-4b3c-95d8-924cd5160d2f</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="5d9c9441-3c9f-42c0-9f70-412042b62082">
|
||||
<prototypeId>9a80540c-888a-46cf-94d0-6aa060704cdf</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>BpmnDefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="b55e66a5-0e03-4baf-8a9f-7cbccd2d54e0">
|
||||
<prototypeId>0e3729c9-6ec2-4d22-8146-1e6c4f69e132</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>save-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
</children>
|
||||
<children id="7a061667-f3bf-4d4b-bdfc-a9b7654666ca">
|
||||
<prototypeId>0bfe5e99-bdcd-475a-a524-17e0603b3845</prototypeId>
|
||||
<componentRootId>72f6fc40-525b-466c-86f8-3dc4e1c21bb7</componentRootId>
|
||||
<name>cancel-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
</children>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,228 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-roles</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="3ada7790-8f63-4750-be1b-965cb607bc17">
|
||||
<prototypeId>38c2de2f-c5dd-413e-babf-ce54cb4e5279</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>Roles</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="4edaccaa-ce4f-4703-a698-f4170aa9df5f">
|
||||
<prototypeId>47e95cb8-ec90-4d23-bdbc-02a993cba433</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>Text</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="f569bfab-30e2-4edc-9018-36ea66ec6994">
|
||||
<prototypeId>5caea80b-ba43-4d5a-ae62-cf1aa1b5e8de</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>FilterGroup</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="3f5f352c-1a86-4702-a914-6c163c903157">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>filterableComp</key>
|
||||
<value>
|
||||
<simple>null</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="b5dcccfd-643a-4c8c-aa3b-a44da851a86a">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>filterable</key>
|
||||
<value>
|
||||
<simple>{"objectId":"a56dd87e-02e2-4dd5-9dc7-ec94e3758511","packageName":"rpc","className":"GridRpcService","type":"JAVA"}</simple>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="f3aff680-1783-45ac-9dcc-fc7f76fd8110">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="7176bfcf-d736-48a3-b620-6a77412d4026"/>
|
||||
<scripts id="21c9994a-3743-4adb-ae52-130f48aeab83"/>
|
||||
<scripts id="fc0d4368-d207-4b1f-b9e9-4bb06ae7291f"/>
|
||||
<children id="8444357f-e4f7-4d8f-a827-a6df7f2d79f3">
|
||||
<prototypeId>4c6be823-5f06-4a7c-b965-944a778f96b4</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>search</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="734c5516-d349-4b42-a92a-4469760104fe"/>
|
||||
<scripts id="c44bd869-45de-4809-98ca-bc2ebfc75c44"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="341e78e5-b55f-4922-890a-2fd52426c25d">
|
||||
<prototypeId>a56dd87e-02e2-4dd5-9dc7-ec94e3758511</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>Grid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="9cf56526-910a-4c4a-ae40-50949d1252dc"/>
|
||||
<scripts id="1d5d6fbf-1f4d-4117-81cb-11735fcb89bc"/>
|
||||
<scripts id="ffe0cfdf-d7df-4838-b188-35a6d214181b"/>
|
||||
</children>
|
||||
<children id="b5d15d44-765e-42a6-bad9-71e2eee768ce">
|
||||
<prototypeId>9a8e1a6b-5cd8-4b6e-b3ec-8da88c6018a2</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>HBox</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0">
|
||||
<properties>
|
||||
<entry>
|
||||
<key>service</key>
|
||||
<value>
|
||||
<implRef type="JAVA">
|
||||
<className>DefaultValueLoaderServiceImpl</className>
|
||||
<packageName>service.loading</packageName>
|
||||
</implRef>
|
||||
</value>
|
||||
</entry>
|
||||
</properties>
|
||||
</scripts>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="8994c632-2f2d-4399-b33a-250c537687f3">
|
||||
<prototypeId>d5af9dbe-a63f-4420-a109-dcd5d6894355</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>create-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf66c344-2cff-4d84-9c6c-d4405c2bfb02"/>
|
||||
<scripts id="898d41b4-f7d6-4c19-b0d1-e2ca8a1227ab"/>
|
||||
</children>
|
||||
<children id="2f27ed97-28ef-4d53-88ea-ed48a8b45307">
|
||||
<prototypeId>29d2fdef-ff61-4689-bded-2c34bff0de72</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>edit-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="d9f3e73e-a18c-4ff6-80f5-0698f90db0c3"/>
|
||||
<scripts id="8bfc8b0c-7e2e-453d-8c24-0497807b83d3"/>
|
||||
</children>
|
||||
<children id="f37323b5-4806-44f9-884f-e71eddd891a5">
|
||||
<prototypeId>7fbf947c-b03a-42f1-881d-0f0d449cb1d2</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>delete-button</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0d"/>
|
||||
<scripts id="ab90e604-ecf6-4d68-b101-2d8de98a6c05"/>
|
||||
</children>
|
||||
<children id="11c54831-6e00-493d-90d3-cf2b3a14e076">
|
||||
<prototypeId>fca14225-0522-4cc8-ad0d-1126644cf028</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>ac-create</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="cd21ea88-c666-43e9-b574-e5269a128e34">
|
||||
<prototypeId>b801dc2c-9067-4669-8bba-620bdde0be51</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>ac-edit</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="eaa4f037-97b4-424a-b991-e06e4aaa02db">
|
||||
<prototypeId>eedf3b3b-c42c-4b81-94ce-3b5cc3c6bd07</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>ac-remove</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="f74b197c-6bfa-4552-8535-9f55907e2725">
|
||||
<prototypeId>86bc12ae-bb9f-42d6-b111-63f7521fedb6</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>Groups</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="737b67e2-295f-4356-a1e1-9419344d8c85"/>
|
||||
<scripts id="a6ccccd9-354c-4725-9d34-c716cf626048"/>
|
||||
<scripts id="d38c1af5-2bfe-41cd-ab0f-67040f498127"/>
|
||||
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56"/>
|
||||
</children>
|
||||
<children id="be1190c8-2fcf-4df8-b721-594ee57da248">
|
||||
<prototypeId>ab666d58-a9b4-417c-9da9-eab2e0b6a958</prototypeId>
|
||||
<componentRootId>3ada7790-8f63-4750-be1b-965cb607bc17</componentRootId>
|
||||
<name>GroupsGrid</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="c3c97f9e-5b9a-488b-ae19-6e4cb8fd0835"/>
|
||||
<scripts id="9ce2d664-4bee-41cb-b226-77bd8322ede1"/>
|
||||
<scripts id="8338dd50-04dc-497c-bfaf-720a8c7509ff"/>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,276 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xmlPage>
|
||||
<id>user-management-authorities</id>
|
||||
<versions>
|
||||
<studioVersion>3.192.3</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.3</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
<rootObjects id="44886585-d33e-4203-840a-e788653e923a">
|
||||
<prototypeId>a4d442cf-72a8-431e-815a-490959083787</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>SecurityFeatures</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="099f9561-2e56-43a8-8e00-fe2cab075eed">
|
||||
<prototypeId>202de44d-f77d-43fb-88fd-2a3f36ced2f1</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="4e5c999a-27e9-4f91-aa2a-988955c78aaf">
|
||||
<prototypeId>2abf5d6a-d876-4fc5-bae1-d04e41cb7229</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>authorities</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="a01d4d82-4ab0-4fa0-8e33-a241da64767e"/>
|
||||
<scripts id="f9499259-f787-45c7-aa20-a6dd038b7139"/>
|
||||
<scripts id="0b38ad88-9d25-4dbf-8076-aae8218abb2e"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="6f7d4ce5-3c8a-4f0d-9bfd-bb69dc27ee6f">
|
||||
<prototypeId>d084be86-0037-4780-893d-959b975b9058</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="e3feef74-3f17-420c-bacc-ce68dfc8efdb">
|
||||
<prototypeId>753dd01d-822b-4533-b2aa-f086edb81702</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>bound-roles</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1996166f-7922-4f28-a571-9646d956ef37"/>
|
||||
<scripts id="701724ee-3499-412f-8908-3245f90d31ee"/>
|
||||
<scripts id="933abff7-f07a-4fbe-bcbc-d182a75fe4e6"/>
|
||||
<scripts id="a39d2f2a-e0e5-47ff-94b6-06c505b4821c"/>
|
||||
</children>
|
||||
<children id="099c3987-a684-4ee1-8cb5-ba4c61b8bb61">
|
||||
<prototypeId>c0460450-a21e-42f2-b9f6-f29e63a909eb</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="cae6ec6f-f216-40d2-987f-777097fcc6fa">
|
||||
<prototypeId>67f2e8a8-e32b-4bf0-940b-ab505be146f9</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>delete</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0d"/>
|
||||
<scripts id="63146005-9c88-408e-acff-bbb3e3171673"/>
|
||||
</children>
|
||||
<children id="a571c021-a01a-41eb-8520-0b07730c84ed">
|
||||
<prototypeId>c4751b6c-abb3-44e7-9f4d-7b1887d736d1</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="58523375-d13c-44ea-9089-98ffc88a96b9">
|
||||
<prototypeId>d6b561b0-cf80-493f-8499-1c4646a12848</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>show-dialog</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="4c1ee010-2fb2-4260-897b-75a3b6947b68"/>
|
||||
</children>
|
||||
<children id="6c235e54-db0a-4d55-9cf3-199fe3d510c3">
|
||||
<prototypeId>1704b964-7410-4909-81af-baa39019103c</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Диалог</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="48d405ee-5991-4027-bfee-113a895bf8f8"/>
|
||||
<scripts id="b463917a-16fc-42db-9c92-9c1027e9232e"/>
|
||||
<scripts id="24a13b10-fec4-420e-aa2e-5af0ec41326a"/>
|
||||
<scripts id="5f57bb31-85b0-4692-9f1f-d6369dea6e95"/>
|
||||
<children id="de80fbff-9a75-4ac9-b95e-7cb10370641d">
|
||||
<prototypeId>2aecaba7-557f-4628-abf9-2ae64d9c136d</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Вертикальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
|
||||
<scripts id="87f3fefa-b77b-4137-aab6-b2bcd83ce380"/>
|
||||
<scripts id="ef21ca22-3f81-4484-ba6f-58d670c12d4f"/>
|
||||
<scripts id="277e6fbc-9e2e-4080-bf20-5d8be18e6764"/>
|
||||
<children id="7f5e7039-96b1-49af-9110-6a004ff7b1d1">
|
||||
<prototypeId>a07d0119-b9d5-465f-a8e5-991fb0ae5dd3</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Форма</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="e265a56c-f122-46ac-9e66-d603a1c8a0f9"/>
|
||||
<scripts id="7de9427f-76dd-49ea-ab4f-fa3f1d0cf0a2"/>
|
||||
<scripts id="57779237-6bd7-4f73-ab62-efc79cc249b9"/>
|
||||
<scripts id="ad6ccafe-914e-4e13-a351-88bf107a5007"/>
|
||||
<scripts id="9ad247a3-9c46-4f12-9949-b1c905bd73bc"/>
|
||||
<scripts id="79188cdc-d646-433e-9751-1482b9247ee6"/>
|
||||
<children id="1f623eae-4b8f-4eab-92d0-325350e946d0">
|
||||
<prototypeId>5d81f881-411c-40b7-8eba-9ebb880ce4ab</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>authority-id</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c"/>
|
||||
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
|
||||
<scripts id="761c7d60-f685-4dd6-afe6-c63265242e80"/>
|
||||
<scripts id="5ba072f6-3017-4f32-9a6a-1ca5e690e1dd"/>
|
||||
<scripts id="ef53357a-6f68-4479-9a05-d37cfb44b6ba"/>
|
||||
<scripts id="2e66508a-de36-4816-b32c-18f8c7c39830"/>
|
||||
</children>
|
||||
<children id="f8e12033-c0d1-43b8-9874-b94d5763ea43">
|
||||
<prototypeId>a413592c-bd84-48e5-a6f0-af87cd075640</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Action controller</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="d63a9f27-3de2-418b-8a91-eab239f6fa56">
|
||||
<prototypeId>9e81c3a0-4b1c-46af-a28f-78510fac789f</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>role</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="23992f0e-94ed-4fb4-b4d1-dc6ad7f13227"/>
|
||||
<scripts id="efb0fec7-9951-4b36-bbda-fa17aa002d74"/>
|
||||
<scripts id="44c9430b-11a8-4644-91e2-12affaa6510a"/>
|
||||
<scripts id="4d028ea6-e4a3-4acf-bd60-de7aa1a78f71"/>
|
||||
<scripts id="9f543b36-92e3-4a63-b8db-a4d7e852113e"/>
|
||||
<scripts id="47f307b6-79a7-4c9a-96d6-6ee423565f02"/>
|
||||
</children>
|
||||
</children>
|
||||
<children id="934cbe00-16e8-40c2-8a40-04386e089f08">
|
||||
<prototypeId>2b2ae47e-ec3a-48bd-a4cf-77a3a817ebe6</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>Горизонтальный контейнер</name>
|
||||
<container>true</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
|
||||
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
|
||||
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
|
||||
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
|
||||
<children id="2f994f9e-ec39-4ae1-a921-9808784159a8">
|
||||
<prototypeId>1f65aebc-3112-4336-8339-db6aae6574cf</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>save</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
</children>
|
||||
<children id="afc99798-ff35-4f96-b591-c4622d8cfba2">
|
||||
<prototypeId>c3f258bb-9843-4f97-acbf-492ddd583a5b</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>cancel</name>
|
||||
<container>false</container>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
|
||||
</children>
|
||||
<children id="97d81971-f73b-4966-a9f6-5bb47fc41900">
|
||||
<prototypeId>5f3abfc2-545a-4e30-961b-e5ae5388a5d6</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>show-action</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
<children id="96aaa41a-7374-4566-a776-390eb5959270">
|
||||
<prototypeId>828a292b-3fd3-46da-b0af-22c7dbbffa4f</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>hide-on-cancel-action</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="24bdcc7f-5a70-40da-aba0-bdd6f61eae81">
|
||||
<prototypeId>1e99095a-60eb-4612-be43-e8dacad53e49</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>on-save-action</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="1b653660-0bc0-4c64-a702-b31cb2755bc6">
|
||||
<prototypeId>b5722d45-1042-4ea0-a94f-aed3ad0f11ea</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>ac-role-unbind</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
<children id="759b009f-75a3-4ab0-8e6c-2fa498add692">
|
||||
<prototypeId>255d2278-be77-4af9-b599-48dba63695bf</prototypeId>
|
||||
<componentRootId>44886585-d33e-4203-840a-e788653e923a</componentRootId>
|
||||
<name>ac-role-bind</name>
|
||||
<container>false</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="1d700a6b-96bb-4c9b-96d5-231017316f05">
|
||||
<removed>true</removed>
|
||||
</scripts>
|
||||
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e"/>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</children>
|
||||
</rootObjects>
|
||||
</xmlPage>
|
||||
|
|
@ -1,24 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<ns2:roles xmlns:ns2="http://cg.ru/web-bpm/bpm-role">
|
||||
<role>
|
||||
<name>Ответственный за ЗИ</name>
|
||||
<name>security_administrator</name>
|
||||
<description>Администратор ПОИБ</description>
|
||||
</role>
|
||||
<role>
|
||||
<name>Администратор ПОИБ</name>
|
||||
<name>Responsible_for_internal_control</name>
|
||||
<description>Ответственный за ЗИ СВК</description>
|
||||
</role>
|
||||
<role>
|
||||
<name>Ответственный за ЗИ СВК</name>
|
||||
</role>
|
||||
<role>
|
||||
<name>Военный комиссар</name>
|
||||
</role>
|
||||
<role>
|
||||
<name>Сотрудник ВК</name>
|
||||
</role>
|
||||
<role>
|
||||
<name>Управления параметрами информационной безопасности</name>
|
||||
</role>
|
||||
<role>
|
||||
<name>Список пользователей</name>
|
||||
<name>Responsible_for_information_security</name>
|
||||
<description>Ответственный за ЗИ</description>
|
||||
</role>
|
||||
</ns2:roles>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue