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:
parent
f23eec8ec3
commit
3f1187921e
18 changed files with 416 additions and 131 deletions
|
|
@ -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 {
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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})
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,9 @@ public class AssetService {
|
||||||
return repoNames;
|
return repoNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void todo(){
|
||||||
|
// workspaceProjectService.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue