From 3810a3707817649e26cb7ed8bf60f4c3894b8d33 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Thu, 8 Dec 2022 19:18:02 +0530 Subject: [PATCH] JAVA-16250 Update spring-activiti module to use parent-boot-2 module as parent (#13120) --- spring-activiti/pom.xml | 23 +-- .../security/config/ProcessController.java | 15 -- .../config/SpringSecurityGroupManager.java | 86 ----------- .../config/SpringSecurityUserManager.java | 144 ------------------ .../security/withactiviti/SecurityConfig.java | 47 ------ .../SpringSecurityActivitiApplication.java | 34 ----- .../ActivitiSpringSecurityApplication.java | 39 ----- .../security/withspring/SecurityConfig.java | 27 ++-- .../SpringSecurityActivitiApplication.java | 13 ++ .../ActivitiWithSpringApplication.java | 3 +- ...ActivitiSpringSecurityIntegrationTest.java | 17 +-- 11 files changed, 39 insertions(+), 409 deletions(-) delete mode 100644 spring-activiti/src/main/java/com/baeldung/activiti/security/config/SpringSecurityGroupManager.java delete mode 100644 spring-activiti/src/main/java/com/baeldung/activiti/security/config/SpringSecurityUserManager.java delete mode 100644 spring-activiti/src/main/java/com/baeldung/activiti/security/withactiviti/SecurityConfig.java delete mode 100644 spring-activiti/src/main/java/com/baeldung/activiti/security/withactiviti/SpringSecurityActivitiApplication.java delete mode 100644 spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/ActivitiSpringSecurityApplication.java create mode 100644 spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/SpringSecurityActivitiApplication.java diff --git a/spring-activiti/pom.xml b/spring-activiti/pom.xml index 9de7e473f8..b7fdfdfc60 100644 --- a/spring-activiti/pom.xml +++ b/spring-activiti/pom.xml @@ -9,12 +9,10 @@ Demo project for Spring Boot - - com.baeldung - parent-boot-1 + parent-boot-2 0.0.1-SNAPSHOT - ../parent-boot-1 + ../parent-boot-2 @@ -32,18 +30,21 @@ org.activiti - activiti-spring-boot-starter-basic - ${activiti.version} - - - org.activiti - activiti-spring-boot-starter-security + activiti-spring-boot-starter ${activiti.version} + + org.springframework.boot + spring-boot-starter-web + org.springframework.boot spring-boot-starter-thymeleaf + + org.springframework.boot + spring-boot-starter-security + com.h2database h2 @@ -70,7 +71,7 @@ - 6.0.0 + 7.1.0.M6 2.17.1 diff --git a/spring-activiti/src/main/java/com/baeldung/activiti/security/config/ProcessController.java b/spring-activiti/src/main/java/com/baeldung/activiti/security/config/ProcessController.java index 671b246328..c680af304d 100644 --- a/spring-activiti/src/main/java/com/baeldung/activiti/security/config/ProcessController.java +++ b/spring-activiti/src/main/java/com/baeldung/activiti/security/config/ProcessController.java @@ -2,14 +2,11 @@ package com.baeldung.activiti.security.config; import java.util.List; -import org.activiti.engine.IdentityService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; -import org.activiti.spring.SpringProcessEngineConfiguration; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -22,21 +19,9 @@ public class ProcessController { @Autowired private TaskService taskService; - @Autowired - private IdentityService identityService; - - @Autowired - SpringProcessEngineConfiguration config; - @GetMapping("/protected-process") public String startProcess() { - String userId = SecurityContextHolder.getContext() - .getAuthentication() - .getName(); - - identityService.setAuthenticatedUserId(userId); - ProcessInstance pi = runtimeService.startProcessInstanceByKey("protected-process"); List usertasks = taskService.createTaskQuery() diff --git a/spring-activiti/src/main/java/com/baeldung/activiti/security/config/SpringSecurityGroupManager.java b/spring-activiti/src/main/java/com/baeldung/activiti/security/config/SpringSecurityGroupManager.java deleted file mode 100644 index 00fc674e22..0000000000 --- a/spring-activiti/src/main/java/com/baeldung/activiti/security/config/SpringSecurityGroupManager.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.baeldung.activiti.security.config; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.activiti.engine.identity.Group; -import org.activiti.engine.identity.GroupQuery; -import org.activiti.engine.impl.GroupQueryImpl; -import org.activiti.engine.impl.Page; -import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; -import org.activiti.engine.impl.persistence.entity.GroupEntityImpl; -import org.activiti.engine.impl.persistence.entity.GroupEntityManagerImpl; -import org.activiti.engine.impl.persistence.entity.data.GroupDataManager; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.provisioning.JdbcUserDetailsManager; - -public class SpringSecurityGroupManager extends GroupEntityManagerImpl { - - private JdbcUserDetailsManager userManager; - - public SpringSecurityGroupManager(ProcessEngineConfigurationImpl processEngineConfiguration, GroupDataManager groupDataManager) { - super(processEngineConfiguration, groupDataManager); - } - - @Override - public List findGroupByQueryCriteria(GroupQueryImpl query, Page page) { - - if (query.getUserId() != null) { - return findGroupsByUser(query.getUserId()); - } - return null; - } - - @Override - public long findGroupCountByQueryCriteria(GroupQueryImpl query) { - return findGroupByQueryCriteria(query, null).size(); - } - - @Override - public List findGroupsByUser(String userId) { - UserDetails userDetails = userManager.loadUserByUsername(userId); - System.out.println("group manager"); - if (userDetails != null) { - List groups = userDetails.getAuthorities() - .stream() - .map(a -> a.getAuthority()) - .map(a -> { - Group g = new GroupEntityImpl(); - g.setId(a); - return g; - }) - .collect(Collectors.toList()); - return groups; - } - return null; - } - - public void setUserManager(JdbcUserDetailsManager userManager) { - this.userManager = userManager; - } - - public Group createNewGroup(String groupId) { - throw new UnsupportedOperationException("This operation is not supported!"); - - } - - @Override - public void delete(String groupId) { - throw new UnsupportedOperationException("This operation is not supported!"); - - } - - public GroupQuery createNewGroupQuery() { - throw new UnsupportedOperationException("This operation is not supported!"); - } - - public List findGroupsByNativeQuery(Map parameterMap, int firstResult, int maxResults) { - throw new UnsupportedOperationException("This operation is not supported!"); - } - - public long findGroupCountByNativeQuery(Map parameterMap) { - throw new UnsupportedOperationException("This operation is not supported!"); - } - -} diff --git a/spring-activiti/src/main/java/com/baeldung/activiti/security/config/SpringSecurityUserManager.java b/spring-activiti/src/main/java/com/baeldung/activiti/security/config/SpringSecurityUserManager.java deleted file mode 100644 index ce9863eb6c..0000000000 --- a/spring-activiti/src/main/java/com/baeldung/activiti/security/config/SpringSecurityUserManager.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.baeldung.activiti.security.config; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.activiti.engine.identity.Group; -import org.activiti.engine.identity.User; -import org.activiti.engine.identity.UserQuery; -import org.activiti.engine.impl.Page; -import org.activiti.engine.impl.UserQueryImpl; -import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; -import org.activiti.engine.impl.persistence.entity.GroupEntityImpl; -import org.activiti.engine.impl.persistence.entity.UserEntity; -import org.activiti.engine.impl.persistence.entity.UserEntityImpl; -import org.activiti.engine.impl.persistence.entity.UserEntityManagerImpl; -import org.activiti.engine.impl.persistence.entity.data.UserDataManager; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.provisioning.JdbcUserDetailsManager; - -public class SpringSecurityUserManager extends UserEntityManagerImpl { - - private JdbcUserDetailsManager userManager; - - public SpringSecurityUserManager(ProcessEngineConfigurationImpl processEngineConfiguration, UserDataManager userDataManager, JdbcUserDetailsManager userManager) { - super(processEngineConfiguration, userDataManager); - this.userManager = userManager; - } - - @Override - public UserEntity findById(String userId) { - UserDetails userDetails = userManager.loadUserByUsername(userId); - if (userDetails != null) { - UserEntityImpl user = new UserEntityImpl(); - user.setId(userId); - return user; - } - return null; - - } - - @Override - public List findUserByQueryCriteria(UserQueryImpl query, Page page) { - List users = null; - if (query.getGroupId() != null) { - users = userManager.findUsersInGroup(query.getGroupId()) - .stream() - .map(username -> { - User user = new UserEntityImpl(); - user.setId(username); - return user; - }) - .collect(Collectors.toList()); - if (page != null) { - return users.subList(page.getFirstResult(), page.getFirstResult() + page.getMaxResults()); - - } - return users; - } - - if (query.getId() != null) { - UserDetails userDetails = userManager.loadUserByUsername(query.getId()); - if (userDetails != null) { - UserEntityImpl user = new UserEntityImpl(); - user.setId(query.getId()); - return Collections.singletonList(user); - } - } - return null; - } - - @Override - public Boolean checkPassword(String userId, String password) { - return true; - } - - public void setUserManager(JdbcUserDetailsManager userManager) { - this.userManager = userManager; - } - - public User createNewUser(String userId) { - throw new UnsupportedOperationException("This operation is not supported!"); - } - - public void updateUser(User updatedUser) { - throw new UnsupportedOperationException("This operation is not supported!"); - - } - - public void delete(UserEntity userEntity) { - throw new UnsupportedOperationException("This operation is not supported!"); - - } - - @Override - public void deletePicture(User user) { - UserEntity userEntity = (UserEntity) user; - if (userEntity.getPictureByteArrayRef() != null) { - userEntity.getPictureByteArrayRef() - .delete(); - } - } - - public void delete(String userId) { - throw new UnsupportedOperationException("This operation is not supported!"); - - } - - public long findUserCountByQueryCriteria(UserQueryImpl query) { - return findUserByQueryCriteria(query, null).size(); - } - - public List findGroupsByUser(String userId) { - UserDetails userDetails = userManager.loadUserByUsername(userId); - if (userDetails != null) { - List groups = userDetails.getAuthorities() - .stream() - .map(a -> a.getAuthority()) - .map(a -> { - Group g = new GroupEntityImpl(); - g.setId(a); - return g; - }) - .collect(Collectors.toList()); - return groups; - } - return null; - } - - public UserQuery createNewUserQuery() { - throw new UnsupportedOperationException("This operation is not supported!"); - } - - public List findUsersByNativeQuery(Map parameterMap, int firstResult, int maxResults) { - throw new UnsupportedOperationException("This operation is not supported!"); - } - - public long findUserCountByNativeQuery(Map parameterMap) { - throw new UnsupportedOperationException("This operation is not supported!"); - - } - -} diff --git a/spring-activiti/src/main/java/com/baeldung/activiti/security/withactiviti/SecurityConfig.java b/spring-activiti/src/main/java/com/baeldung/activiti/security/withactiviti/SecurityConfig.java deleted file mode 100644 index f471600553..0000000000 --- a/spring-activiti/src/main/java/com/baeldung/activiti/security/withactiviti/SecurityConfig.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.baeldung.activiti.security.withactiviti; - -import org.activiti.engine.IdentityService; -import org.activiti.spring.security.IdentityServiceUserDetailsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -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.WebSecurityConfigurerAdapter; - -@Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { - - protected void configure(HttpSecurity http) throws Exception { - http.antMatcher("/**") - .authorizeRequests() - .antMatchers("/protected-process*") - .authenticated() - .anyRequest() - .permitAll() - .and() - .formLogin() - .loginPage("/login") - .defaultSuccessUrl("/homepage") - .failureUrl("/login?error=true") - .and() - .csrf() - .disable() - .logout() - .logoutSuccessUrl("/login"); - } - - @Autowired - private IdentityService identityService; - - @Bean - public IdentityServiceUserDetailsService userDetailsService() { - return new IdentityServiceUserDetailsService(identityService); - } - - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.userDetailsService(userDetailsService()); - } - -} diff --git a/spring-activiti/src/main/java/com/baeldung/activiti/security/withactiviti/SpringSecurityActivitiApplication.java b/spring-activiti/src/main/java/com/baeldung/activiti/security/withactiviti/SpringSecurityActivitiApplication.java deleted file mode 100644 index 2270a4d684..0000000000 --- a/spring-activiti/src/main/java/com/baeldung/activiti/security/withactiviti/SpringSecurityActivitiApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.activiti.security.withactiviti; - -import org.activiti.engine.IdentityService; -import org.activiti.engine.identity.Group; -import org.activiti.engine.identity.User; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; - -@SpringBootApplication(scanBasePackages = { "com.baeldung.activiti.security.config", "com.baeldung.activiti.security.withactiviti" }) -public class SpringSecurityActivitiApplication { - - public static void main(String[] args) { - SpringApplication.run(SpringSecurityActivitiApplication.class, args); - } - - @Bean - InitializingBean usersAndGroupsInitializer(IdentityService identityService) { - return new InitializingBean() { - public void afterPropertiesSet() throws Exception { - User user = identityService.newUser("activiti_user"); - user.setPassword("pass"); - identityService.saveUser(user); - - Group group = identityService.newGroup("user"); - group.setName("ROLE_USER"); - group.setType("USER"); - identityService.saveGroup(group); - identityService.createMembership(user.getId(), group.getId()); - } - }; - } -} diff --git a/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/ActivitiSpringSecurityApplication.java b/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/ActivitiSpringSecurityApplication.java deleted file mode 100644 index 5878a5d678..0000000000 --- a/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/ActivitiSpringSecurityApplication.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.baeldung.activiti.security.withspring; - -import org.activiti.engine.impl.persistence.entity.data.impl.MybatisGroupDataManager; -import org.activiti.engine.impl.persistence.entity.data.impl.MybatisUserDataManager; -import org.activiti.spring.SpringProcessEngineConfiguration; -import org.activiti.spring.boot.SecurityAutoConfiguration; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.security.provisioning.JdbcUserDetailsManager; - -import com.baeldung.activiti.security.config.SpringSecurityGroupManager; -import com.baeldung.activiti.security.config.SpringSecurityUserManager; - -@SpringBootApplication(exclude = SecurityAutoConfiguration.class, scanBasePackages = { "com.baeldung.activiti.security.config", "com.baeldung.activiti.security.withspring" }) -public class ActivitiSpringSecurityApplication { - - public static void main(String[] args) { - SpringApplication.run(ActivitiSpringSecurityApplication.class, args); - } - - @Autowired - private SpringProcessEngineConfiguration processEngineConfiguration; - - @Autowired - private JdbcUserDetailsManager userManager; - - @Bean - InitializingBean processEngineInitializer() { - return new InitializingBean() { - public void afterPropertiesSet() throws Exception { - processEngineConfiguration.setUserEntityManager(new SpringSecurityUserManager(processEngineConfiguration, new MybatisUserDataManager(processEngineConfiguration), userManager)); - processEngineConfiguration.setGroupEntityManager(new SpringSecurityGroupManager(processEngineConfiguration, new MybatisGroupDataManager(processEngineConfiguration))); - } - }; - } -} diff --git a/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/SecurityConfig.java b/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/SecurityConfig.java index df1991c3e4..b0c74371c7 100644 --- a/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/SecurityConfig.java +++ b/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/SecurityConfig.java @@ -1,21 +1,17 @@ package com.baeldung.activiti.security.withspring; -import javax.sql.DataSource; - -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -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.WebSecurityConfigurerAdapter; -import org.springframework.security.provisioning.JdbcUserDetailsManager; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - private DataSource dataSource; - protected void configure(HttpSecurity http) throws Exception { http.antMatcher("/**") .authorizeRequests() @@ -36,15 +32,12 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { } @Bean - public JdbcUserDetailsManager userDetailsManager() { - JdbcUserDetailsManager manager = new JdbcUserDetailsManager(); - manager.setDataSource(dataSource); - return manager; - } + public UserDetailsService userDetailsService() { + UserDetails user = User.withUsername("user") + .password("{noop}pass") + .authorities("ROLE_ACTIVITI_USER") + .build(); - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.userDetailsService(userDetailsManager()); + return new InMemoryUserDetailsManager(user); } - } diff --git a/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/SpringSecurityActivitiApplication.java b/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/SpringSecurityActivitiApplication.java new file mode 100644 index 0000000000..84aa4b2b0d --- /dev/null +++ b/spring-activiti/src/main/java/com/baeldung/activiti/security/withspring/SpringSecurityActivitiApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.activiti.security.withspring; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication(scanBasePackages = { "com.baeldung.activiti.security.config", "com.baeldung.activiti.security.withspring" }) +public class SpringSecurityActivitiApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringSecurityActivitiApplication.class, args); + } + +} diff --git a/spring-activiti/src/main/java/com/baeldung/activitiwithspring/ActivitiWithSpringApplication.java b/spring-activiti/src/main/java/com/baeldung/activitiwithspring/ActivitiWithSpringApplication.java index d43ae3cc35..b3cf66b0f7 100644 --- a/spring-activiti/src/main/java/com/baeldung/activitiwithspring/ActivitiWithSpringApplication.java +++ b/spring-activiti/src/main/java/com/baeldung/activitiwithspring/ActivitiWithSpringApplication.java @@ -2,9 +2,8 @@ package com.baeldung.activitiwithspring; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; -@SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) +@SpringBootApplication public class ActivitiWithSpringApplication { public static void main(String[] args) { SpringApplication.run(ActivitiWithSpringApplication.class, args); diff --git a/spring-activiti/src/test/java/com/baeldung/activitiwithspring/ActivitiSpringSecurityIntegrationTest.java b/spring-activiti/src/test/java/com/baeldung/activitiwithspring/ActivitiSpringSecurityIntegrationTest.java index 7f99483fcf..43a159efbd 100644 --- a/spring-activiti/src/test/java/com/baeldung/activitiwithspring/ActivitiSpringSecurityIntegrationTest.java +++ b/spring-activiti/src/test/java/com/baeldung/activitiwithspring/ActivitiSpringSecurityIntegrationTest.java @@ -1,33 +1,22 @@ package com.baeldung.activitiwithspring; -import org.activiti.engine.IdentityService; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.web.WebAppConfiguration; -import com.baeldung.activiti.security.withspring.ActivitiSpringSecurityApplication; +import com.baeldung.activiti.security.withspring.SpringSecurityActivitiApplication; @RunWith(SpringRunner.class) -@SpringBootTest(classes = ActivitiSpringSecurityApplication.class) +@SpringBootTest(classes = SpringSecurityActivitiApplication.class) @WebAppConfiguration @AutoConfigureTestDatabase public class ActivitiSpringSecurityIntegrationTest { - @Autowired - private IdentityService identityService; @Test - public void whenUserExists_thenOk() { - identityService.setUserPicture("spring_user", null); - } - - @Test(expected = UsernameNotFoundException.class) - public void whenUserNonExistent_thenSpringException() { - identityService.setUserPicture("user3", null); + public void contextLoads() { } }