diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/service/RegistrationService.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/service/RegistrationService.java index 1583db825f..cff9a87a36 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/service/RegistrationService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/service/RegistrationService.java @@ -132,7 +132,7 @@ public AbstractUser createNewUser(NewUserRequest newUser) { } log.info("Renewing old user [{}]", newUser.email); } else { - user = new User(); + user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); user.setEmail(newUser.email); user.setUsername(newUser.email); log.info("Creating new user [{}]", newUser.email); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/configuration/security/PublicAuthenticationFilter.java b/application-engine/src/main/java/com/netgrif/application/engine/configuration/security/PublicAuthenticationFilter.java index 02791ccc93..aecb717ce3 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/configuration/security/PublicAuthenticationFilter.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/configuration/security/PublicAuthenticationFilter.java @@ -105,7 +105,7 @@ private LoggedUser resolveLoggedUser(String existingToken) { } private LoggedUser createAnonymousUser() { - User anonymousUser = new User(); + User anonymousUser = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); anonymousUser.setState(UserState.ACTIVE); anonymousUser = (User) userService.saveUser(anonymousUser, null); return ActorTransformer.toLoggedUser(anonymousUser); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ArcFactory.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ArcFactory.java index 786a9be58b..1e6f6ac916 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ArcFactory.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ArcFactory.java @@ -1,11 +1,10 @@ package com.netgrif.application.engine.petrinet.service; +import com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs.InhibitorArc; +import com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs.ReadArc; +import com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs.ResetArc; import com.netgrif.application.engine.objects.petrinet.domain.arcs.Arc; -import com.netgrif.application.engine.objects.petrinet.domain.arcs.InhibitorArc; -import com.netgrif.application.engine.objects.petrinet.domain.arcs.ReadArc; -import com.netgrif.application.engine.objects.petrinet.domain.arcs.ResetArc; import com.netgrif.application.engine.objects.petrinet.domain.arcs.reference.Reference; -import com.netgrif.application.engine.objects.petrinet.domain.arcs.reference.Type; import org.springframework.stereotype.Component; @Component @@ -14,7 +13,7 @@ public final class ArcFactory { public Arc getArc(com.netgrif.application.engine.objects.importer.model.Arc arc) throws IllegalArgumentException { switch (arc.getType()) { case REGULAR: - return new Arc(); + return new com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs.Arc(); case RESET: return new ResetArc(); case INHIBITOR: @@ -22,7 +21,7 @@ public Arc getArc(com.netgrif.application.engine.objects.importer.model.Arc arc) case READ: return new ReadArc(); case VARIABLE: - Arc varArc = new Arc(); + Arc varArc = new com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs.Arc(); Reference ref = new Reference(); ref.setReference(String.valueOf(arc.getMultiplicity())); varArc.setReference(ref); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetEventHandler.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetEventHandler.java index 5117432ab7..c0130e5752 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetEventHandler.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetEventHandler.java @@ -16,7 +16,6 @@ public class PetriNetEventHandler extends AbstractMongoEventListener { @Autowired private IElasticPetriNetService service; - @Override public void onAfterDelete(AfterDeleteEvent event) { Document document = event.getDocument(); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java index e61ebf9c30..db773a30c5 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java @@ -5,12 +5,9 @@ import com.netgrif.application.engine.adapter.spring.petrinet.domain.roles.RoleReferencedException; import com.netgrif.application.engine.adapter.spring.utils.PaginationProperties; import com.netgrif.application.engine.auth.service.GroupService; -import com.netgrif.application.engine.objects.auth.domain.AbstractUser; +import com.netgrif.application.engine.objects.auth.domain.*; import com.netgrif.application.engine.auth.service.RealmService; -import com.netgrif.application.engine.objects.auth.domain.Group; -import com.netgrif.application.engine.objects.auth.domain.LoggedUser; import com.netgrif.application.engine.auth.service.UserService; -import com.netgrif.application.engine.objects.auth.domain.Realm; import com.netgrif.application.engine.objects.event.events.user.UserRoleChangeEvent; import com.netgrif.application.engine.objects.importer.model.EventPhaseType; import com.netgrif.application.engine.objects.petrinet.domain.PetriNet; @@ -121,30 +118,29 @@ public void deleteAll() { @Override public void assignRolesToUser(AbstractUser user, Collection processResourceIds, LoggedUser loggedUser) { - assignRolesToActor(user.getProcessRoles(), processResourceIds); + assignRolesToActor(user, processResourceIds); saveUserAndReloadContext(user, loggedUser); } @Override public void assignRolesToGroup(Group group, Collection requestedRolesIds) { - assignRolesToActor(group.getProcessRoles(), requestedRolesIds); + assignRolesToActor(group, requestedRolesIds); groupService.save(group); } - protected void assignRolesToActor(Collection oldActorRoles, Collection requestedRolesIds) { + protected void assignRolesToActor(AbstractActor abstractActor, Collection requestedRolesIds) { List requestedRoles = this.findByIds(requestedRolesIds.stream().map(ProcessResourceId::toString).collect(Collectors.toSet())); if (requestedRoles.isEmpty() && !requestedRolesIds.isEmpty()) throw new IllegalArgumentException("No process roles found."); if (requestedRoles.size() != requestedRolesIds.size()) throw new IllegalArgumentException("Not all process roles were found!"); - Set userOldRoles = new HashSet<>(oldActorRoles); + Set userOldRoles = new HashSet<>(abstractActor.getProcessRoles()); Set rolesNewToUser = getRolesNewToActor(userOldRoles, requestedRoles); Set rolesRemovedFromUser = getRolesRemovedFromActor(userOldRoles, requestedRoles); - - oldActorRoles.clear(); - oldActorRoles.addAll(updateRequestedRoles(userOldRoles, rolesNewToUser, rolesRemovedFromUser)); + abstractActor.clearProcessRoles(); + abstractActor.addAllProcessRoles(updateRequestedRoles(userOldRoles, rolesNewToUser, rolesRemovedFromUser)); } protected void saveUserAndReloadContext(AbstractUser user, LoggedUser loggedUser) { diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java index d3059fe5a6..28a44775c6 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java @@ -55,7 +55,7 @@ private AbstractUser createSuperUser() { Optional superUser = userService.findUserByUsername(UserConstants.ADMIN_USER_USERNAME, null); if (superUser.isEmpty()) { - User user = new User(); + User user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); user.setFirstName(UserConstants.ADMIN_USER_FIRST_NAME); user.setLastName(UserConstants.ADMIN_USER_LAST_NAME); user.setUsername(UserConstants.ADMIN_USER_USERNAME); diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy index f55beac18b..90010945b3 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy @@ -100,7 +100,7 @@ class AssignActionTest { auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - importHelper.createUser(new User(firstName: "Test", lastName: "Integration", email: USER_EMAIL, password: USER_PASSWORD, state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "Integration", email: USER_EMAIL, password: USER_PASSWORD, state: UserState.ACTIVE), [auths.get("user"), auths.get("admin")] as Authority[], // [org] as Group[], [] as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy index 44e3965bc9..084448f73a 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy @@ -102,7 +102,7 @@ class RemoveActionTest { def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - importHelper.createUser(new User(firstName: "Test", lastName : "Integration", email: USER_EMAIL, password: USER_PASSWORD, state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName : "Integration", email: USER_EMAIL, password: USER_PASSWORD, state: UserState.ACTIVE), [auths.get("user")] as Authority[], [] as ProcessRole[]) } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/LoginAttemptsTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/LoginAttemptsTest.groovy index c75b94d786..30ab5c0af5 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/LoginAttemptsTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/LoginAttemptsTest.groovy @@ -63,7 +63,7 @@ class LoginAttemptsTest { .build() auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - importHelper.createUser(new User(firstName: "Test", lastName: "Integration", email: USER_EMAIL, password: USER_PASSWORD, state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "Integration", email: USER_EMAIL, password: USER_PASSWORD, state: UserState.ACTIVE), [auths.get("user"), auths.get("admin")] as Authority[], [] as ProcessRole[]) } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy index a337fcc963..d9744e79c2 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy @@ -67,7 +67,7 @@ class SecurityContextTest { @BeforeEach void before() { testHelper.truncateDbs() - user = new User() + user = new com.netgrif.application.engine.adapter.spring.auth.domain.User() user.setUsername('test@email.com') user.setEmail('test@email.com') user.setCredential("password", new PasswordCredential('password', 0, true)) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy index e7cadf5f54..d234f6663e 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy @@ -183,7 +183,7 @@ class TaskAuthorizationServiceTest { this.netWithUserRefs = netWithUserRefs.getNet() def auths = importHelper.createAuthorities(["user": Authority.user]) - testUser = importHelper.createUser(new User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), + testUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], // [org] as Group[], [] as ProcessRole[] diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/UserServiceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/UserServiceTest.groovy index cdb7b91798..33bacf5562 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/UserServiceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/UserServiceTest.groovy @@ -135,7 +135,7 @@ class UserServiceTest { Optional userOptional = userService.findUserByUsername("dummy@netgrif.com", null) User user = null if (userOptional.isEmpty()) { - user = new User() + user = new com.netgrif.application.engine.adapter.spring.auth.domain.User() user.setFirstName("Dummy") user.setLastName("User") user.setUsername("dummy@netgrif.com") diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy index dd9517e20a..bcd1860f10 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy @@ -141,7 +141,7 @@ class WorkflowAuthorizationServiceTest { this.netWithUserRefs = netWithUserRefs.getNet() def auths = importHelper.createAuthorities(["user": Authority.user]) - testUser = importHelper.createUser(new User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), + testUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), [auths.get("user")]as Authority[], // [org] as Group[], [] as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy index 4d99dcd598..7aa17a3f95 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy @@ -111,7 +111,7 @@ class ElasticSearchTest { // def org = importHelper.createGroup("Test") def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) // def processRoles = importHelper.getProcessRoles(net.get()) - def testUser = importHelper.createUser(new User(firstName: "Test", lastName: "Integration", email: USER_EMAIL, password: USER_PASSW, state: UserState.ACTIVE), + def testUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "Integration", email: USER_EMAIL, password: USER_PASSW, state: UserState.ACTIVE), [auths.get("user")] as Authority[], [net.roles.values().find { it.importId == "process_role" }] as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/filters/FilterImportExportTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/filters/FilterImportExportTest.groovy index c36b3da835..316538bcc8 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/filters/FilterImportExportTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/filters/FilterImportExportTest.groovy @@ -306,7 +306,7 @@ class FilterImportExportTest { private User createDummyUser() { def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - return importHelper.createUser(new User(firstName: "Dummy", lastName: "User", email: DUMMY_USER_MAIL, username: DUMMY_USER_MAIL, password: DUMMY_USER_PASSWORD, state: UserState.ACTIVE), + return importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Dummy", lastName: "User", email: DUMMY_USER_MAIL, username: DUMMY_USER_MAIL, password: DUMMY_USER_PASSWORD, state: UserState.ACTIVE), [auths.get("user")] as Authority[], [] as ProcessRole[]) } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/impersonation/ImpersonationServiceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/impersonation/ImpersonationServiceTest.groovy index 0f69ac4bf9..3ee7829d4e 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/impersonation/ImpersonationServiceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/impersonation/ImpersonationServiceTest.groovy @@ -131,21 +131,21 @@ class ImpersonationServiceTest { def authorityAnon = authorityService.getOrCreate(Authority.anonymous) def authorityAdmin = authorityService.getOrCreate(Authority.admin) - user1 = helper.createUser(new User(firstName: "Test", lastName: "User", email: "test@netgrif.com", "username": "test@netgrif.com", password: "password", state: UserState.ACTIVE), + user1 = helper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "User", email: "test@netgrif.com", "username": "test@netgrif.com", password: "password", state: UserState.ACTIVE), [authority] as Authority[], [] as ProcessRole[]) auth1 = new UsernamePasswordAuthenticationToken(ActorTransformer.toLoggedUser(user1), (user1 as User).password, user1.authoritySet as List) auth1.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) - user2 = helper.createUser(new User(firstName: "Test", lastName: "User2", email: "test2@netgrif.com", "username": "test2@netgrif.com", password: "password", state: UserState.ACTIVE), + user2 = helper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "User2", email: "test2@netgrif.com", "username": "test2@netgrif.com", password: "password", state: UserState.ACTIVE), [authority, authorityAnon] as Authority[], testNet.roles.values() as ProcessRole[]) auth2 = new UsernamePasswordAuthenticationToken(ActorTransformer.toLoggedUser(user2), (user2 as User).password, user2.authoritySet as List) auth2.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) - adminUser = helper.createUser(new User(firstName: "Admin", lastName: "User", email: "admin@netgrif.com", "username": "admin@netgrif.com", password: "password", state: UserState.ACTIVE), + adminUser = helper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Admin", lastName: "User", email: "admin@netgrif.com", "username": "admin@netgrif.com", password: "password", state: UserState.ACTIVE), [authority, authorityAdmin] as Authority[], testNet.roles.values() as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/insurance/mvc/InsuranceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/insurance/mvc/InsuranceTest.groovy index 6baed99f0d..3fbf6e0a72 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/insurance/mvc/InsuranceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/insurance/mvc/InsuranceTest.groovy @@ -141,7 +141,7 @@ class InsuranceTest { def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) def processRoles = ImportHelper.getProcessRolesByImportId(net.getNet(), ["agent": "1", "company": "2"]) - importHelper.createUser(new User(firstName: "Test", lastName: "Integration", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "Integration", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), [auths.get("user"), auths.get("admin")] as Authority[], [processRoles.get("agent"), processRoles.get("company")] as ProcessRole[]) List roles = processRoleService.findAll(netId) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/menu/MenuImportExportTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/menu/MenuImportExportTest.groovy index 7803d2f9aa..69f3e16fc8 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/menu/MenuImportExportTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/menu/MenuImportExportTest.groovy @@ -204,7 +204,7 @@ class MenuImportExportTest { private User createDummyUser() { def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - return importHelper.createUser(new User(firstName: "Dummy", lastName: "User", email: DUMMY_USER_MAIL, password: DUMMY_USER_PASSWORD, state: UserState.ACTIVE), + return importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Dummy", lastName: "User", email: DUMMY_USER_MAIL, password: DUMMY_USER_PASSWORD, state: UserState.ACTIVE), [auths.get("user")] as Authority[], [] as ProcessRole[]) } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/orgstructure/groups/GroupServiceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/orgstructure/groups/GroupServiceTest.groovy index e577779fae..9af198986e 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/orgstructure/groups/GroupServiceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/orgstructure/groups/GroupServiceTest.groovy @@ -46,10 +46,10 @@ class GroupServiceTest { void groupTest() { testHelper.truncateDbs() def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - importHelper.createUser(new User(firstName: "Dummy", lastName: "User", email: DUMMY_USER_MAIL, username: DUMMY_USER_MAIL, password: "password", state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Dummy", lastName: "User", email: DUMMY_USER_MAIL, username: DUMMY_USER_MAIL, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], [] as ProcessRole[]) - importHelper.createUser(new User(firstName: "Customer", lastName: "User", email: CUSTOMER_USER_MAIL, username: CUSTOMER_USER_MAIL, password: "password", state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Customer", lastName: "User", email: CUSTOMER_USER_MAIL, username: CUSTOMER_USER_MAIL, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], [] as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/permissions/ElasticSearchViewPermissionTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/permissions/ElasticSearchViewPermissionTest.groovy index b49b795d8a..39af53014f 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/permissions/ElasticSearchViewPermissionTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/permissions/ElasticSearchViewPermissionTest.groovy @@ -106,7 +106,7 @@ class ElasticSearchViewPermissionTest { userAuthority = authorityService.getOrCreate(Authority.user) - testUser = importHelper.createUser(new User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), + testUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), [userAuthority] as Authority[], [] as ProcessRole[]) } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/permissions/QueryDSLViewPermissionTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/permissions/QueryDSLViewPermissionTest.groovy index 61a2e8d3b4..52f3b21790 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/permissions/QueryDSLViewPermissionTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/permissions/QueryDSLViewPermissionTest.groovy @@ -99,7 +99,7 @@ class QueryDSLViewPermissionTest { userAuthority = authorityService.getOrCreate(Authority.user) - testUser = importHelper.createUser(new User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), + testUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), [userAuthority] as Authority[], [] as ProcessRole[]) } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy index a7195dc810..79e41844b1 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy @@ -135,7 +135,7 @@ class FileFieldTest { def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - def adminUser = importHelper.createUser(new User(firstName: "Admin", lastName: "User", username: UserConstants.ADMIN_USER_USERNAME, email: UserConstants.ADMIN_USER_EMAIL, password: "password", state: UserState.ACTIVE), + def adminUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Admin", lastName: "User", username: UserConstants.ADMIN_USER_USERNAME, email: UserConstants.ADMIN_USER_EMAIL, password: "password", state: UserState.ACTIVE), [auths.get("admin")] as Authority[], // [] as Group[], [] as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy index 75fcf2f448..244c901256 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy @@ -135,7 +135,7 @@ class FileListFieldTest { def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - def adminUser = importHelper.createUser(new User(firstName: "Admin", lastName: "User", username: UserConstants.ADMIN_USER_USERNAME, email: USER_EMAIL, password: "password", state: UserState.ACTIVE), + def adminUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Admin", lastName: "User", username: UserConstants.ADMIN_USER_USERNAME, email: USER_EMAIL, password: "password", state: UserState.ACTIVE), [auths.get("admin")] as Authority[], // [] as Group[], [] as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy index d2fced36c8..4ec10127f7 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy @@ -94,7 +94,7 @@ class ProcessRoleTest { def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) def processRoles = userProcessRoleRepository.findAllByProcessId(netId) - importHelper.createUser(new User(firstName: "Test", lastName: "Integration", email: USER_EMAIL_VIEW, password: "password", state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "Integration", email: USER_EMAIL_VIEW, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], [processRoles.find { it.getStringId() == net.getNet().roles.values().find { @@ -102,11 +102,11 @@ class ProcessRoleTest { }.stringId }] as ProcessRole[]) - importHelper.createUser(new User(firstName: "Test", lastName: "Integration", email: USER_EMAIL_PERFORM, password: "password", state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "Integration", email: USER_EMAIL_PERFORM, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], [processRoles.find { it.getStringId() == net.getNet().roles.values().find { it.name.defaultValue == "Perform" }.stringId }] as ProcessRole[]) - importHelper.createUser(new User(firstName: "Test", lastName: "Integration", email: USER_EMAIL_BOTH, password: "password", state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Test", lastName: "Integration", email: USER_EMAIL_BOTH, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], [processRoles.find { it.getStringId() == net.getNet().roles.values().find { it.name.defaultValue == "View" }.stringId }, processRoles.find { it.getStringId() == net.getNet().roles.values().find { it.name.defaultValue == "Perform" }.stringId }] as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/service/CachePetriNetServiceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/service/CachePetriNetServiceTest.groovy index c2ec5a73c8..bb5cfbcf3e 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/service/CachePetriNetServiceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/service/CachePetriNetServiceTest.groovy @@ -61,7 +61,7 @@ class CachePetriNetServiceTest { void setup() { testHelper.truncateDbs() def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - importHelper.createUser(new User(firstName: "Customer", lastName: "User", email: CUSTOMER_USER_MAIL, password: "password", state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Customer", lastName: "User", email: CUSTOMER_USER_MAIL, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], [] as ProcessRole[]) } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy index 90ee4f5404..71eadea2a0 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy @@ -96,7 +96,7 @@ class PetriNetServiceTest { void setup() { testHelper.truncateDbs() def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - importHelper.createUser(new User(firstName: "Customer", lastName: "User", email: CUSTOMER_USER_MAIL, password: "password", state: UserState.ACTIVE), + importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Customer", lastName: "User", email: CUSTOMER_USER_MAIL, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], [] as ProcessRole[]) } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy index 5477dcf487..8ac1cd4351 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy @@ -99,7 +99,7 @@ class PetriNetControllerTest { def auths = importHelper.createAuthorities(["user": Authority.user, "admin": Authority.admin]) - def simpleUser = importHelper.createUser(new User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), + def simpleUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Role", lastName: "User", email: USER_EMAIL, password: "password", state: UserState.ACTIVE), [auths.get("user")] as Authority[], // [] as Group[], [] as ProcessRole[]) @@ -107,7 +107,7 @@ class PetriNetControllerTest { userAuth = new UsernamePasswordAuthenticationToken(ActorTransformer.toLoggedUser(simpleUser), "password", [auths.get("user")] as List) userAuth.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) - def adminUser = importHelper.createUser(new User(firstName: "Admin", lastName: "User", email: ADMIN_EMAIL, password: "password", state: UserState.ACTIVE), + def adminUser = importHelper.createUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User(firstName: "Admin", lastName: "User", email: ADMIN_EMAIL, password: "password", state: UserState.ACTIVE), [auths.get("admin")] as Authority[], // [] as Group[], [] as ProcessRole[]) diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/workflow/TaskControllerTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/workflow/TaskControllerTest.groovy index c121c08963..12fafa4d2c 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/workflow/TaskControllerTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/workflow/TaskControllerTest.groovy @@ -102,7 +102,7 @@ class TaskControllerTest { @BeforeEach void init() { testHelper.truncateDbs() - userService.saveUser(new User( + userService.saveUser(new com.netgrif.application.engine.adapter.spring.auth.domain.User( firstName: "Dummy", lastName: "Netgrif", username: DUMMY_USER_MAIL, diff --git a/application-engine/src/test/java/com/netgrif/application/engine/MailSenderServiceTest.java b/application-engine/src/test/java/com/netgrif/application/engine/MailSenderServiceTest.java index c8754d24ab..6ce76b7318 100644 --- a/application-engine/src/test/java/com/netgrif/application/engine/MailSenderServiceTest.java +++ b/application-engine/src/test/java/com/netgrif/application/engine/MailSenderServiceTest.java @@ -45,7 +45,7 @@ public void before() { @Test public void testSend() throws Exception { - User user = new User(); + User user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); user.setUsername(RECIPIENT); user.setEmail(RECIPIENT); user.setPassword(""); diff --git a/application-engine/src/test/java/com/netgrif/application/engine/auth/service/TokenServiceTest.java b/application-engine/src/test/java/com/netgrif/application/engine/auth/service/TokenServiceTest.java index 338d63a7ec..f7268677ce 100644 --- a/application-engine/src/test/java/com/netgrif/application/engine/auth/service/TokenServiceTest.java +++ b/application-engine/src/test/java/com/netgrif/application/engine/auth/service/TokenServiceTest.java @@ -40,7 +40,7 @@ public void cleanUp() { @Test public void removeExpired() throws Exception { - User expired = new User(); + User expired = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); expired.setUsername("test1@test.com"); expired.setEmail("test1@test.com"); expired.setPassword("password"); @@ -49,7 +49,7 @@ public void removeExpired() throws Exception { expired.setState(UserState.INACTIVE); userService.saveUser(expired, null); - User expired2 = new User(); + User expired2 = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); expired2.setUsername("test2@test.com"); expired2.setEmail("test2@test.com"); expired2.setPassword("password"); @@ -64,7 +64,7 @@ public void removeExpired() throws Exception { @Test public void authorizeToken() throws Exception { - User expired = new User(); + User expired = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); expired.setToken("token3"); expired.setUsername("test3@test.com"); expired.setEmail("test3@test.com"); diff --git a/application-engine/src/test/java/com/netgrif/application/engine/workflow/WorkflowMvcPerformanceTest.java b/application-engine/src/test/java/com/netgrif/application/engine/workflow/WorkflowMvcPerformanceTest.java index b952430ff4..5795f069b8 100644 --- a/application-engine/src/test/java/com/netgrif/application/engine/workflow/WorkflowMvcPerformanceTest.java +++ b/application-engine/src/test/java/com/netgrif/application/engine/workflow/WorkflowMvcPerformanceTest.java @@ -85,7 +85,7 @@ public void beforeEach() throws IOException, MissingPetriNetMetaDataException { .apply(springSecurity()) .build(); - User user = new User(); + User user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); user.setFirstName("Firstname"); user.setLastName("Lastname"); user.setUsername("username1"); diff --git a/application-engine/src/test/java/com/netgrif/application/engine/workflow/service/AbstractAuthorizationServiceTest.java b/application-engine/src/test/java/com/netgrif/application/engine/workflow/service/AbstractAuthorizationServiceTest.java index e2b9f2757f..b55fd5706a 100644 --- a/application-engine/src/test/java/com/netgrif/application/engine/workflow/service/AbstractAuthorizationServiceTest.java +++ b/application-engine/src/test/java/com/netgrif/application/engine/workflow/service/AbstractAuthorizationServiceTest.java @@ -47,7 +47,7 @@ public void getAggregatePermissions() { roles.add(new com.netgrif.application.engine.adapter.spring.petrinet.domain.roles.ProcessRole()); roles.add(new com.netgrif.application.engine.adapter.spring.petrinet.domain.roles.ProcessRole()); - AbstractUser user = new User(); + AbstractUser user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); user.addProcessRole(roles.get(0)); user.addProcessRole(roles.get(1)); diff --git a/application-engine/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java b/application-engine/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java index 046bf7fd11..6635e9cc7b 100644 --- a/application-engine/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java +++ b/application-engine/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java @@ -117,7 +117,7 @@ public void resetArcTest() throws TransitionNotExecutableException, MissingPetri .color("color") .author(loggedUser) .build()); - User user = new User(); + User user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); user.setFirstName("name"); user.setPassword("password"); user.setLastName("surname"); diff --git a/application-engine/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java b/application-engine/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java index a1f61c2029..32b354eab6 100644 --- a/application-engine/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java +++ b/application-engine/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java @@ -122,7 +122,7 @@ public void before() throws Exception { assert outcome.getNet() != null; PetriNet net = outcome.getNet(); this.loaded = service.getPetriNet(net.getStringId()); - User user = new User(); + User user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); user.setFirstName("Test"); user.setLastName("Test"); diff --git a/application-engine/src/test/resources/petriNets/function_test.xml b/application-engine/src/test/resources/petriNets/function_test.xml index 52e7c18007..aff03bf578 100644 --- a/application-engine/src/test/resources/petriNets/function_test.xml +++ b/application-engine/src/test/resources/petriNets/function_test.xml @@ -118,7 +118,7 @@ Boolean false - def user = new com.netgrif.application.engine.objects.auth.domain.User() + def user = new com.netgrif.application.engine.adapter.spring.auth.domain.User() user.username = "test@test.com" user.email = "test@test.com" user.password = "password" diff --git a/application-engine/src/test/resources/petriNets/function_test_v2.xml b/application-engine/src/test/resources/petriNets/function_test_v2.xml index 7acf802264..8dad17c823 100644 --- a/application-engine/src/test/resources/petriNets/function_test_v2.xml +++ b/application-engine/src/test/resources/petriNets/function_test_v2.xml @@ -99,7 +99,7 @@ Boolean false - def user = new com.netgrif.application.engine.objects.auth.domain.User() + def user = new com.netgrif.application.engine.adapter.spring.auth.domain.User() user.username = "test@test.com" user.email = "test@test.com" user.password = "password" diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/AbstractActor.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/AbstractActor.java index 2b844d7d0e..543ccebec1 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/AbstractActor.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/AbstractActor.java @@ -9,10 +9,8 @@ import org.bson.types.ObjectId; import java.io.Serializable; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; /** * Abstract base class for actors in the system representing entities with authentication and authorization capabilities. @@ -34,9 +32,13 @@ public abstract class AbstractActor implements Serializable { /** Map of actor's attributes with their values and requirement status */ protected Map> attributes = new HashMap<>(); + protected Set authorityIds = new HashSet<>(); + /** Set of authorities (permissions) assigned to this actor */ protected Set authoritySet = new HashSet<>(); + protected Set processRoleIds = new HashSet<>(); + /** Set of process-specific roles assigned to this actor */ protected Set processRoles = new HashSet<>(); @@ -184,11 +186,17 @@ public boolean validateRequiredAttributes() { return true; } + public void setAuthorityIds(Set authorityIds) { + this.authorityIds = authorityIds == null ? new HashSet<>() : new HashSet<>(authorityIds); + this.authoritySet = new HashSet<>(); + } + /** * Sets the authority set with a defensive copy. * @param authoritySet set of authorities to set, null creates empty set */ public void setAuthoritySet(Set authoritySet) { + this.authorityIds = authoritySet == null ? new HashSet<>() : authoritySet.stream().map(Authority::getStringId).collect(Collectors.toSet()); this.authoritySet = authoritySet == null ? new HashSet<>() : new HashSet<>(authoritySet); } @@ -197,9 +205,16 @@ public void setAuthoritySet(Set authoritySet) { * @param authority the authority to add */ public void addAuthority(Authority authority) { + if (authority == null) { + return; + } + if (this.authorityIds == null) { + this.authorityIds = new HashSet<>(); + } if (this.authoritySet == null) { this.authoritySet = new HashSet<>(); } + this.authorityIds.add(authority.getStringId()); this.authoritySet.add(authority); } @@ -208,6 +223,14 @@ public void addAuthority(Authority authority) { * @param authority the authority to remove */ public void removeAuthority(Authority authority) { + if (authority == null) { + return; + } + if (this.authorityIds == null) { + this.authorityIds = new HashSet<>(); + } else { + this.authorityIds.remove(authority.getStringId()); + } if (this.authoritySet == null) { this.authoritySet = new HashSet<>(); } else if (!this.authoritySet.remove(authority)) { @@ -222,16 +245,26 @@ public void removeAuthority(Authority authority) { public void removeAuthorityByName(String name) { if (this.authoritySet == null) { this.authoritySet = new HashSet<>(); - } else { - this.authoritySet.removeIf(it -> it.getName().equals(name)); + } else { + Optional authorityOpt = authoritySet.stream().filter(it -> it.getName().equals(name)).findFirst(); + if (authorityOpt.isPresent()) { + this.authorityIds.remove(authorityOpt.get().getStringId()); + this.authoritySet.remove(authorityOpt.get()); + } } } + public void setProcessRoleIds(Set processRoleIds) { + this.processRoleIds = processRoleIds == null ? new HashSet<>() : new HashSet<>(processRoleIds); + this.processRoles = new HashSet<>(); + } + /** * Sets the process roles with a defensive copy. * @param processRoleSet set of process roles to set, null creates empty set */ public void setProcessRoles(Set processRoleSet) { + this.processRoleIds = processRoleSet == null ? new HashSet<>() : processRoleSet.stream().map(ProcessRole::getStringId).collect(Collectors.toSet()); this.processRoles = processRoleSet == null ? new HashSet<>() : new HashSet<>(processRoleSet); } @@ -240,17 +273,46 @@ public void setProcessRoles(Set processRoleSet) { * @param role the process role to add */ public void addProcessRole(ProcessRole role) { + if (role == null) { + return; + } + if (this.processRoleIds == null) { + this.processRoleIds = new HashSet<>(); + } if (this.processRoles == null) { this.processRoles = new HashSet<>(); } + this.processRoleIds.add(role.getStringId()); this.processRoles.add(role); } + public void addAllProcessRoles(Collection roles) { + if (roles == null || roles.isEmpty()) { + return; + } + if (this.processRoleIds == null) { + this.processRoleIds = new HashSet<>(); + } + if (this.processRoles == null) { + this.processRoles = new HashSet<>(); + } + this.processRoleIds.addAll(roles.stream().map(ProcessRole::getStringId).toList()); + this.processRoles.addAll(roles); + } + /** * Removes a process role from the actor. * @param role the process role to remove */ public void removeProcessRole(ProcessRole role) { + if (role == null) { + return; + } + if (this.processRoleIds == null) { + this.processRoleIds = new HashSet<>(); + } else { + this.processRoleIds.remove(role.getStringId()); + } if (this.processRoles == null) { this.processRoles = new HashSet<>(); } else if (!this.processRoles.remove(role)) { @@ -263,6 +325,11 @@ public void removeProcessRole(ProcessRole role) { * @param id ID of the process role to remove */ public void removeProcessRoleById(String id) { + if (this.processRoleIds == null) { + this.processRoleIds = new HashSet<>(); + } else { + this.processRoleIds.remove(id); + } if (this.processRoles == null) { this.processRoles = new HashSet<>(); } else { @@ -270,6 +337,19 @@ public void removeProcessRoleById(String id) { } } + public void clearProcessRoles() { + if (this.processRoleIds == null) { + this.processRoleIds = new HashSet<>(); + } else { + this.processRoleIds.clear(); + } + if (this.processRoles == null) { + this.processRoles = new HashSet<>(); + } else { + this.processRoles.clear(); + } + } + /** * Sets the group IDs with a defensive copy. * @param groupIds set of group IDs to set, null creates empty set diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/Group.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/Group.java index 5c14ba51de..7c7ba44f1e 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/Group.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/Group.java @@ -16,7 +16,7 @@ */ @Getter @QueryEntity -public class Group extends AbstractActor implements Serializable { +public abstract class Group extends AbstractActor implements Serializable { /** * The unique identifier of the group. diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/User.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/User.java index be637542de..61e8a0e8cf 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/User.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/User.java @@ -26,7 +26,7 @@ @QueryEntity @AllArgsConstructor @EqualsAndHashCode(callSuper = false) -public class User extends AbstractUser implements Serializable { +public abstract class User extends AbstractUser implements Serializable { /** * Flag indicating whether the user's email has been verified diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/Arc.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/Arc.java index 0dcb218ac9..fb18b4d797 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/Arc.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/Arc.java @@ -10,7 +10,7 @@ import java.util.ArrayList; import java.util.List; -public class Arc extends PetriNetObject { +public abstract class Arc extends PetriNetObject { protected Node source; diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/InhibitorArc.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/InhibitorArc.java index 7ac2823da4..734b097367 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/InhibitorArc.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/InhibitorArc.java @@ -8,7 +8,7 @@ * m(p) < w
* More info */ -public class InhibitorArc extends PTArc { +public abstract class InhibitorArc extends PTArc { public InhibitorArc() { super(); diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/ReadArc.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/ReadArc.java index 4e3b7a5de2..0fca4635e4 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/ReadArc.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/ReadArc.java @@ -8,7 +8,7 @@ *
m(p) ≥ w
* More info */ -public class ReadArc extends PTArc { +public abstract class ReadArc extends PTArc { public ReadArc() { super(); diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/ResetArc.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/ResetArc.java index deabc849ab..bff971271a 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/ResetArc.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/arcs/ResetArc.java @@ -10,7 +10,7 @@ * * More info */ -public class ResetArc extends PTArc { +public abstract class ResetArc extends PTArc { public ResetArc() { super(); diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/Group.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/Group.java new file mode 100644 index 0000000000..8123a21b43 --- /dev/null +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/Group.java @@ -0,0 +1,35 @@ +package com.netgrif.application.engine.adapter.spring.auth.domain; + +import com.netgrif.application.engine.objects.auth.domain.Authority; +import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; +import org.bson.types.ObjectId; +import org.springframework.data.annotation.Transient; + +import java.util.Set; + +public class Group extends com.netgrif.application.engine.objects.auth.domain.Group { + + protected Group() { + super(); + } + + public Group(ObjectId id) { + super(id); + } + + public Group(String identifier, String realmId) { + super(identifier, realmId); + } + + @Override + @Transient + public Set getProcessRoles() { + return super.getProcessRoles(); + } + + @Override + @Transient + public Set getAuthoritySet() { + return super.getAuthoritySet(); + } +} diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/User.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/User.java new file mode 100644 index 0000000000..6109c46421 --- /dev/null +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/User.java @@ -0,0 +1,32 @@ +package com.netgrif.application.engine.adapter.spring.auth.domain; + + +import com.netgrif.application.engine.objects.auth.domain.Authority; +import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; +import org.bson.types.ObjectId; +import org.springframework.data.annotation.Transient; + +import java.util.Set; + +public class User extends com.netgrif.application.engine.objects.auth.domain.User { + + public User() { + super(); + } + + public User(ObjectId id) { + super(id); + } + + @Override + @Transient + public Set getProcessRoles() { + return super.getProcessRoles(); + } + + @Override + @Transient + public Set getAuthoritySet() { + return super.getAuthoritySet(); + } +} diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/Arc.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/Arc.java new file mode 100644 index 0000000000..566c361d53 --- /dev/null +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/Arc.java @@ -0,0 +1,35 @@ +package com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs; + +import com.netgrif.application.engine.objects.petrinet.domain.Node; +import org.springframework.data.annotation.Transient; + +public class Arc extends com.netgrif.application.engine.objects.petrinet.domain.arcs.Arc { + + public Arc() { + super(); + } + + public Arc(com.netgrif.application.engine.objects.petrinet.domain.arcs.Arc arc) { + super(arc); + } + + public Arc(Arc arc) { + super(arc); + } + + public Arc(Node source, Node destination, int multiplicity) { + super(source, destination, multiplicity); + } + + @Override + @Transient + public Node getDestination() { + return super.getDestination(); + } + + @Override + @Transient + public Node getSource() { + return super.getSource(); + } +} diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/InhibitorArc.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/InhibitorArc.java new file mode 100644 index 0000000000..ed19f644df --- /dev/null +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/InhibitorArc.java @@ -0,0 +1,31 @@ +package com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs; + +import com.netgrif.application.engine.objects.petrinet.domain.Node; +import org.springframework.data.annotation.Transient; + +public class InhibitorArc extends com.netgrif.application.engine.objects.petrinet.domain.arcs.InhibitorArc { + + public InhibitorArc() { + super(); + } + + public InhibitorArc(com.netgrif.application.engine.objects.petrinet.domain.arcs.InhibitorArc arc) { + super(arc); + } + + public InhibitorArc(InhibitorArc arc) { + super(arc); + } + + @Override + @Transient + public Node getDestination() { + return super.getDestination(); + } + + @Override + @Transient + public Node getSource() { + return super.getSource(); + } +} diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/ReadArc.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/ReadArc.java new file mode 100644 index 0000000000..d7b78ae4cd --- /dev/null +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/ReadArc.java @@ -0,0 +1,31 @@ +package com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs; + +import com.netgrif.application.engine.objects.petrinet.domain.Node; +import org.springframework.data.annotation.Transient; + +public class ReadArc extends com.netgrif.application.engine.objects.petrinet.domain.arcs.ReadArc { + + public ReadArc() { + super(); + } + + public ReadArc(com.netgrif.application.engine.objects.petrinet.domain.arcs.ReadArc readArc) { + super(readArc); + } + + public ReadArc(ReadArc readArc) { + super(readArc); + } + + @Override + @Transient + public Node getDestination() { + return super.getDestination(); + } + + @Override + @Transient + public Node getSource() { + return super.getSource(); + } +} diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/ResetArc.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/ResetArc.java new file mode 100644 index 0000000000..d749b3c88a --- /dev/null +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/domain/arcs/ResetArc.java @@ -0,0 +1,31 @@ +package com.netgrif.application.engine.adapter.spring.petrinet.domain.arcs; + +import com.netgrif.application.engine.objects.petrinet.domain.Node; +import org.springframework.data.annotation.Transient; + +public class ResetArc extends com.netgrif.application.engine.objects.petrinet.domain.arcs.ResetArc { + + public ResetArc() { + super(); + } + + public ResetArc(com.netgrif.application.engine.objects.petrinet.domain.arcs.ResetArc arc) { + super(arc); + } + + public ResetArc(ResetArc arc) { + super(arc); + } + + @Override + @Transient + public Node getDestination() { + return super.getDestination(); + } + + @Override + @Transient + public Node getSource() { + return super.getSource(); + } +} diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/DataGroup.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/DataGroup.java index 3950e168f5..01c96740e6 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/DataGroup.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/DataGroup.java @@ -1,8 +1,8 @@ package com.netgrif.application.engine.adapter.spring.workflow.domain; import com.netgrif.application.engine.objects.workflow.domain.DataFieldsCollection; +import org.springframework.data.annotation.Transient; -import java.beans.Transient; public class DataGroup extends com.netgrif.application.engine.objects.petrinet.domain.DataGroup { @@ -10,7 +10,7 @@ public DataGroup() { super(); } - public DataGroup(DataGroup group) { + public DataGroup(com.netgrif.application.engine.objects.petrinet.domain.DataGroup group) { super(group); } diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/GroupServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/GroupServiceImpl.java index b13df2a032..3584c1cc29 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/GroupServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/GroupServiceImpl.java @@ -176,7 +176,7 @@ public Group create(AbstractUser groupOwner) { @Override public Group create(String identifier, String title, AbstractUser groupOwner) { log.info("Creating default group for user: [{}]", groupOwner.getStringId()); - Group group = new Group(identifier, groupOwner.getRealmId()); + Group group = new com.netgrif.application.engine.adapter.spring.auth.domain.Group(identifier, groupOwner.getRealmId()); group.setOwnerId(groupOwner.getStringId()); group.setOwnerUsername(groupOwner.getUsername()); group.setDisplayName(title); diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserMongoEventListener.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserMongoEventListener.java new file mode 100644 index 0000000000..adf46087f5 --- /dev/null +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserMongoEventListener.java @@ -0,0 +1,45 @@ +package com.netgrif.application.engine.auth.service; + +import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; +import com.netgrif.application.engine.objects.auth.domain.AbstractActor; +import com.netgrif.application.engine.objects.auth.domain.Authority; +import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener; +import org.springframework.data.mongodb.core.mapping.event.AfterConvertEvent; +import org.springframework.data.mongodb.core.mapping.event.AfterLoadEvent; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@RequiredArgsConstructor +public class UserMongoEventListener extends AbstractMongoEventListener { + + private final ProcessRoleService processRoleService; + + private final AuthorityService authorityService; + + @Override + public void onAfterLoad(AfterLoadEvent event) { + log.trace("User loaded: {}", event.getSource().get("id")); + log.trace("Resolving process roles of user with username: {}", event.getSource().get("id")); + } + + @Override + public void onAfterConvert(AfterConvertEvent event) { + AbstractActor actor = event.getSource(); + actor.getProcessRoleIds().forEach(processRoleId -> { + ProcessRole role = processRoleService.findById(processRoleId); + if (role != null) { + actor.addProcessRole(role); + } + }); + actor.getAuthorityIds().forEach(authorityId -> { + Authority authority = authorityService.getOne(authorityId); + if (authority != null) { + actor.addAuthority(authority); + } + }); + } +} diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java index 7a35d67771..7899955100 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java @@ -572,7 +572,7 @@ public void removeRoleOfDeletedPetriNet(Set petriNetRoles) { public AbstractUser createSystemUser() { User system = (User) findByEmail(UserConstants.SYSTEM_USER_EMAIL, null); if (system == null) { - system = new User(); + system = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); system.setUsername(UserConstants.SYSTEM_USER_EMAIL); system.setEmail(UserConstants.SYSTEM_USER_EMAIL); system.setPassword("n/a"); @@ -620,7 +620,7 @@ public Page search(Predicate predicate, Pageable pageable, String realmId) protected User initializeNewUser(String username, String email, String firstName, String lastName, String password, String realmId) { log.trace("Initializing new user [{}] in realm [{}]", username, realmId); - User user = new User(); + User user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); user.setRealmId(realmId); user.setUsername(username); user.setEmail(email); diff --git a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/repository/UserRepository.java b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/repository/UserRepository.java index c7e6e85d7d..f0c5627d32 100644 --- a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/repository/UserRepository.java +++ b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/repository/UserRepository.java @@ -202,7 +202,7 @@ default Page findDistinctByStateAndProcessRoles__idIn(UserState state, Col */ default Page findAllByProcessRoles__idIn(Collection rolesId, Pageable pageable, MongoTemplate mongoTemplate, String collection) { Query query = Query.query( - Criteria.where("processRoles._id").in(rolesId)); + Criteria.where("processRoleIds").in(rolesId.stream().map(ProcessResourceId::toString).toList())); return resolveUserPage(pageable, mongoTemplate, collection, query); }