Skip to content

Commit

Permalink
apply backend formatter
Browse files Browse the repository at this point in the history
  • Loading branch information
kcinay055679 committed Dec 10, 2024
1 parent 41357d4 commit 22aaa9f
Show file tree
Hide file tree
Showing 270 changed files with 6,177 additions and 4,970 deletions.
19 changes: 10 additions & 9 deletions backend/src/main/java/ch/puzzle/okr/Constants.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package ch.puzzle.okr;

import static java.util.Map.entry;

import ch.puzzle.okr.dto.checkin.*;
import ch.puzzle.okr.dto.keyresult.*;

import java.util.Map;

import static java.util.Map.entry;

public class Constants {
private Constants() {
}
Expand All @@ -29,11 +28,13 @@ private Constants() {
public static final String CHECK_IN_KEY_RESULT_ID_ATTRIBUTE_NAME = "keyResultId";
public static final String KEY_RESULT_TYPE_ATTRIBUTE_NAME = "keyResultType";

public static final Map<String, Class<? extends KeyResultDto>> KEY_RESULT_MAP = Map.ofEntries(
entry(KEY_RESULT_TYPE_METRIC, KeyResultMetricDto.class),
entry(KEY_RESULT_TYPE_ORDINAL, KeyResultOrdinalDto.class));
public static final Map<String, Class<? extends KeyResultDto>> KEY_RESULT_MAP = Map.ofEntries(entry(KEY_RESULT_TYPE_METRIC,
KeyResultMetricDto.class),
entry(KEY_RESULT_TYPE_ORDINAL,
KeyResultOrdinalDto.class));

public static final Map<String, Class<? extends CheckInDto>> CHECK_IN_MAP = Map.ofEntries(
entry(KEY_RESULT_TYPE_METRIC, CheckInMetricDto.class),
entry(KEY_RESULT_TYPE_ORDINAL, CheckInOrdinalDto.class));
public static final Map<String, Class<? extends CheckInDto>> CHECK_IN_MAP = Map.ofEntries(entry(KEY_RESULT_TYPE_METRIC,
CheckInMetricDto.class),
entry(KEY_RESULT_TYPE_ORDINAL,
CheckInOrdinalDto.class));
}
22 changes: 18 additions & 4 deletions backend/src/main/java/ch/puzzle/okr/ErrorKey.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
package ch.puzzle.okr;

public enum ErrorKey {
ATTRIBUTE_NULL, ATTRIBUTE_CHANGED, ATTRIBUTE_SET_FORBIDDEN, ATTRIBUTE_NOT_SET, ATTRIBUTE_CANNOT_CHANGE,
ATTRIBUTE_MUST_BE_DRAFT, KEY_RESULT_CONVERSION, ALREADY_EXISTS_SAME_NAME, CONVERT_TOKEN, DATA_HAS_BEEN_UPDATED,
MODEL_NULL, MODEL_WITH_ID_NOT_FOUND, NOT_AUTHORIZED_TO_READ, NOT_AUTHORIZED_TO_WRITE, NOT_AUTHORIZED_TO_DELETE,
TOKEN_NULL, TRIED_TO_DELETE_LAST_ADMIN, TRIED_TO_REMOVE_LAST_OKR_CHAMPION
ATTRIBUTE_NULL,
ATTRIBUTE_CHANGED,
ATTRIBUTE_SET_FORBIDDEN,
ATTRIBUTE_NOT_SET,
ATTRIBUTE_CANNOT_CHANGE,
ATTRIBUTE_MUST_BE_DRAFT,
KEY_RESULT_CONVERSION,
ALREADY_EXISTS_SAME_NAME,
CONVERT_TOKEN,
DATA_HAS_BEEN_UPDATED,
MODEL_NULL,
MODEL_WITH_ID_NOT_FOUND,
NOT_AUTHORIZED_TO_READ,
NOT_AUTHORIZED_TO_WRITE,
NOT_AUTHORIZED_TO_DELETE,
TOKEN_NULL,
TRIED_TO_DELETE_LAST_ADMIN,
TRIED_TO_REMOVE_LAST_OKR_CHAMPION
}
3 changes: 1 addition & 2 deletions backend/src/main/java/ch/puzzle/okr/ForwardFilter.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package ch.puzzle.okr;

import java.io.IOException;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;

import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.filter.GenericFilterBean;
Expand Down
4 changes: 2 additions & 2 deletions backend/src/main/java/ch/puzzle/okr/OkrApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public class OkrApplication {
public static void main(String[] args) {

new SpringApplicationBuilder(OkrApplication.class) //
.initializers(new OkrApplicationContextInitializer()) //
.run(args);
.initializers(new OkrApplicationContextInitializer()) //
.run(args);
}
}
3 changes: 1 addition & 2 deletions backend/src/main/java/ch/puzzle/okr/OkrErrorAttributes.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package ch.puzzle.okr;

import ch.puzzle.okr.exception.OkrResponseStatusException;
import java.util.Map;
import org.springframework.boot.web.error.ErrorAttributeOptions;
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.WebRequest;

import java.util.Map;

@Component
public class OkrErrorAttributes extends DefaultErrorAttributes {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@ public class OpenAPI30Configuration {
public OpenAPI customizeOpenAPI() {
final String securitySchemeName = "bearerAuth";
return new OpenAPI().addSecurityItem(new SecurityRequirement().addList(securitySchemeName))
.components(new Components().addSecuritySchemes(securitySchemeName, new SecurityScheme()
.name(securitySchemeName).type(SecurityScheme.Type.HTTP).scheme("bearer").bearerFormat("JWT")));
.components(new Components().addSecuritySchemes(securitySchemeName,
new SecurityScheme().name(securitySchemeName)
.type(SecurityScheme.Type.HTTP)
.scheme("bearer")
.bearerFormat("JWT")));
}

}
77 changes: 39 additions & 38 deletions backend/src/main/java/ch/puzzle/okr/SecurityConfig.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package ch.puzzle.okr;

import static org.springframework.security.web.header.writers.CrossOriginEmbedderPolicyHeaderWriter.CrossOriginEmbedderPolicy.REQUIRE_CORP;
import static org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter.ReferrerPolicy.NO_REFERRER;
import static org.springframework.security.web.header.writers.XXssProtectionHeaderWriter.HeaderValue.ENABLED_MODE_BLOCK;

import com.nimbusds.jose.proc.SecurityContext;
import com.nimbusds.jwt.proc.ConfigurableJWTProcessor;
import com.nimbusds.jwt.proc.DefaultJWTProcessor;
Expand Down Expand Up @@ -33,10 +37,6 @@
import org.springframework.security.web.header.writers.CrossOriginResourcePolicyHeaderWriter;
import org.springframework.security.web.header.writers.StaticHeadersWriter;

import static org.springframework.security.web.header.writers.CrossOriginEmbedderPolicyHeaderWriter.CrossOriginEmbedderPolicy.REQUIRE_CORP;
import static org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter.ReferrerPolicy.NO_REFERRER;
import static org.springframework.security.web.header.writers.XXssProtectionHeaderWriter.HeaderValue.ENABLED_MODE_BLOCK;

@Configuration
@EnableWebSecurity
@EnableMethodSecurity
Expand All @@ -59,9 +59,10 @@ public SecurityFilterChain apiSecurityFilterChain(HttpSecurity http, @Value("${c
logger.debug("*** apiSecurityFilterChain reached");
setHeaders(http);
return http.cors(Customizer.withDefaults())
.authorizeHttpRequests(e -> e.requestMatchers("/api/**").authenticated().anyRequest().permitAll())
.exceptionHandling(e -> e.authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED)))
.oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults())).build();
.authorizeHttpRequests(e -> e.requestMatchers("/api/**").authenticated().anyRequest().permitAll())
.exceptionHandling(e -> e.authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED)))
.oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()))
.build();
}

@Bean
Expand All @@ -75,53 +76,53 @@ JWTProcessor<SecurityContext> jwtProcessor(JWTClaimsSetAwareJWSKeySelector<Secur
JwtDecoder jwtDecoder(JWTProcessor<SecurityContext> jwtProcessor, OAuth2TokenValidator<Jwt> jwtValidator) {
NimbusJwtDecoder decoder = new NimbusJwtDecoder(jwtProcessor);
OAuth2TokenValidator<Jwt> validator = new DelegatingOAuth2TokenValidator<>(JwtValidators.createDefault(),
jwtValidator);
jwtValidator);
decoder.setJwtValidator(validator);
return decoder;
}

private HttpSecurity setHeaders(HttpSecurity http) throws Exception {
return http
.headers(headers -> headers.contentSecurityPolicy(c -> c.policyDirectives(okrContentSecurityPolicy()))
.crossOriginEmbedderPolicy(c -> c.policy(REQUIRE_CORP))
.crossOriginOpenerPolicy(c -> c.policy(OPENER_SAME_ORIGIN))
.crossOriginResourcePolicy(c -> c.policy(RESOURCE_SAME_ORIGIN))
.addHeaderWriter(new StaticHeadersWriter("X-Permitted-Cross-Domain-Policies", "none"))
.frameOptions(HeadersConfigurer.FrameOptionsConfig::deny)
.xssProtection(c -> c.headerValue(ENABLED_MODE_BLOCK))
.httpStrictTransportSecurity(c -> c.includeSubDomains(true).maxAgeInSeconds(31536000))
.referrerPolicy(c -> c.policy(NO_REFERRER))
.permissionsPolicyHeader(c -> c.policy(okrPermissionPolicy())));
return http.headers(headers -> headers.contentSecurityPolicy(c -> c.policyDirectives(okrContentSecurityPolicy()))
.crossOriginEmbedderPolicy(c -> c.policy(REQUIRE_CORP))
.crossOriginOpenerPolicy(c -> c.policy(OPENER_SAME_ORIGIN))
.crossOriginResourcePolicy(c -> c.policy(RESOURCE_SAME_ORIGIN))
.addHeaderWriter(new StaticHeadersWriter("X-Permitted-Cross-Domain-Policies",
"none"))
.frameOptions(HeadersConfigurer.FrameOptionsConfig::deny)
.xssProtection(c -> c.headerValue(ENABLED_MODE_BLOCK))
.httpStrictTransportSecurity(c -> c.includeSubDomains(true)
.maxAgeInSeconds(31536000))
.referrerPolicy(c -> c.policy(NO_REFERRER))
.permissionsPolicyHeader(c -> c.policy(okrPermissionPolicy())));
}

