-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCftlibConfig.java
More file actions
91 lines (74 loc) · 3.53 KB
/
Copy pathCftlibConfig.java
File metadata and controls
91 lines (74 loc) · 3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package uk.gov.hmcts.reform.pcs;
import io.micrometer.core.instrument.util.IOUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;
import uk.gov.hmcts.ccd.sdk.CCDDefinitionGenerator;
import uk.gov.hmcts.reform.pcs.ccd.CaseType;
import uk.gov.hmcts.reform.pcs.ccd.accesscontrol.UserRole;
import uk.gov.hmcts.reform.pcs.ccd.domain.State;
import uk.gov.hmcts.rse.ccd.lib.api.CFTLib;
import uk.gov.hmcts.rse.ccd.lib.api.CFTLibConfigurer;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static java.util.stream.Collectors.toCollection;
/**
* Configures the CFTLib with the required users, roles and CCD definitions.
* The Cftlib will find and execute this configuration class once all services are ready.
*/
@Component
public class CftlibConfig implements CFTLibConfigurer {
private final CCDDefinitionGenerator configWriter;
public CftlibConfig(@Lazy CCDDefinitionGenerator configWriter) {
this.configWriter = configWriter;
}
@Override
public void configure(CFTLib lib) throws Exception {
var users = Map.of(
"caseworker@pcs.com", List.of("caseworker", "caseworker-pcs"),
"pcs-solicitor1@test.com", List.of("caseworker", "caseworker-pcs-solicitor"),
"pcs-defendant-solicitor@test.com", List.of("pui-case-manager", "caseworker",
"caseworker-pcs-solicitor", "caseworker-pcs"),
"citizen@pcs.com", List.of("citizen"),
"data.store.idam.system.user@gmail.com", List.of(),
"ccd.import@pcs.com", List.of("ccd-import"),
"pcs-system-user@localhost", List.of("caseworker", "caseworker-pcs", "ccd-import", "pcs-system-update"),
"prd-admin-user@localhost", List.of(),
"master.caa@gmail.com", List.of("caseworker-caa")
);
// Create users and roles including in idam simulator
for (var entry : users.entrySet()) {
lib.createIdamUser(entry.getKey(), entry.getValue().toArray(new String[0]));
lib.createProfile(entry.getKey(), "CIVIL", "PCS", State.CASE_ISSUED.name());
}
createAccessProfiles(lib);
createRoleAssignments(lib);
// Generate CCD definitions
configWriter.generateAllCaseTypesToJSON(new File("build/definitions"));
// Import CCD definitions
lib.importJsonDefinition(new File("build/definitions/" + CaseType.getCaseType()));
}
private void createAccessProfiles(CFTLib lib) {
List<String> roleNames = Arrays.stream(UserRole.values())
.map(UserRole::getRole)
.collect(toCollection(ArrayList::new));
roleNames.add("caseworker");
roleNames.add("caseworker-ras-validation");
roleNames.add("GS_profile");
roleNames.add("pui-case-manager");
roleNames.add("caseworker-caa");
lib.createRoles(roleNames.toArray(new String[0]));
}
private void createRoleAssignments(CFTLib lib) throws IOException {
ResourceLoader resourceLoader = new DefaultResourceLoader();
var json = IOUtils.toString(resourceLoader.getResource("classpath:cftlib-am-role-assignments.json")
.getInputStream(), Charset.defaultCharset());
lib.configureRoleAssignments(json);
}
}