Skip to content

Commit a55ed99

Browse files
Merge pull request #190 from InseeFr/devNewRoleBangles
Add scheduler role permissions
2 parents 79bb337 + efb17c3 commit a55ed99

File tree

11 files changed

+29
-14
lines changed

11 files changed

+29
-14
lines changed

src/main/java/fr/insee/genesis/configuration/auth/security/ApplicationRole.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ public enum ApplicationRole {
55
USER_KRAFTWERK,
66
USER_PLATINE,
77
COLLECT_PLATFORM,
8+
SCHEDULER,
89
READER
910
}
1011

src/main/java/fr/insee/genesis/configuration/auth/security/OIDCSecurityConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
5656
);
5757
}
5858
http
59-
.authorizeHttpRequests(configurer -> configurer
59+
.authorizeHttpRequests(configure -> configure
6060
.requestMatchers(HttpMethod.GET,"/questionnaires/**").hasRole(String.valueOf(ApplicationRole.READER))
6161
.requestMatchers(HttpMethod.GET,"/modes/**").hasRole(String.valueOf(ApplicationRole.READER))
6262
.requestMatchers(HttpMethod.GET,"/interrogations/**").hasRole(String.valueOf(ApplicationRole.READER))

src/main/java/fr/insee/genesis/configuration/auth/security/RoleConfiguration.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,27 @@ public class RoleConfiguration {
3131
@Value("#{'${app.role.collect-platform.claims}'.split(',')}")
3232
private List<String> collectPlatformClaims;
3333

34+
@Value("#{'${app.role.scheduler.claims}'.split(',')}")
35+
private List<String> schedulerClaims;
36+
3437
public Map<String, List<String>> getRolesByClaim() {
3538
return rolesByClaim;
3639
}
3740

3841
private Map<String, List<String>> rolesByClaim;
3942

4043
//Defines a role hierarchy
44+
//For example if
4145
//ADMIN implies USER role too
4246
//USER implies READER role too
43-
//so an admin has 2 roles: ADMIN/USER
47+
//so an admin has 3 roles: ADMIN/USER/READER
4448
@Bean
4549
static RoleHierarchy roleHierarchy() {
4650
return RoleHierarchyImpl.withDefaultRolePrefix()
4751
.role(ApplicationRole.ADMIN.toString()).implies(ApplicationRole.USER_KRAFTWERK.toString())
4852
.role(ApplicationRole.ADMIN.toString()).implies(ApplicationRole.USER_PLATINE.toString())
4953
.role(ApplicationRole.ADMIN.toString()).implies(ApplicationRole.COLLECT_PLATFORM.toString())
54+
.role(ApplicationRole.ADMIN.toString()).implies(ApplicationRole.SCHEDULER.toString())
5055
.role(ApplicationRole.USER_KRAFTWERK.toString()).implies(ApplicationRole.READER.toString())
5156
.role(ApplicationRole.USER_PLATINE.toString()).implies(ApplicationRole.READER.toString())
5257
.build();
@@ -65,31 +70,35 @@ public void initialization() {
6570

6671
rolesByClaim = new HashMap<>();
6772

68-
// Ajout des claims pour le rôle ADMIN
73+
// Add claims for the ADMIN role
6974
adminClaims.forEach(claim -> rolesByClaim
7075
.computeIfAbsent(claim, k -> new ArrayList<>())
7176
.add(String.valueOf(ApplicationRole.ADMIN)));
7277

73-
// Ajout des claims pour le rôle USER_KRAFTWERK
78+
// Add claims for the USER_KRAFTWERK role
7479
userKraftwerkClaims.forEach(claim -> rolesByClaim
7580
.computeIfAbsent(claim, k -> new ArrayList<>())
7681
.add(String.valueOf(ApplicationRole.USER_KRAFTWERK)));
7782

78-
// Ajout des claims pour le rôle USER_PLATINE
83+
// Ajout des claims pour le rôle USER_PLATINE role
7984
userPlatineClaims.forEach(claim -> rolesByClaim
8085
.computeIfAbsent(claim, k -> new ArrayList<>())
8186
.add(String.valueOf(ApplicationRole.USER_PLATINE)));
8287

83-
// Ajout des claims pour le rôle COLLECT_PLATFORM
88+
// Add claims for the COLLECT_PLATFORM role
8489
collectPlatformClaims.forEach(claim -> rolesByClaim
8590
.computeIfAbsent(claim, k -> new ArrayList<>())
8691
.add(String.valueOf(ApplicationRole.COLLECT_PLATFORM)));
8792

88-
// Ajout des claims pour le rôle READER
93+
// Add claims for the READER role
8994
readerClaims.forEach(claim -> rolesByClaim
9095
.computeIfAbsent(claim, k -> new ArrayList<>())
9196
.add(String.valueOf(ApplicationRole.READER)));
9297

98+
//Add claims for the SCHEDULER role
99+
schedulerClaims.forEach(claim -> rolesByClaim
100+
.computeIfAbsent(claim, k -> new ArrayList<>())
101+
.add(String.valueOf(ApplicationRole.SCHEDULER)));
93102

94103
log.info("Roles configuration : {}", rolesByClaim);
95104
}

src/main/java/fr/insee/genesis/controller/rest/ScheduleController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public ResponseEntity<Object> deleteSchedule(
126126

127127
@Operation(summary = "Set last execution date with new date or empty")
128128
@PostMapping(path = "/setLastExecutionDate")
129-
@PreAuthorize("hasRole('ADMIN')")
129+
@PreAuthorize("hasRole('SCHEDULER')")
130130
public ResponseEntity<Object> setSurveyLastExecution(
131131
@Parameter(description = "Survey name to call Kraftwerk on") @RequestBody String surveyName,
132132
@Parameter(description = "Date to save as last execution date", example = "2024-01-01T12:00:00") @RequestParam("newDate") LocalDateTime newDate
@@ -143,7 +143,7 @@ public ResponseEntity<Object> setSurveyLastExecution(
143143

144144
@Operation(summary = "Delete expired schedules")
145145
@DeleteMapping(path = "/delete/expired-schedules")
146-
@PreAuthorize("hasRole('ADMIN')")
146+
@PreAuthorize("hasRole('SCHEDULER')")
147147
public ResponseEntity<Object> deleteExpiredSchedules() throws NotFoundException, IOException {
148148
Set<String> storedSurveySchedulesNames = new HashSet<>();
149149
for(ScheduleModel scheduleModel : scheduleApiPort.getAllSchedules()){

src/main/java/fr/insee/genesis/controller/rest/UtilsController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public ResponseEntity<Object> saveResponsesFromXmlFile(@RequestParam("inputFolde
4848

4949
@Operation(summary = "Record volumetrics of each campaign in a folder")
5050
@PutMapping(path = "/volumetrics/save-all-campaigns")
51-
@PreAuthorize("hasRole('ADMIN')")
51+
@PreAuthorize("hasRole('SCHEDULER')")
5252
public ResponseEntity<Object> saveVolumetry() throws IOException {
5353
volumetryLogService.writeVolumetries(surveyUnitService);
5454
volumetryLogService.cleanOldFiles();

src/main/java/fr/insee/genesis/controller/rest/responses/ResponseController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public ResponseEntity<Object> saveResponsesFromXmlCampaignFolder(@RequestParam("
160160
//SAVE ALL
161161
@Operation(summary = "Save all files to Genesis Database (differential data folder only), regardless of the campaign")
162162
@PutMapping(path = "/lunatic-xml/save-all-campaigns")
163-
@PreAuthorize("hasRole('ADMIN')")
163+
@PreAuthorize("hasRole('SCHEDULER')")
164164
public ResponseEntity<Object> saveResponsesFromAllCampaignFolders(){
165165
List<GenesisError> errors = new ArrayList<>();
166166
List<File> campaignFolders = fileUtils.listAllSpecsFolders();

src/main/resources/application-dev.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ app.role.admin.claims=***
2121
app.role.user-kraftwerk.claims=***
2222
app.role.user-platine.claims=***
2323
app.role.reader.claims=***
24-
app.role.collect-platform.claims=***
24+
app.role.collect-platform.claims=***
25+
app.role.scheduler.claims=***

src/main/resources/application-preprod.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ app.role.admin.claims=***
2121
app.role.user-kraftwerk.claims=***
2222
app.role.user-platine.claims=***
2323
app.role.reader.claims=***
24-
app.role.collect-platform.claims=***
24+
app.role.collect-platform.claims=***
25+
app.role.scheduler.claims=***

src/main/resources/application-prod.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ app.role.admin.claims=***
2121
app.role.user-kraftwerk.claims=***
2222
app.role.user-platine.claims=***
2323
app.role.reader.claims=***
24-
app.role.collect-platform.claims=***
24+
app.role.collect-platform.claims=***
25+
app.role.scheduler.claims=***

src/main/resources/application-test-cucumber.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ app.role.user-kraftwerk.claims=utilisateur_Kraftwerk
77
app.role.user-platine.claims=utilisateur_Platine
88
app.role.reader.claims=lecteur_traiter
99
app.role.collect-platform.claims=protools
10+
app.role.scheduler.claims=scheduler_traiter
1011

1112
logging.file.name = /logs/genesis-api.log
1213

0 commit comments

Comments
 (0)