Work on Finish the "drools-framewok-uberfire-security-service" module #97

Allow only users with a user group that gives access to the Workbench #96
This commit is contained in:
Nicolas Héron 2020-10-12 09:02:54 +02:00
commit 3f1187921e
18 changed files with 416 additions and 131 deletions

View file

@ -39,6 +39,7 @@ import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.*; import org.springframework.kafka.core.*;
import org.springframework.kafka.support.serializer.JsonDeserializer; import org.springframework.kafka.support.serializer.JsonDeserializer;
import org.springframework.kafka.support.serializer.JsonSerializer; import org.springframework.kafka.support.serializer.JsonSerializer;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.PathSelectors;
@ -56,6 +57,7 @@ import java.util.Map;
@EnableKafka @EnableKafka
@PropertySource("classpath:application.properties") @PropertySource("classpath:application.properties")
@EnableSwagger2 @EnableSwagger2
@EnableScheduling
public class DroolsSpringBootConsoleApplication extends SpringBootServletInitializer { public class DroolsSpringBootConsoleApplication extends SpringBootServletInitializer {

View file

@ -1,9 +1,14 @@
package org.chtijbug.drools.console.middle; package org.chtijbug.drools.console.middle;
import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.ProjectPersistService;
import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.proxy.persistence.model.*; import org.chtijbug.drools.proxy.persistence.model.*;
import org.chtijbug.drools.proxy.persistence.repository.*; import org.chtijbug.drools.proxy.persistence.repository.*;
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.UUID; import java.util.UUID;
@ -17,6 +22,9 @@ public class DababaseContentInit {
@Value("${kie-wb.mainwbextern}") @Value("${kie-wb.mainwbextern}")
private String mainwbExtern; private String mainwbExtern;
@Value("${kie-wb.baseurl}")
private String kiewbUrl;
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@ -32,10 +40,13 @@ public class DababaseContentInit {
@Autowired @Autowired
private CustomerRepository customerRepository; private CustomerRepository customerRepository;
public void initDatabaseIfNecessary(){ @Autowired
private KieRepositoryService kieRepositoryService;
User adminUser = userRepository.findByLogin("admin"); @Autowired
if (adminUser==null){ private ProjectPersistService projectPersistService;
public void initDatabaseIfNecessary() {
/** /**
* admin The administrator * admin The administrator
* analyst The analyst * analyst The analyst
@ -44,21 +55,31 @@ public class DababaseContentInit {
* user The end user * user The end user
* kiemgmt KIE management user * kiemgmt KIE management user
*/ */
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"process-admin")); User adminUser = userRepository.findByLogin("admin");
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"manager")); if (adminUser == null) {
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"admin")); this.initDatabase();
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"analyst")); }else{
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"rest-all")); this.synchronizeDatabaseWithWorkbenches();
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"developer")); }
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"rest-project"));
userRolesRepository.save( new UserRoles(UUID.randomUUID().toString(),"user")); }
private void initDatabase(){
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "process-admin"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "manager"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "admin"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "analyst"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "rest-all"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "developer"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "rest-project"));
userRolesRepository.save(new UserRoles(UUID.randomUUID().toString(), "user"));
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(),"kiemgmt")); userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "kiemgmt"));
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(),"admingroup")); userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "admingroup"));
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(),"demogroup")); userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "demogroup"));
adminUser = new User(UUID.randomUUID().toString(),"admin","adminadmin99#"); User adminUser = new User(UUID.randomUUID().toString(), "admin", "adminadmin99#");
adminUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt")); adminUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
adminUser.getUserGroups().add(userGroupsRepository.findByName("admingroup")); adminUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
adminUser.getUserRoles().add(userRolesRepository.findByName("admin")); adminUser.getUserRoles().add(userRolesRepository.findByName("admin"));
@ -66,7 +87,7 @@ public class DababaseContentInit {
adminUser.getUserRoles().add(userRolesRepository.findByName("rest-all")); adminUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
userRepository.save(adminUser); userRepository.save(adminUser);
User nheronUser = new User(UUID.randomUUID().toString(),"nheron","adminnheron00@"); User nheronUser = new User(UUID.randomUUID().toString(), "nheron", "adminnheron00@");
nheronUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt")); nheronUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
nheronUser.getUserGroups().add(userGroupsRepository.findByName("admingroup")); nheronUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
nheronUser.getUserRoles().add(userRolesRepository.findByName("admin")); nheronUser.getUserRoles().add(userRolesRepository.findByName("admin"));
@ -81,14 +102,25 @@ public class DababaseContentInit {
mainWorkbench.setInternalUrl(mainwbUrlIntern); mainWorkbench.setInternalUrl(mainwbUrlIntern);
mainWorkbench = kieWorkbenchRepository.save(mainWorkbench); mainWorkbench = kieWorkbenchRepository.save(mainWorkbench);
UserConnected userConnected = kieRepositoryService.getUserContent(mainWorkbench.getExternalUrl() + "/rest",
nheronUser.getLogin(), nheronUser.getPassword(), mainWorkbench.getName());
for (PlatformProjectData platformProjectData : userConnected.getProjectResponses()) {
String projectName = platformProjectData.getName();
String workspaceName = platformProjectData.getSpaceName();
ProjectPersist projectPersist=projectPersistService.saveorUpdateProject(platformProjectData, mainWorkbench);
UserGroups workspaceUserGroups=projectPersistService.createWorkSpaceGroupIfNeeded(workspaceName, mainWorkbench);
projectPersistService.createProjectGroupIfNeeded(projectName, mainWorkbench,projectPersist,workspaceUserGroups);
//platformProjectData.getJavaClasses()
}
Customer demCustomer = new Customer(); Customer demCustomer = new Customer();
demCustomer.setKieWorkbench(mainWorkbench); demCustomer.setKieWorkbench(mainWorkbench);
demCustomer.setName("demoCustomer"); demCustomer.setName("demoCustomer");
demCustomer.setID(UUID.randomUUID().toString()); demCustomer.setID(UUID.randomUUID().toString());
customerRepository.save(demCustomer); customerRepository.save(demCustomer);
User demoUser = new User(UUID.randomUUID().toString(), "demo", "demo");
User demoUser = new User(UUID.randomUUID().toString(),"demo","demo");
demoUser.getUserGroups().add(userGroupsRepository.findByName("demogroup")); demoUser.getUserGroups().add(userGroupsRepository.findByName("demogroup"));
demoUser.getUserRoles().add(userRolesRepository.findByName("user")); demoUser.getUserRoles().add(userRolesRepository.findByName("user"));
demoUser.getUserRoles().add(userRolesRepository.findByName("rest-all")); demoUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
@ -96,14 +128,28 @@ public class DababaseContentInit {
demoUser.setWbName(mainWorkbench.getName()); demoUser.setWbName(mainWorkbench.getName());
demoUser.setCustomer(demCustomer); demoUser.setCustomer(demCustomer);
userRepository.save(demoUser); userRepository.save(demoUser);
}
@Scheduled(cron = "0 0 0/1 * * ?")
public void synchronizeDatabaseWithWorkbenches(){
for (KieWorkbench kieWorkbench : kieWorkbenchRepository.findAll()){
User nheronUser = userRepository.findByLogin("nheron");
UserConnected userConnected = kieRepositoryService.getUserContent(kieWorkbench.getExternalUrl() + "/rest",
nheronUser.getLogin(), nheronUser.getPassword(), kieWorkbench.getName());
for (PlatformProjectData platformProjectData : userConnected.getProjectResponses()) {
String projectName = platformProjectData.getName();
String workspaceName = platformProjectData.getSpaceName();
ProjectPersist projectPersist=projectPersistService.saveorUpdateProject(platformProjectData, kieWorkbench);
UserGroups workSpaceGroupIfNeeded = projectPersistService.createWorkSpaceGroupIfNeeded(workspaceName, kieWorkbench);
projectPersistService.createProjectGroupIfNeeded(projectName, kieWorkbench,projectPersist,workSpaceGroupIfNeeded);
} }
} }
}
} }