private String okrContentSecurityPolicy() {
return "default-src 'self';" //
+ "script-src 'self' 'unsafe-inline';" //
+ " style-src 'self' 'unsafe-inline';" //
+ " object-src 'none';" //
+ " base-uri 'self';" //
+ " connect-src 'self' " + connectSrc + ";" //
+ " font-src 'self';" //
+ " frame-src 'self';" //
+ " img-src 'self' data: ;" //
+ " manifest-src 'self';" //
+ " media-src 'self';" //
+ " worker-src 'none';"; //
+ "script-src 'self' 'unsafe-inline';" //
+ " style-src 'self' 'unsafe-inline';" //
+ " object-src 'none';" //
+ " base-uri 'self';" //
+ " connect-src 'self' " + connectSrc + ";" //
+ " font-src 'self';" //
+ " frame-src 'self';" //
+ " img-src 'self' data: ;" //
+ " manifest-src 'self';" //
+ " media-src 'self';" //
+ " worker-src 'none';"; //
}

private String okrPermissionPolicy() {
return "accelerometer=(), ambient-light-sensor=(), autoplay=(), "
+ "battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), "
+ "execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(),"
+ " geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), "
+ "midi=(), navigation-override=(), payment=(), picture-in-picture=(),"
+ " publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(self), "
+ "usb=(), web-share=(), xr-spatial-tracking=()";
+ "battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), "
+ "execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(),"
+ " geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), "
+ "midi=(), navigation-override=(), payment=(), picture-in-picture=(),"
+ " publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(self), "
+ "usb=(), web-share=(), xr-spatial-tracking=()";
}

@Bean
public AuthenticationEventPublisher authenticationEventPublisher(
ApplicationEventPublisher applicationEventPublisher) {
public AuthenticationEventPublisher authenticationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
return new DefaultAuthenticationEventPublisher(applicationEventPublisher);
}

Expand Down
3 changes: 1 addition & 2 deletions backend/src/main/java/ch/puzzle/okr/UserKeyGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@

import ch.puzzle.okr.models.User;
import ch.puzzle.okr.multitenancy.TenantContext;
import org.springframework.cache.interceptor.KeyGenerator;

