diff --git a/pom.xml b/pom.xml index ab6e21b5ab7c9b5c51f28bba9de9b9fad23bc561..80b085177fa433d331332ae2d0eabe16cc040e82 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,12 @@ <version>3.16.1</version> <scope>test</scope> </dependency> + <!-- Aufrufbar unter http://localhost:8080/swagger-ui/index.html --> + <dependency> + <groupId>org.springdoc</groupId> + <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> + <version>2.2.0</version> + </dependency> </dependencies> <build> diff --git a/requests.http b/requests.http index d99dd79312bc02682966922e41b6a1a8b7d9c45c..e985f72afbcf011c9f1d1b621a74ac3f8b1e60ce 100644 --- a/requests.http +++ b/requests.http @@ -17,6 +17,17 @@ content-type: application/json "password": "myPassword123" } +### +POST http://localhost:8080/api/v1/auth/register +content-type: application/json + +{ + "email": "lb210@hdm-stuttgart.de", + "firstname": "Lara", + "lastname": "Blersch", + "password": "Lara123" +} + ### Authenticate POST http://localhost:8080/api/v1/auth/authenticate content-type: application/json diff --git a/src/main/java/hdm/mi/growbros/config/OpenApiConfig.java b/src/main/java/hdm/mi/growbros/config/OpenApiConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..162b32d345f1b8d78c76e4cd466491b179e41cc3 --- /dev/null +++ b/src/main/java/hdm/mi/growbros/config/OpenApiConfig.java @@ -0,0 +1,31 @@ +package hdm.mi.growbros.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Configuration +public class OpenApiConfig { + @Bean + public OpenAPI customizeOpenAPI() { + final String securitySchemeName = "bearerAuth"; + return new OpenAPI() + .info(new Info() + .description("GrowBros API documentation.") + .title("GrowBros") + .version("1.0")) + .addSecurityItem(new SecurityRequirement() + .addList(securitySchemeName)) + .components(new Components() + .addSecuritySchemes(securitySchemeName, new SecurityScheme() + .name(securitySchemeName) + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT"))); + } +} diff --git a/src/main/java/hdm/mi/growbros/security/SecurityConfiguration.java b/src/main/java/hdm/mi/growbros/security/SecurityConfiguration.java index 3adcd66aa873cc3abd4760e0322aa21bf6b379dd..cf9f52b64d6aa8c94715b5b182a441e331e356fb 100644 --- a/src/main/java/hdm/mi/growbros/security/SecurityConfiguration.java +++ b/src/main/java/hdm/mi/growbros/security/SecurityConfiguration.java @@ -13,7 +13,9 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher; import org.springframework.web.servlet.handler.HandlerMappingIntrospector; +import static hdm.mi.growbros.models.user.Role.ADMIN; import static org.springframework.boot.autoconfigure.security.servlet.PathRequest.toH2Console; +import static org.springframework.security.authorization.AuthorityAuthorizationManager.hasRole; /** * Configuration of the filter chain. @@ -36,6 +38,8 @@ public class SecurityConfiguration { authorize .requestMatchers(toH2Console()).permitAll() .requestMatchers(mvc.pattern("/api/v1/auth/**")).permitAll() + .requestMatchers(mvc.pattern("/swagger-ui/**")).permitAll() + .requestMatchers(mvc.pattern("/v3/api-docs/**")).permitAll() .anyRequest().authenticated() ) .headers(headers -> headers.frameOptions( @@ -56,4 +60,10 @@ public class SecurityConfiguration { //see https://stackoverflow.com/questions/76809698/spring-security-method-cannot-decide-pattern-is-mvc-or-not-spring-boot-applicati return new MvcRequestMatcher.Builder(introspector); } + + /*@Bean + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests().requestMatchers("/swagger-ui.html") + .access("hasRole('ROLE_ADMIN')"); + }*/ }