View file

@ -4,9 +4,12 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.chtijbug.drools.console.service.IndexerService; import org.chtijbug.drools.console.service.IndexerService;
import org.chtijbug.drools.console.service.JobService; import org.chtijbug.drools.console.service.JobService;
import org.chtijbug.drools.console.service.ProjectPersistService;
import org.chtijbug.drools.proxy.persistence.model.KieWorkbench; import org.chtijbug.drools.proxy.persistence.model.KieWorkbench;
import org.chtijbug.drools.proxy.persistence.model.User; import org.chtijbug.drools.proxy.persistence.model.User;
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
import org.chtijbug.drools.proxy.persistence.repository.KieWorkbenchRepository; import org.chtijbug.drools.proxy.persistence.repository.KieWorkbenchRepository;
import org.chtijbug.drools.proxy.persistence.repository.UserGroupsRepository;
import org.chtijbug.drools.proxy.persistence.repository.UserRepository; import org.chtijbug.drools.proxy.persistence.repository.UserRepository;
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData; import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
import org.guvnor.rest.client.CreateProjectJobRequest; import org.guvnor.rest.client.CreateProjectJobRequest;
@ -44,12 +47,17 @@ public class AssetServiceExpose {
@Autowired @Autowired
private KieWorkbenchRepository kieWorkbenchRepository; private KieWorkbenchRepository kieWorkbenchRepository;
@Autowired
private UserGroupsRepository userGroupsRepository;
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired @Autowired
private JobService jobService; private JobService jobService;
@Autowired
private ProjectPersistService projectPersistService;
@PostMapping(value = "/spaces", @PostMapping(value = "/spaces",
consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML}, consumes = {javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML},
@ -85,6 +93,7 @@ public class AssetServiceExpose {
} }
return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode()); return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
}); });
projectPersistService.createWorkSpaceGroupIfNeeded(request.getSpaceName(),kieWorkbench);
jobService.executeWrite(kieWorkbench.getExternalUrl()+"/rest", connectedUser.getLogin(), connectedUser.getPassword(), null, response.getBody().getJobId(), null); jobService.executeWrite(kieWorkbench.getExternalUrl()+"/rest", connectedUser.getLogin(), connectedUser.getPassword(), null, response.getBody().getJobId(), null);
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0); Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
return Response.status(Response.Status.CREATED).entity(response.getBody()).variant(variant).build(); return Response.status(Response.Status.CREATED).entity(response.getBody()).variant(variant).build();
@ -143,6 +152,8 @@ public class AssetServiceExpose {
Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0); Variant variant = Variant.mediaTypes(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE).add().build().get(0);
UserGroups workspaceUsergroup = userGroupsRepository.findByName("wrk_" + spaceName);
projectPersistService.createProjectGroupIfNeeded(request.getName(),kieWorkbench,null,workspaceUsergroup);
return Response.status(Response.Status.CREATED).entity(response2.getBody()).variant(variant).build(); return Response.status(Response.Status.CREATED).entity(response2.getBody()).variant(variant).build();
} }
private RequestCallback requestCallback(final Object content, String username, String password) { private RequestCallback requestCallback(final Object content, String username, String password) {

View file

@ -138,7 +138,44 @@ public class KieRepositoryService {
return null; return null;
} }
} }
public UserConnected getUserContent(String url, String username, String password,String workbenchName) {
User user = userRepository.findByLogin(username);
String completeurl = url + chtijbugprefix+"content";
if (user != null && user.getPassword().equals(password)) {
if (user.getCustomer()!= null &&
user.getCustomer().getKieWorkbench()!= null
&& user.getCustomer().getKieWorkbench().getInternalUrl()!= null){
completeurl = user.getCustomer().getKieWorkbench().getInternalUrl()+"/rest/chtijbug/content";
}
logger.info("url moteur reco : {}" , completeurl);
ResponseEntity<UserLoginInformation> response = restTemplateKiewb
.execute(completeurl, HttpMethod.GET, requestCallback(null, username, password), clientHttpResponse -> {
UserLoginInformation extractedResponse = null;
if (clientHttpResponse.getBody() != null) {
Scanner s = new Scanner(clientHttpResponse.getBody()).useDelimiter("\\A");
String result = s.hasNext() ? s.next() : "";
extractedResponse = mapper.readValue(result, UserLoginInformation.class);
}
return new ResponseEntity<>(extractedResponse, clientHttpResponse.getHeaders(), clientHttpResponse.getStatusCode());
});
UserConnected userConnected = new UserConnected();
UserLoginInformation responseBody = response.getBody();
userConnected.setUserName(username);
userConnected.setUserPassword(password);
userConnected.setUserPassword(password);
userConnected.getProjectResponses().addAll(responseBody.getProjects());
userConnected.getRoles().addAll(responseBody.getRoles());
userConnected.setUserName(username);
userConnected.setKieWorkbenchName(workbenchName);
return userConnected;
} else {
return null;
}
}
public List<Asset> getListAssets(String url, String username, String password, String spaceName, String projectName) { public List<Asset> getListAssets(String url, String username, String password, String spaceName, String projectName) {
String completeurl = url + chtijbugprefix + spaceName + "/" + projectName + "/assets"; String completeurl = url + chtijbugprefix + spaceName + "/" + projectName + "/assets";
logger.info("url getListAssets : {}" , completeurl); logger.info("url getListAssets : {}" , completeurl);

View file

@ -1,7 +1,6 @@
package org.chtijbug.drools.console.service; package org.chtijbug.drools.console.service;
import com.vaadin.flow.component.UI; import com.vaadin.flow.component.UI;
import com.vaadin.flow.server.VaadinSession;
import org.chtijbug.drools.ReverseProxyUpdate; import org.chtijbug.drools.ReverseProxyUpdate;
import org.chtijbug.drools.common.KafkaTopicConstants; import org.chtijbug.drools.common.KafkaTopicConstants;
import org.chtijbug.drools.console.AddLog; import org.chtijbug.drools.console.AddLog;
@ -20,10 +19,7 @@ import org.springframework.context.annotation.DependsOn;
import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service @Service
@DependsOn("applicationContext") @DependsOn("applicationContext")
@ -41,6 +37,13 @@ public class ProjectPersistService {
private KieConfigurationData config; private KieConfigurationData config;
@Autowired
private UserRepository userRepository;
@Autowired
private UserRolesRepository userRolesRepository;
@Autowired @Autowired
private UserConnectedService userConnectedService; private UserConnectedService userConnectedService;
@ -62,6 +65,8 @@ public class ProjectPersistService {
@Autowired @Autowired
private KafkaTemplate<String, ReverseProxyUpdate> kafkaTemplateProxyUpdate; private KafkaTemplate<String, ReverseProxyUpdate> kafkaTemplateProxyUpdate;
@Autowired
private UserGroupsRepository userGroupsRepository;
public ProjectPersistService() { public ProjectPersistService() {
@ -69,58 +74,102 @@ public class ProjectPersistService {
} }
public ProjectPersist saveorUpdateProject(PlatformProjectData platformProjectData, KieWorkbench kieWorkbench) {
public void saveIfnotExist(List<PlatformProjectData> platformProjectResponses, String workbenchName) { ProjectPersist projectPersist = projectRepository.findByProjectNameAndBranch(new KieProject(platformProjectData.getSpaceName(), platformProjectData.getName()), platformProjectData.getBranch());
KieWorkbench kieWorkbench = workbenchRepository.findByName(workbenchName);
for (PlatformProjectData platformProjectResponse : platformProjectResponses) {
ProjectPersist projectPersist = projectRepository.findByProjectNameAndBranch(new KieProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()), platformProjectResponse.getBranch());
if (projectPersist == null) { if (projectPersist == null) {
projectPersist = platformProjectResponseToProjectPersist(platformProjectResponse); projectPersist = platformProjectResponseToProjectPersist(platformProjectData);
projectPersist.setKieWorkbench(kieWorkbench); projectPersist.setKieWorkbench(kieWorkbench);
projectPersist = projectRepository.save(projectPersist); projectPersist.setProjectVersion(platformProjectData.getVersion());
addProjectToSession(projectPersist, true); projectPersist.setArtifactID(platformProjectData.getArtifactId());
projectPersist.setGroupID(platformProjectData.getGroupId());
} else { projectPersist.setClassNameList(new ArrayList<>());
projectPersist.setKieWorkbench(kieWorkbench); for (String className : platformProjectData.getJavaClasses()) {
projectPersist.getClassNameList().clear();
for (String className : platformProjectResponse.getJavaClasses()) {
projectPersist.getClassNameList().add(className); projectPersist.getClassNameList().add(className);
projectRepository.save(projectPersist);
}
addProjectToSession(projectPersist, false);
}
}
}
public Map<String, ProjectPersist> getProjectsSession() {
return (Map<String, ProjectPersist>) VaadinSession.getCurrent().getAttribute(projectVariable);
} }
projectPersist = projectRepository.save(projectPersist);
public void addProjectToSession(ProjectPersist projectPersist, boolean isModifiable) {
Map<String, ProjectPersist> projectPersists = getProjectsSession();
if (projectPersists == null) {
projectPersists = new HashMap<>();
}
if (isModifiable) {
projectPersists.put(projectPersist.getProjectName().toString() + "-" + projectPersist.getBranch(), projectPersist);
} else { } else {
projectPersist.setKieWorkbench(kieWorkbench);
projectPersist.setProjectVersion(platformProjectData.getVersion());
projectPersist.setArtifactID(platformProjectData.getArtifactId());
projectPersist.setGroupID(platformProjectData.getGroupId());
projectPersist.setClassNameList(new ArrayList<>());
for (String className : platformProjectData.getJavaClasses()) {
projectPersist.getClassNameList().add(className);
ProjectPersist tmp = projectPersists.get(projectPersist.getProjectName().toString() + "-" + projectPersist.getBranch()); }
if (tmp == null) { projectRepository.save(projectPersist);
projectPersists.put(projectPersist.getProjectName().toString() + "-" + projectPersist.getBranch(), projectPersist);
}
return projectPersist;
}
public void createProjectGroupIfNeeded(String projectName, KieWorkbench kieWorkbench,ProjectPersist projectPersist,UserGroups workspaceUserGroup ) {
UserGroups userGroups = userGroupsRepository.findByName("prj_" + projectName);
if (userGroups == null) {
UserGroups projectGroup = new UserGroups(UUID.randomUUID().toString(), "prj_" + projectName);
projectGroup.setKieWorkbench(kieWorkbench);
projectGroup.setProjectName(projectName);
projectGroup.setProjectPersist(projectPersist);
projectGroup.setWorkspaceUserGroup(workspaceUserGroup);
userGroupsRepository.save(projectGroup);
User groupUser = new User(UUID.randomUUID().toString(), "prj_user_" + projectName, "adminadmin99#");
groupUser.getUserGroups().add(projectGroup);
groupUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
userRepository.save(groupUser);
}else{
userGroups.setWorkspaceUserGroup(workspaceUserGroup);
userGroupsRepository.save(userGroups);
} }
} }
VaadinSession.getCurrent().setAttribute(projectVariable, projectPersists); public UserGroups createWorkSpaceGroupIfNeeded(String workSpaceName, KieWorkbench kieWorkbench) {
UserGroups userGroupsWorkSpace = userGroupsRepository.findByName("wrk_" + workSpaceName);
if (userGroupsWorkSpace == null) {
userGroupsWorkSpace = new UserGroups(UUID.randomUUID().toString(), "wrk_" + workSpaceName);
userGroupsWorkSpace.setKieWorkbench(kieWorkbench);
userGroupsWorkSpace.setSpaceName(workSpaceName);
userGroupsRepository.save(userGroupsWorkSpace);
User groupUser = new User(UUID.randomUUID().toString(), "wrk_user_" + workSpaceName, "pymma#");
groupUser.getUserGroups().add(userGroupsWorkSpace);
groupUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
userRepository.save(groupUser);
} }
return userGroupsWorkSpace;
}
public Map<String, ProjectPersist> findProjectsConnectedUser() {
//VaadinSession.getCurrent().get
boolean isAdmin =false;
UserConnected userConnected = userConnectedService.getUserConnected();
User user = userRepository.findByLogin(userConnected.getUserName());
for (UserRoles userRoles : user.getUserRoles()){
if ("admin".equals(userRoles.getName())){
isAdmin=true;
}
}
List<ProjectPersist> projectPersists = new ArrayList<>();
if (isAdmin) {
projectPersists = projectRepository.findAll();
}else {
List<UserGroups> userGroups = user.getUserGroups();
}
Map<String, ProjectPersist> map = new HashMap<>();
for (ProjectPersist projectPersist : projectPersists){
map.put(projectPersist.getProjectName().toString() + "-" + projectPersist.getBranch(),projectPersist);
}
return map;
}
public boolean associate(ProjectPersist projectPersist, List<RuntimePersist> runtimePersists) { public boolean associate(ProjectPersist projectPersist, List<RuntimePersist> runtimePersists) {
projectPersist.setStatus(ProjectPersist.Deployable); projectPersist.setStatus(ProjectPersist.Deployable);
projectPersist.setContainerID(projectPersist.getDeploymentName() + "-" + projectPersist.getProjectName()); projectPersist.setContainerID(projectPersist.getDeploymentName() + "-" + projectPersist.getProjectName());
@ -148,7 +197,6 @@ public class ProjectPersistService {
reverseProxyUpdate.getServerNames().add(hostName); reverseProxyUpdate.getServerNames().add(hostName);
} }
projectRepository.save(projectPersist); projectRepository.save(projectPersist);
addProjectToSession(projectPersist, true);
kafkaTemplateProxyUpdate.send(KafkaTopicConstants.REVERSE_PROXY, reverseProxyUpdate); kafkaTemplateProxyUpdate.send(KafkaTopicConstants.REVERSE_PROXY, reverseProxyUpdate);
return true; return true;
} }
@ -175,7 +223,6 @@ public class ProjectPersistService {
} }
public void waitForJobToBeEnded(String url, String username, String password, ProjectPersist projectPersist, AddLog workOnGoingView, UI ui) { public void waitForJobToBeEnded(String url, String username, String password, ProjectPersist projectPersist, AddLog workOnGoingView, UI ui) {
UserConnected userConnected = userConnectedService.getUserConnected(); UserConnected userConnected = userConnectedService.getUserConnected();
@ -195,7 +242,6 @@ public class ProjectPersistService {
jobService.executeWrite(url, username, password, workOnGoingView, result.getJobId(), ui); jobService.executeWrite(url, username, password, workOnGoingView, result.getJobId(), ui);
for (String serverName : projectPersist.getServerNames()) { for (String serverName : projectPersist.getServerNames()) {
@ -224,7 +270,6 @@ public class ProjectPersistService {
} }
public ProjectRepository getProjectRepository() { public ProjectRepository getProjectRepository() {
return projectRepository; return projectRepository;
} }

View file

@ -112,7 +112,6 @@ public class DefineProject extends VerticalLayout {
if (createMode) { if (createMode) {
projectPersist.setStatus(ProjectPersist.DEFINI); projectPersist.setStatus(ProjectPersist.DEFINI);
} }
projectPersistService.addProjectToSession(projectPersist,true);
projectPersistService.getProjectRepository().save(projectPersist); projectPersistService.getProjectRepository().save(projectPersist);
deploymentView.setDataProvider(); deploymentView.setDataProvider();
dialog.close(); dialog.close();

View file

@ -3,9 +3,13 @@ package org.chtijbug.drools.console.vaadincomponent.leftMenu.Action;
import com.vaadin.flow.component.button.Button; import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.icon.VaadinIcon; import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.orderedlayout.VerticalLayout; import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import org.chtijbug.drools.console.service.ProjectPersistService;
import org.chtijbug.drools.console.service.util.AppContext;
import org.chtijbug.drools.console.vaadincomponent.componentperso.ComboBoxPerso; import org.chtijbug.drools.console.vaadincomponent.componentperso.ComboBoxPerso;
import org.chtijbug.drools.console.view.TemplateView; import org.chtijbug.drools.console.view.TemplateView;
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData; import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import java.util.Map;
public class TemplatesAction extends VerticalLayout { public class TemplatesAction extends VerticalLayout {
@ -15,16 +19,20 @@ public class TemplatesAction extends VerticalLayout {
private Button edit; private Button edit;
private ComboBoxPerso<PlatformProjectData> spaceSelection; private ComboBoxPerso<ProjectPersist> spaceSelection;
private ProjectPersistService projectPersistService;
public TemplatesAction(TemplateView templateView){ public TemplatesAction(TemplateView templateView){
setClassName("leftMenu-global-action"); setClassName("leftMenu-global-action");
projectPersistService = AppContext.getApplicationContext().getBean(ProjectPersistService.class);
Map<String, ProjectPersist> map = projectPersistService.findProjectsConnectedUser();
spaceSelection = new ComboBoxPerso<>("Project",VaadinIcon.SEARCH.create()); spaceSelection = new ComboBoxPerso<>("Project",VaadinIcon.SEARCH.create());
spaceSelection.getComboBox().setItems(templateView.getUserConnectedService().getUserConnected().getProjectResponses()); spaceSelection.getComboBox().setItems(map.values());
spaceSelection.getComboBox().setItemLabelGenerator(PlatformProjectData::getName); spaceSelection.getComboBox().setItemLabelGenerator(ProjectPersist::getKieProjectName);
spaceSelection.getComboBox().addValueChangeListener(valueChangeEvent -> { spaceSelection.getComboBox().addValueChangeListener(valueChangeEvent -> {
templateView.setDataProvider(spaceSelection.getComboBox()); templateView.setDataProvider(spaceSelection.getComboBox());
}); });

View file

@ -130,7 +130,7 @@ public class FormulaireComposant extends VerticalLayout {
if(connected!=null) { if(connected!=null) {
connected.setConnected(true); connected.setConnected(true);
userConnectedService.addUserToSession(connected); userConnectedService.addUserToSession(connected);
projectPersistService.saveIfnotExist(connected.getProjectResponses(),configKie.getName()); //projectPersistService.saveIfnotExist(connected.getProjectResponses(),configKie.getName());
return true; return true;
}else { }else {

View file

@ -213,7 +213,7 @@ public class DeploymentView extends VerticalLayout implements AddLog {
public void setDataProvider() { public void setDataProvider() {
Map<String, ProjectPersist> projectPersists = projectPersistService.getProjectsSession(); Map<String, ProjectPersist> projectPersists = projectPersistService.findProjectsConnectedUser();
if (projectPersists != null) { if (projectPersists != null) {
ListDataProvider<ProjectPersist> dataProvider = new ListDataProvider<>(projectPersists.values()); ListDataProvider<ProjectPersist> dataProvider = new ListDataProvider<>(projectPersists.values());
filterDataProvider = dataProvider.withConfigurableFilter(); filterDataProvider = dataProvider.withConfigurableFilter();

View file

@ -10,14 +10,17 @@ import com.vaadin.flow.data.provider.ListDataProvider;
import com.vaadin.flow.data.value.ValueChangeMode; import com.vaadin.flow.data.value.ValueChangeMode;
import com.vaadin.flow.function.SerializablePredicate; import com.vaadin.flow.function.SerializablePredicate;
import org.chtijbug.drools.console.service.KieRepositoryService; import org.chtijbug.drools.console.service.KieRepositoryService;
import org.chtijbug.drools.console.service.ProjectPersistService;
import org.chtijbug.drools.console.service.UserConnectedService; import org.chtijbug.drools.console.service.UserConnectedService;
import org.chtijbug.drools.console.service.model.UserConnected; import org.chtijbug.drools.console.service.model.UserConnected;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData; import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext; import org.chtijbug.drools.console.service.util.AppContext;
import org.chtijbug.drools.console.vaadincomponent.componentperso.DialogPerso; import org.chtijbug.drools.console.vaadincomponent.componentperso.DialogPerso;
import org.chtijbug.drools.console.vaadincomponent.leftMenu.Action.TemplatesAction; import org.chtijbug.drools.console.vaadincomponent.leftMenu.Action.TemplatesAction;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
import org.chtijbug.drools.proxy.persistence.repository.UserGroupsRepository;
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset; import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -37,6 +40,10 @@ public class TemplateView extends VerticalLayout {
private UserConnectedService userConnectedService; private UserConnectedService userConnectedService;
private UserGroupsRepository userGroupsRepository;
private ProjectPersistService projectPersistService;
private ListDataProvider<Asset> dataProvider; private ListDataProvider<Asset> dataProvider;
private Grid<Asset> assetListGrid; private Grid<Asset> assetListGrid;
@ -56,7 +63,9 @@ public class TemplateView extends VerticalLayout {
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class); this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class); this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
this.userGroupsRepository = AppContext.getApplicationContext().getBean(UserGroupsRepository.class);
this.userConnected = userConnectedService.getUserConnected(); this.userConnected = userConnectedService.getUserConnected();
this.projectPersistService = AppContext.getApplicationContext().getBean(ProjectPersistService.class);
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class); this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
assetListGrid = new Grid(); assetListGrid = new Grid();
@ -81,9 +90,16 @@ public class TemplateView extends VerticalLayout {
}); });
} }
public void setDataProvider(ComboBox<PlatformProjectData> spaceSelection){ public void setDataProvider(ComboBox<ProjectPersist> spaceSelection){
PlatformProjectData response = spaceSelection.getValue(); ProjectPersist response = spaceSelection.getValue();
List<Asset> tmp = kieRepositoryService.getListAssets(config.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword(), response.getSpaceName(), response.getName()); if (response!= null) {
UserGroups projectGroups = userGroupsRepository.findUserGroupsByProjectPersist(response);
String workspaceName = projectGroups.getWorkspaceUserGroup().getSpaceName();
List<Asset> tmp = kieRepositoryService.getListAssets(config.getKiewbUrl(),
userConnected.getUserName(),
userConnected.getUserPassword(),
workspaceName,
projectGroups.getProjectName());
List<Asset> result = new ArrayList<>(); List<Asset> result = new ArrayList<>();
for (Asset asset : tmp) { for (Asset asset : tmp) {
if (asset.getTitle().endsWith(".template") if (asset.getTitle().endsWith(".template")
@ -91,26 +107,35 @@ public class TemplateView extends VerticalLayout {
result.add(asset); result.add(asset);
} }
} }
dataProvider=new ListDataProvider<>(result); dataProvider = new ListDataProvider<>(result);
filterDataProvider = dataProvider.withConfigurableFilter();
assetListGrid.setDataProvider(filterDataProvider);
reinitFilter();
}else{
List<Asset> result = new ArrayList<>();
dataProvider = new ListDataProvider<>(result);
filterDataProvider = dataProvider.withConfigurableFilter(); filterDataProvider = dataProvider.withConfigurableFilter();
assetListGrid.setDataProvider(filterDataProvider); assetListGrid.setDataProvider(filterDataProvider);
reinitFilter(); reinitFilter();
} }
public void refreshList(ComboBox<PlatformProjectData> spaceSelection) {
spaceSelection.setItems(userConnected.getProjectResponses());
} }
public void edit(ComboBox<PlatformProjectData> spaceSelection){
public void refreshList(ComboBox<ProjectPersist> spaceSelection) {
spaceSelection.setItems(projectPersistService.findProjectsConnectedUser().values());
}
public void edit(ComboBox<ProjectPersist> spaceSelection){
Set<Asset> selectedElements = assetListGrid.getSelectedItems(); Set<Asset> selectedElements = assetListGrid.getSelectedItems();
if (selectedElements.toArray().length > 0) { if (selectedElements.toArray().length > 0) {
Optional<Asset> assetOptional = selectedElements.stream().findFirst(); Optional<Asset> assetOptional = selectedElements.stream().findFirst();
if (assetOptional.isPresent()) { if (assetOptional.isPresent()) {
String assetName = assetOptional.get().getTitle(); String assetName = assetOptional.get().getTitle();
if (assetName != null) { if (assetName != null) {
PlatformProjectData response = spaceSelection.getValue(); //latformProjectData response = spaceSelection.getValue();
userConnectedService.addAssetToSession(assetName); userConnectedService.addAssetToSession(assetName);
userConnectedService.addProjectToSession(response.getName()); UserGroups projectGroups = userGroupsRepository.findUserGroupsByProjectPersist(spaceSelection.getValue());
userConnectedService.addSpaceToSession(response.getSpaceName()); String workspaceName=projectGroups.getWorkspaceUserGroup().getSpaceName();
userConnectedService.addProjectToSession(projectGroups.getProjectName());
userConnectedService.addSpaceToSession(workspaceName);
DialogPerso dialog = new DialogPerso(); DialogPerso dialog = new DialogPerso();
dialog.add(new EditTemplateView(dialog, assetName)); dialog.add(new EditTemplateView(dialog, assetName));

View file

@ -16,7 +16,9 @@
package org.chtijbug.guvnor.uberfire.security; package org.chtijbug.guvnor.uberfire.security;
import com.mongodb.BasicDBObject;
import com.mongodb.Block; import com.mongodb.Block;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoDatabase;
@ -37,6 +39,8 @@ import org.uberfire.ext.security.management.util.SecurityManagementUtils;
import java.util.*; import java.util.*;
import static com.mongodb.client.model.Filters.eq;
/** /**
* <p>Groups manager service provider implementation for Apache tomcat, when using default realm based on properties files.</p> * <p>Groups manager service provider implementation for Apache tomcat, when using default realm based on properties files.</p>
* @since 0.8.0 * @since 0.8.0
@ -85,14 +89,39 @@ public class KiePlatformGroupManager implements GroupManager, ContextualManager
@Override @Override
public SearchResponse<Group> search(SearchRequest request) throws SecurityManagementException { public SearchResponse<Group> search(SearchRequest request) throws SecurityManagementException {
SearchResponse<Group> result = new SearchResponseImpl<>(); MongoCollection<Document> userCollection = database.getCollection("userGroups");
return result; BasicDBObject regexQuery = new BasicDBObject();
regexQuery.put("name", new BasicDBObject("$regex", request.getSearchPattern() + ".*").append("$options", "i"));
List<Group> groups = new ArrayList<>();
long totalNumber = userCollection.countDocuments(regexQuery);
FindIterable<Document> documents = userCollection.find(regexQuery).skip(request.getPageSize() * (request.getPage() - 1)).limit(request.getPageSize());
documents.forEach((Block<? super Document>) document -> {
String groupName = document.getString("name");
Group group = new GroupImpl(groupName);
groups.add(group);
});
boolean hasNextPage = true;
if ((request.getPageSize() * (request.getPage()) > totalNumber)) {
hasNextPage = false;
}
SearchResponse<Group> response = new SearchResponseImpl(groups, request.getPage(), request.getPageSize(), Long.valueOf(totalNumber).intValue(), hasNextPage);
return response;
} }
@Override @Override
public Group get(String identifier) throws SecurityManagementException { public Group get(String identifier) throws SecurityManagementException {
Group group = new GroupImpl(identifier); MongoCollection<Document> userCollection = database.getCollection("userGroups");
return group; List<Group> groups = new ArrayList<>();
userCollection.find(eq("name", identifier)).forEach((Block<? super Document>) document -> {
String groupName = document.getString("name");
Group group = new GroupImpl(groupName);
groups.add(group);
});
if (groups.size() == 1) {
return groups.get(0);
} else {
return null;
}
} }
@Override @Override

View file

@ -42,7 +42,7 @@ public class KiePlatformSecurityService implements UserManagementService {
//-DconnectionString=localhost:28017 -Ddatabase=businessProxyDB //-DconnectionString=localhost:28017 -Ddatabase=businessProxyDB
this.connectionString = System.getProperty("connectionString"); this.connectionString = System.getProperty("connectionString");
this.databaseName=System.getProperty("database"); this.databaseName=System.getProperty("name");
System.out.println("KiePlatformSecurityService initialized with databaseName = " + connectionString ); System.out.println("KiePlatformSecurityService initialized with databaseName = " + connectionString );
this.mongoClient = MongoClients.create(connectionString); this.mongoClient = MongoClients.create(connectionString);
this.pojoCodecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), this.pojoCodecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(),

View file

@ -34,6 +34,12 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.uberfire</groupId>
<artifactId>uberfire-rest-backend</artifactId>
<version>${jbpm.version}</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>org.kie</groupId> <groupId>org.kie</groupId>

View file

@ -11,6 +11,7 @@ import org.guvnor.common.services.project.model.GAV;
import org.guvnor.common.services.project.model.POM; import org.guvnor.common.services.project.model.POM;
import org.guvnor.common.services.project.model.WorkspaceProject; import org.guvnor.common.services.project.model.WorkspaceProject;
import org.guvnor.common.services.project.service.WorkspaceProjectService; import org.guvnor.common.services.project.service.WorkspaceProjectService;
import org.guvnor.rest.backend.UserManagementResourceHelper;
import org.guvnor.structure.organizationalunit.OrganizationalUnit; import org.guvnor.structure.organizationalunit.OrganizationalUnit;
import org.guvnor.structure.organizationalunit.OrganizationalUnitService; import org.guvnor.structure.organizationalunit.OrganizationalUnitService;
import org.guvnor.structure.repositories.Branch; import org.guvnor.structure.repositories.Branch;
@ -18,10 +19,12 @@ import org.guvnor.structure.repositories.Repository;
import org.guvnor.structure.repositories.RepositoryService; import org.guvnor.structure.repositories.RepositoryService;
import org.kie.workbench.common.screens.datamodeller.service.DataModelerService; import org.kie.workbench.common.screens.datamodeller.service.DataModelerService;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.uberfire.backend.authz.AuthorizationService;
import org.uberfire.io.IOService; import org.uberfire.io.IOService;
import org.uberfire.java.nio.base.options.CommentedOption; import org.uberfire.java.nio.base.options.CommentedOption;
import org.uberfire.java.nio.file.DirectoryStream; import org.uberfire.java.nio.file.DirectoryStream;
import org.uberfire.java.nio.file.Paths; import org.uberfire.java.nio.file.Paths;
import org.uberfire.security.authz.PermissionManager;
import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject; import javax.inject.Inject;
@ -63,7 +66,13 @@ public class PackageResource {
private WorkspaceProjectService workspaceProjectService; private WorkspaceProjectService workspaceProjectService;
@Inject @Inject
private AssetService assetService; private AssetService assetService;
@Inject
private PermissionManager permissionManager;
@Inject
private AuthorizationService authorizationService;
@Inject
private UserManagementResourceHelper userManagementResourceHelper;
public PackageResource() { public PackageResource() {
System.out.println("coucou"); System.out.println("coucou");
@ -76,6 +85,22 @@ public class PackageResource {
UserLoginInformation userLoginInformation = new UserLoginInformation(); UserLoginInformation userLoginInformation = new UserLoginInformation();
userLoginInformation.setUsername(sc.getUserPrincipal().getName());
for (String role : PermissionConstants.tableauChaine) {
if (sc.isUserInRole(role) == true) {
userLoginInformation.getRoles().add(role);
}
}
return userLoginInformation;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/content")
public UserLoginInformation getUserContent() {
UserLoginInformation userLoginInformation = new UserLoginInformation();
userLoginInformation.setUsername(sc.getUserPrincipal().getName()); userLoginInformation.setUsername(sc.getUserPrincipal().getName());
for (String role : PermissionConstants.tableauChaine) { for (String role : PermissionConstants.tableauChaine) {
if (sc.isUserInRole(role) == true) { if (sc.isUserInRole(role) == true) {
@ -86,7 +111,6 @@ public class PackageResource {
return userLoginInformation; return userLoginInformation;
} }
@GET @GET
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Path("/detailedSpaces") @Path("/detailedSpaces")
@ -123,6 +147,8 @@ public class PackageResource {
return null; return null;
} }
@GET @GET
@Path("{organizationalUnitName}/{projectName}/assets") @Path("{organizationalUnitName}/{projectName}/assets")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})

View file

@ -86,6 +86,9 @@ public class AssetService {
return repoNames; return repoNames;
} }
public void todo(){
// workspaceProjectService.
}

View file

@ -34,6 +34,7 @@ public class ProjectPersist implements Serializable {
@DBRef @DBRef
private KieWorkbench kieWorkbench; private KieWorkbench kieWorkbench;
private KieProject projectName; private KieProject projectName;
private String mainClass; private String mainClass;
@ -179,6 +180,18 @@ public class ProjectPersist implements Serializable {
this.serverNames = serverNames; this.serverNames = serverNames;
} }
public String getWorkspaceName(){
if (this.projectName!= null){
return projectName.getSpaceName();
}
return null;
}
public String getKieProjectName(){
if (this.projectName!= null){
return projectName.getName()+"-"+this.branch;
}
return null;
}
public ProjectPersist duplicate(){ public ProjectPersist duplicate(){
ArrayList<String> listServerNames = new ArrayList<String>(); ArrayList<String> listServerNames = new ArrayList<String>();
listServerNames.addAll(serverNames); listServerNames.addAll(serverNames);

View file

@ -2,6 +2,7 @@ package org.chtijbug.drools.proxy.persistence.model;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
@Document @Document
@ -16,7 +17,14 @@ public class UserGroups {
@Indexed @Indexed
private String projectName; private String projectName;
@DBRef
private KieWorkbench kieWorkbench;
@DBRef
private ProjectPersist projectPersist;
@DBRef
private UserGroups workspaceUserGroup;
public UserGroups() { public UserGroups() {
} }
@ -58,4 +66,28 @@ public class UserGroups {
this.projectName = projectName; this.projectName = projectName;
} }
public KieWorkbench getKieWorkbench() {
return kieWorkbench;
}
public void setKieWorkbench(KieWorkbench kieWorkbench) {
this.kieWorkbench = kieWorkbench;
}
public ProjectPersist getProjectPersist() {
return projectPersist;
}
public void setProjectPersist(ProjectPersist projectPersist) {
this.projectPersist = projectPersist;
}
public UserGroups getWorkspaceUserGroup() {
return workspaceUserGroup;
}
public void setWorkspaceUserGroup(UserGroups workspaceUserGroup) {
this.workspaceUserGroup = workspaceUserGroup;
}
} }

View file

@ -1,5 +1,6 @@
package org.chtijbug.drools.proxy.persistence.repository; package org.chtijbug.drools.proxy.persistence.repository;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.chtijbug.drools.proxy.persistence.model.UserGroups; import org.chtijbug.drools.proxy.persistence.model.UserGroups;
import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -9,4 +10,6 @@ public interface UserGroupsRepository extends MongoRepository<UserGroups, String
UserGroups findByName(String login); UserGroups findByName(String login);
UserGroups findByID(String login); UserGroups findByID(String login);
UserGroups findUserGroupsByProjectPersist(ProjectPersist projectPersist);
} }