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.support.serializer.JsonDeserializer;
|
||||
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.WebMvcConfigurer;
|
||||
import springfox.documentation.builders.PathSelectors;
|
||||
|
|
@ -56,6 +57,7 @@ import java.util.Map;
|
|||
@EnableKafka
|
||||
@PropertySource("classpath:application.properties")
|
||||
@EnableSwagger2
|
||||
@EnableScheduling
|
||||
public class DroolsSpringBootConsoleApplication extends SpringBootServletInitializer {
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,14 @@
|
|||
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.repository.*;
|
||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectData;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -17,6 +22,9 @@ public class DababaseContentInit {
|
|||
@Value("${kie-wb.mainwbextern}")
|
||||
private String mainwbExtern;
|
||||
|
||||
@Value("${kie-wb.baseurl}")
|
||||
private String kiewbUrl;
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
|
|
@ -32,10 +40,13 @@ public class DababaseContentInit {
|
|||
@Autowired
|
||||
private CustomerRepository customerRepository;
|
||||
|
||||
public void initDatabaseIfNecessary(){
|
||||
@Autowired
|
||||
private KieRepositoryService kieRepositoryService;
|
||||
|
||||
User adminUser = userRepository.findByLogin("admin");
|
||||
if (adminUser==null){
|
||||
@Autowired
|
||||
private ProjectPersistService projectPersistService;
|
||||
|
||||
public void initDatabaseIfNecessary() {
|
||||
/**
|
||||
* admin The administrator
|
||||
* analyst The analyst
|
||||
|
|
@ -44,66 +55,101 @@ public class DababaseContentInit {
|
|||
* user The end user
|
||||
* kiemgmt KIE management user
|
||||
*/
|
||||
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(),"admingroup"));
|
||||
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(),"demogroup"));
|
||||
|
||||
adminUser = new User(UUID.randomUUID().toString(),"admin","adminadmin99#");
|
||||
adminUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
|
||||
adminUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
|
||||
adminUser.getUserRoles().add(userRolesRepository.findByName("admin"));
|
||||
adminUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||
adminUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||
userRepository.save(adminUser);
|
||||
|
||||
User nheronUser = new User(UUID.randomUUID().toString(),"nheron","adminnheron00@");
|
||||
nheronUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
|
||||
nheronUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
|
||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("admin"));
|
||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||
userRepository.save(nheronUser);
|
||||
|
||||
KieWorkbench mainWorkbench = new KieWorkbench();
|
||||
mainWorkbench.setID(UUID.randomUUID().toString());
|
||||
mainWorkbench.setName("demo");
|
||||
mainWorkbench.setExternalUrl(mainwbExtern);
|
||||
mainWorkbench.setInternalUrl(mainwbUrlIntern);
|
||||
mainWorkbench = kieWorkbenchRepository.save(mainWorkbench);
|
||||
|
||||
|
||||
Customer demCustomer = new Customer();
|
||||
demCustomer.setKieWorkbench(mainWorkbench);
|
||||
demCustomer.setName("demoCustomer");
|
||||
demCustomer.setID(UUID.randomUUID().toString());
|
||||
customerRepository.save(demCustomer);
|
||||
|
||||
User demoUser = new User(UUID.randomUUID().toString(),"demo","demo");
|
||||
demoUser.getUserGroups().add(userGroupsRepository.findByName("demogroup"));
|
||||
demoUser.getUserRoles().add(userRolesRepository.findByName("user"));
|
||||
demoUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||
demoUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||
demoUser.setWbName(mainWorkbench.getName());
|
||||
demoUser.setCustomer(demCustomer);
|
||||
userRepository.save(demoUser);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
User adminUser = userRepository.findByLogin("admin");
|
||||
if (adminUser == null) {
|
||||
this.initDatabase();
|
||||
}else{
|
||||
this.synchronizeDatabaseWithWorkbenches();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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(), "admingroup"));
|
||||
userGroupsRepository.save(new UserGroups(UUID.randomUUID().toString(), "demogroup"));
|
||||
|
||||
User adminUser = new User(UUID.randomUUID().toString(), "admin", "adminadmin99#");
|
||||
adminUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
|
||||
adminUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
|
||||
adminUser.getUserRoles().add(userRolesRepository.findByName("admin"));
|
||||
adminUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||
adminUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||
userRepository.save(adminUser);
|
||||
|
||||
User nheronUser = new User(UUID.randomUUID().toString(), "nheron", "adminnheron00@");
|
||||
nheronUser.getUserGroups().add(userGroupsRepository.findByName("kiemgmt"));
|
||||
nheronUser.getUserGroups().add(userGroupsRepository.findByName("admingroup"));
|
||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("admin"));
|
||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||
nheronUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||
userRepository.save(nheronUser);
|
||||
|
||||
KieWorkbench mainWorkbench = new KieWorkbench();
|
||||
mainWorkbench.setID(UUID.randomUUID().toString());
|
||||
mainWorkbench.setName("demo");
|
||||
mainWorkbench.setExternalUrl(mainwbExtern);
|
||||
mainWorkbench.setInternalUrl(mainwbUrlIntern);
|
||||
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();
|
||||
demCustomer.setKieWorkbench(mainWorkbench);
|
||||
demCustomer.setName("demoCustomer");
|
||||
demCustomer.setID(UUID.randomUUID().toString());
|
||||
customerRepository.save(demCustomer);
|
||||
User demoUser = new User(UUID.randomUUID().toString(), "demo", "demo");
|
||||
demoUser.getUserGroups().add(userGroupsRepository.findByName("demogroup"));
|
||||
demoUser.getUserRoles().add(userRolesRepository.findByName("user"));
|
||||
demoUser.getUserRoles().add(userRolesRepository.findByName("rest-all"));
|
||||
demoUser.getUserRoles().add(userRolesRepository.findByName("analyst"));
|
||||
demoUser.setWbName(mainWorkbench.getName());
|
||||
demoUser.setCustomer(demCustomer);
|
||||
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.chtijbug.drools.console.service.IndexerService;
|
||||
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.User;
|
||||
import org.chtijbug.drools.proxy.persistence.model.UserGroups;
|
||||
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.guvnor.server.jaxrs.model.PlatformProjectData;
|
||||
import org.guvnor.rest.client.CreateProjectJobRequest;
|
||||
|
|
@ -44,12 +47,17 @@ public class AssetServiceExpose {
|
|||
@Autowired
|
||||
private KieWorkbenchRepository kieWorkbenchRepository;
|
||||
|
||||
@Autowired
|
||||
private UserGroupsRepository userGroupsRepository;
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Autowired
|
||||
private JobService jobService;
|
||||
|
||||
@Autowired
|
||||
private ProjectPersistService projectPersistService;
|
||||
|
||||
@PostMapping(value = "/spaces",
|
||||
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());
|
||||
});
|
||||
projectPersistService.createWorkSpaceGroupIfNeeded(request.getSpaceName(),kieWorkbench);
|
||||
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);
|
||||
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);
|
||||
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();
|
||||
}
|
||||
private RequestCallback requestCallback(final Object content, String username, String password) {
|
||||
|
|
|
|||
|
|
@ -138,7 +138,44 @@ public class KieRepositoryService {
|
|||
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) {
|
||||
String completeurl = url + chtijbugprefix + spaceName + "/" + projectName + "/assets";
|
||||
logger.info("url getListAssets : {}" , completeurl);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package org.chtijbug.drools.console.service;
|
||||
|
||||
import com.vaadin.flow.component.UI;
|
||||
import com.vaadin.flow.server.VaadinSession;
|
||||
import org.chtijbug.drools.ReverseProxyUpdate;
|
||||
import org.chtijbug.drools.common.KafkaTopicConstants;
|
||||
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.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
@DependsOn("applicationContext")
|
||||
|
|
@ -41,6 +37,13 @@ public class ProjectPersistService {
|
|||
|
||||
private KieConfigurationData config;
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Autowired
|
||||
private UserRolesRepository userRolesRepository;
|
||||
|
||||
|
||||
@Autowired
|
||||
private UserConnectedService userConnectedService;
|
||||
|
||||
|
|
@ -62,6 +65,8 @@ public class ProjectPersistService {
|
|||
@Autowired
|
||||
private KafkaTemplate<String, ReverseProxyUpdate> kafkaTemplateProxyUpdate;
|
||||
|
||||
@Autowired
|
||||
private UserGroupsRepository userGroupsRepository;
|
||||
|
||||
|
||||
public ProjectPersistService() {
|
||||
|
|
@ -69,58 +74,102 @@ public class ProjectPersistService {
|
|||
|
||||
}
|
||||
|
||||
public ProjectPersist saveorUpdateProject(PlatformProjectData platformProjectData, KieWorkbench kieWorkbench) {
|
||||
ProjectPersist projectPersist = projectRepository.findByProjectNameAndBranch(new KieProject(platformProjectData.getSpaceName(), platformProjectData.getName()), platformProjectData.getBranch());
|
||||
|
||||
public void saveIfnotExist(List<PlatformProjectData> platformProjectResponses, String workbenchName) {
|
||||
if (projectPersist == null) {
|
||||
projectPersist = platformProjectResponseToProjectPersist(platformProjectData);
|
||||
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);
|
||||
|
||||
|
||||
KieWorkbench kieWorkbench = workbenchRepository.findByName(workbenchName);
|
||||
for (PlatformProjectData platformProjectResponse : platformProjectResponses) {
|
||||
|
||||
ProjectPersist projectPersist = projectRepository.findByProjectNameAndBranch(new KieProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()), platformProjectResponse.getBranch());
|
||||
|
||||
if (projectPersist == null) {
|
||||
projectPersist = platformProjectResponseToProjectPersist(platformProjectResponse);
|
||||
projectPersist.setKieWorkbench(kieWorkbench);
|
||||
projectPersist = projectRepository.save(projectPersist);
|
||||
addProjectToSession(projectPersist, true);
|
||||
|
||||
} else {
|
||||
projectPersist.setKieWorkbench(kieWorkbench);
|
||||
projectPersist.getClassNameList().clear();
|
||||
for (String className : platformProjectResponse.getJavaClasses()) {
|
||||
projectPersist.getClassNameList().add(className);
|
||||
projectRepository.save(projectPersist);
|
||||
}
|
||||
addProjectToSession(projectPersist, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
projectPersist = projectRepository.save(projectPersist);
|
||||
|
||||
public Map<String, ProjectPersist> getProjectsSession() {
|
||||
return (Map<String, ProjectPersist>) VaadinSession.getCurrent().getAttribute(projectVariable);
|
||||
}
|
||||
|
||||
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 {
|
||||
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) {
|
||||
projectPersists.put(projectPersist.getProjectName().toString() + "-" + projectPersist.getBranch(), projectPersist);
|
||||
}
|
||||
projectRepository.save(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);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
VaadinSession.getCurrent().setAttribute(projectVariable, projectPersists);
|
||||
|
||||
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) {
|
||||
projectPersist.setStatus(ProjectPersist.Deployable);
|
||||
projectPersist.setContainerID(projectPersist.getDeploymentName() + "-" + projectPersist.getProjectName());
|
||||
|
|
@ -148,7 +197,6 @@ public class ProjectPersistService {
|
|||
reverseProxyUpdate.getServerNames().add(hostName);
|
||||
}
|
||||
projectRepository.save(projectPersist);
|
||||
addProjectToSession(projectPersist, true);
|
||||
kafkaTemplateProxyUpdate.send(KafkaTopicConstants.REVERSE_PROXY, reverseProxyUpdate);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -175,7 +223,6 @@ public class ProjectPersistService {
|
|||
}
|
||||
|
||||
|
||||
|
||||
public void waitForJobToBeEnded(String url, String username, String password, ProjectPersist projectPersist, AddLog workOnGoingView, UI ui) {
|
||||
|
||||
UserConnected userConnected = userConnectedService.getUserConnected();
|
||||
|
|
@ -195,7 +242,6 @@ public class ProjectPersistService {
|
|||
jobService.executeWrite(url, username, password, workOnGoingView, result.getJobId(), ui);
|
||||
|
||||
|
||||
|
||||
for (String serverName : projectPersist.getServerNames()) {
|
||||
|
||||
|
||||
|
|
@ -224,7 +270,6 @@ public class ProjectPersistService {
|
|||
}
|
||||
|
||||
|
||||
|
||||
public ProjectRepository getProjectRepository() {
|
||||
return projectRepository;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,7 +112,6 @@ public class DefineProject extends VerticalLayout {
|
|||
if (createMode) {
|
||||
projectPersist.setStatus(ProjectPersist.DEFINI);
|
||||
}
|
||||
projectPersistService.addProjectToSession(projectPersist,true);
|
||||
projectPersistService.getProjectRepository().save(projectPersist);
|
||||
deploymentView.setDataProvider();
|
||||
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.icon.VaadinIcon;
|
||||
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.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 {
|
||||
|
||||
|
|
@ -15,16 +19,20 @@ public class TemplatesAction extends VerticalLayout {
|
|||
|
||||
private Button edit;
|
||||
|
||||
private ComboBoxPerso<PlatformProjectData> spaceSelection;
|
||||
private ComboBoxPerso<ProjectPersist> spaceSelection;
|
||||
|
||||
private ProjectPersistService projectPersistService;
|
||||
|
||||
public TemplatesAction(TemplateView templateView){
|
||||
|
||||
setClassName("leftMenu-global-action");
|
||||
|
||||
projectPersistService = AppContext.getApplicationContext().getBean(ProjectPersistService.class);
|
||||
Map<String, ProjectPersist> map = projectPersistService.findProjectsConnectedUser();
|
||||
|
||||
spaceSelection = new ComboBoxPerso<>("Project",VaadinIcon.SEARCH.create());
|
||||
spaceSelection.getComboBox().setItems(templateView.getUserConnectedService().getUserConnected().getProjectResponses());
|
||||
spaceSelection.getComboBox().setItemLabelGenerator(PlatformProjectData::getName);
|
||||
spaceSelection.getComboBox().setItems(map.values());
|
||||
spaceSelection.getComboBox().setItemLabelGenerator(ProjectPersist::getKieProjectName);
|
||||
|
||||
spaceSelection.getComboBox().addValueChangeListener(valueChangeEvent -> {
|
||||
templateView.setDataProvider(spaceSelection.getComboBox());
|
||||
});
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ public class FormulaireComposant extends VerticalLayout {
|
|||
if(connected!=null) {
|
||||
connected.setConnected(true);
|
||||
userConnectedService.addUserToSession(connected);
|
||||
projectPersistService.saveIfnotExist(connected.getProjectResponses(),configKie.getName());
|
||||
//projectPersistService.saveIfnotExist(connected.getProjectResponses(),configKie.getName());
|
||||
|
||||
return true;
|
||||
}else {
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ public class DeploymentView extends VerticalLayout implements AddLog {
|
|||
|
||||
public void setDataProvider() {
|
||||
|
||||
Map<String, ProjectPersist> projectPersists = projectPersistService.getProjectsSession();
|
||||
Map<String, ProjectPersist> projectPersists = projectPersistService.findProjectsConnectedUser();
|
||||
if (projectPersists != null) {
|
||||
ListDataProvider<ProjectPersist> dataProvider = new ListDataProvider<>(projectPersists.values());
|
||||
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.function.SerializablePredicate;
|
||||
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.model.UserConnected;
|
||||
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
|
||||
import org.chtijbug.drools.console.service.util.AppContext;
|
||||
import org.chtijbug.drools.console.vaadincomponent.componentperso.DialogPerso;
|
||||
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.model.PlatformProjectData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -37,6 +40,10 @@ public class TemplateView extends VerticalLayout {
|
|||
|
||||
private UserConnectedService userConnectedService;
|
||||
|
||||
private UserGroupsRepository userGroupsRepository;
|
||||
|
||||
private ProjectPersistService projectPersistService;
|
||||
|
||||
private ListDataProvider<Asset> dataProvider;
|
||||
|
||||
private Grid<Asset> assetListGrid;
|
||||
|
|
@ -56,7 +63,9 @@ public class TemplateView extends VerticalLayout {
|
|||
|
||||
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
|
||||
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
|
||||
this.userGroupsRepository = AppContext.getApplicationContext().getBean(UserGroupsRepository.class);
|
||||
this.userConnected = userConnectedService.getUserConnected();
|
||||
this.projectPersistService = AppContext.getApplicationContext().getBean(ProjectPersistService.class);
|
||||
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
|
||||
|
||||
assetListGrid = new Grid();
|
||||
|
|
@ -81,36 +90,52 @@ public class TemplateView extends VerticalLayout {
|
|||
});
|
||||
}
|
||||
|
||||
public void setDataProvider(ComboBox<PlatformProjectData> spaceSelection){
|
||||
PlatformProjectData response = spaceSelection.getValue();
|
||||
List<Asset> tmp = kieRepositoryService.getListAssets(config.getKiewbUrl(), userConnected.getUserName(), userConnected.getUserPassword(), response.getSpaceName(), response.getName());
|
||||
List<Asset> result = new ArrayList<>();
|
||||
for (Asset asset : tmp) {
|
||||
if (asset.getTitle().endsWith(".template")
|
||||
|| asset.getTitle().endsWith(".gdst")) {
|
||||
result.add(asset);
|
||||
public void setDataProvider(ComboBox<ProjectPersist> spaceSelection){
|
||||
ProjectPersist response = spaceSelection.getValue();
|
||||
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<>();
|
||||
for (Asset asset : tmp) {
|
||||
if (asset.getTitle().endsWith(".template")
|
||||
|| asset.getTitle().endsWith(".gdst")) {
|
||||
result.add(asset);
|
||||
}
|
||||
}
|
||||
dataProvider = new ListDataProvider<>(result);
|
||||
filterDataProvider = dataProvider.withConfigurableFilter();
|
||||
assetListGrid.setDataProvider(filterDataProvider);
|
||||
reinitFilter();
|
||||
}else{
|
||||
List<Asset> result = new ArrayList<>();
|
||||
dataProvider = new ListDataProvider<>(result);
|
||||
filterDataProvider = dataProvider.withConfigurableFilter();
|
||||
assetListGrid.setDataProvider(filterDataProvider);
|
||||
reinitFilter();
|
||||
}
|
||||
dataProvider=new ListDataProvider<>(result);
|
||||
filterDataProvider = dataProvider.withConfigurableFilter();
|
||||
assetListGrid.setDataProvider(filterDataProvider);
|
||||
reinitFilter();
|
||||
}
|
||||
|
||||
public void refreshList(ComboBox<PlatformProjectData> spaceSelection) {
|
||||
spaceSelection.setItems(userConnected.getProjectResponses());
|
||||
public void refreshList(ComboBox<ProjectPersist> spaceSelection) {
|
||||
spaceSelection.setItems(projectPersistService.findProjectsConnectedUser().values());
|
||||
}
|
||||
public void edit(ComboBox<PlatformProjectData> spaceSelection){
|
||||
public void edit(ComboBox<ProjectPersist> spaceSelection){
|
||||
Set<Asset> selectedElements = assetListGrid.getSelectedItems();
|
||||
if (selectedElements.toArray().length > 0) {
|
||||
Optional<Asset> assetOptional = selectedElements.stream().findFirst();
|
||||
if (assetOptional.isPresent()) {
|
||||
String assetName = assetOptional.get().getTitle();
|
||||
if (assetName != null) {
|
||||
PlatformProjectData response = spaceSelection.getValue();
|
||||
//latformProjectData response = spaceSelection.getValue();
|
||||
userConnectedService.addAssetToSession(assetName);
|
||||
userConnectedService.addProjectToSession(response.getName());
|
||||
userConnectedService.addSpaceToSession(response.getSpaceName());
|
||||
UserGroups projectGroups = userGroupsRepository.findUserGroupsByProjectPersist(spaceSelection.getValue());
|
||||
String workspaceName=projectGroups.getWorkspaceUserGroup().getSpaceName();
|
||||
userConnectedService.addProjectToSession(projectGroups.getProjectName());
|
||||
userConnectedService.addSpaceToSession(workspaceName);
|
||||
DialogPerso dialog = new DialogPerso();
|
||||
|
||||
dialog.add(new EditTemplateView(dialog, assetName));
|
||||
|
|
|
|||
Loading…
Add table
editor.link_modal.header
Reference in a new issue