import java.lang.reflect.Method;
import java.text.MessageFormat;
import org.springframework.cache.interceptor.KeyGenerator;

public class UserKeyGenerator implements KeyGenerator {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("api/v2/action")
Expand All @@ -27,18 +26,18 @@ public ActionController(ActionAuthorizationService actionAuthorizationService, A
@Operation(summary = "Update Actions", description = "Update Actions of KeyResult")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Updated Actions of KeyResult", content = {
@Content(mediaType = "application/json", schema = @Schema(implementation = ActionDto.class)) }),
@ApiResponse(responseCode = "400", description = "Can't update Actions, attributes are not set", content = @Content) })
@Content(mediaType = "application/json", schema = @Schema(implementation = ActionDto.class))}),
@ApiResponse(responseCode = "400", description = "Can't update Actions, attributes are not set", content = @Content)})
@PutMapping
public void updateActions(
@io.swagger.v3.oas.annotations.parameters.RequestBody(description = "The Action as json to update existing Actions.", required = true) @RequestBody List<ActionDto> actionDtoList) {
public void updateActions(@io.swagger.v3.oas.annotations.parameters.RequestBody(description = "The Action as json to update existing Actions.", required = true)
@RequestBody List<ActionDto> actionDtoList) {
List<Action> actionList = actionMapper.toActions(actionDtoList);
actionAuthorizationService.updateEntities(actionList);
}

@Operation(summary = "Delete Action by Id", description = "Delete Action by Id")
@ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Deleted Action by Id"),
@ApiResponse(responseCode = "404", description = "Did not find the Action with requested id") })
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Deleted Action by Id"),
@ApiResponse(responseCode = "404", description = "Did not find the Action with requested id")})
@DeleteMapping("/{actionId}")
public void deleteActionById(@PathVariable long actionId) {
actionAuthorizationService.deleteActionByActionId(actionId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,38 +8,36 @@
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("api/v2/alignments")
public class AlignmentController {
private final AlignmentSelectionMapper alignmentSelectionMapper;
private final AlignmentSelectionBusinessService alignmentSelectionBusinessService;

public AlignmentController(AlignmentSelectionMapper alignmentSelectionMapper,
AlignmentSelectionBusinessService alignmentSelectionBusinessService) {
AlignmentSelectionBusinessService alignmentSelectionBusinessService) {
this.alignmentSelectionMapper = alignmentSelectionMapper;
this.alignmentSelectionBusinessService = alignmentSelectionBusinessService;
}

@Operation(summary = "Get all objectives and their key results to select the alignment", description = "Get a list of objectives with their key results to select the alignment")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Returned a list of objectives with their key results to select the alignment", content = {
@Content(mediaType = "application/json", schema = @Schema(implementation = AlignmentObjectiveDto.class)) }),
@ApiResponse(responseCode = "400", description = "Can't return list of objectives with their key results to select the alignment", content = @Content) })
@Content(mediaType = "application/json", schema = @Schema(implementation = AlignmentObjectiveDto.class))}),
@ApiResponse(responseCode = "400", description = "Can't return list of objectives with their key results to select the alignment", content = @Content)})
@GetMapping("/selections")
public ResponseEntity<List<AlignmentObjectiveDto>> getAlignmentSelections(
@RequestParam(required = false, defaultValue = "", name = "quarter") Long quarterFilter,
@RequestParam(required = false, defaultValue = "", name = "team") Long teamFilter) {
public ResponseEntity<List<AlignmentObjectiveDto>> getAlignmentSelections(@RequestParam(required = false, defaultValue = "", name = "quarter") Long quarterFilter,
@RequestParam(required = false, defaultValue = "", name = "team") Long teamFilter) {
return ResponseEntity.status(HttpStatus.OK)
.body(alignmentSelectionMapper.toDto(alignmentSelectionBusinessService
.getAlignmentSelectionByQuarterIdAndTeamIdNot(quarterFilter, teamFilter)));
.body(alignmentSelectionMapper.toDto(alignmentSelectionBusinessService.getAlignmentSelectionByQuarterIdAndTeamIdNot(quarterFilter,
teamFilter)));
}
}
Loading

0 comments on commit 22aaa9f

Please sign in to comment.