|
35 | 35 | import io.swagger.v3.oas.models.parameters.RequestBody;
|
36 | 36 | import io.swagger.v3.oas.models.responses.ApiResponse;
|
37 | 37 | import io.swagger.v3.oas.models.responses.ApiResponses;
|
| 38 | +import org.apache.commons.lang3.reflect.FieldUtils; |
38 | 39 | import org.slf4j.Logger;
|
39 | 40 | import org.slf4j.LoggerFactory;
|
40 | 41 | import org.springdoc.core.SpringDocConfiguration;
|
|
56 | 57 | import org.springframework.security.web.SecurityFilterChain;
|
57 | 58 | import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
|
58 | 59 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
| 60 | +import org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter; |
59 | 61 | import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
|
60 | 62 | import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
61 | 63 |
|
@@ -132,13 +134,31 @@ OpenApiCustomiser springSecurityLoginEndpointCustomiser(ApplicationContext appli
|
132 | 134 | .filter(UsernamePasswordAuthenticationFilter.class::isInstance)
|
133 | 135 | .map(UsernamePasswordAuthenticationFilter.class::cast)
|
134 | 136 | .findAny();
|
| 137 | + Optional<DefaultLoginPageGeneratingFilter> optionalDefaultLoginPageGeneratingFilter = |
| 138 | + filterChain.getFilters().stream() |
| 139 | + .filter(DefaultLoginPageGeneratingFilter.class::isInstance) |
| 140 | + .map(DefaultLoginPageGeneratingFilter.class::cast) |
| 141 | + .findAny(); |
135 | 142 | if (optionalFilter.isPresent()) {
|
136 | 143 | UsernamePasswordAuthenticationFilter usernamePasswordAuthenticationFilter = optionalFilter.get();
|
137 | 144 | Operation operation = new Operation();
|
138 | 145 | Schema<?> schema = new ObjectSchema()
|
139 | 146 | .addProperty(usernamePasswordAuthenticationFilter.getUsernameParameter(), new StringSchema())
|
140 | 147 | .addProperty(usernamePasswordAuthenticationFilter.getPasswordParameter(), new StringSchema());
|
141 |
| - RequestBody requestBody = new RequestBody().content(new Content().addMediaType(org.springframework.http.MediaType.APPLICATION_JSON_VALUE, new MediaType().schema(schema))); |
| 148 | + String mediaType = org.springframework.http.MediaType.APPLICATION_JSON_VALUE; |
| 149 | + if(optionalDefaultLoginPageGeneratingFilter.isPresent()){ |
| 150 | + DefaultLoginPageGeneratingFilter defaultLoginPageGeneratingFilter = optionalDefaultLoginPageGeneratingFilter.get(); |
| 151 | + Field formLoginEnabledField = FieldUtils.getDeclaredField(DefaultLoginPageGeneratingFilter.class, "formLoginEnabled", true); |
| 152 | + try { |
| 153 | + boolean formLoginEnabled = (boolean) formLoginEnabledField.get(defaultLoginPageGeneratingFilter); |
| 154 | + if(formLoginEnabled) |
| 155 | + mediaType = org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED_VALUE; |
| 156 | + } |
| 157 | + catch (IllegalAccessException e) { |
| 158 | + LOGGER.warn(e.getMessage()); |
| 159 | + } |
| 160 | + } |
| 161 | + RequestBody requestBody = new RequestBody().content(new Content().addMediaType(mediaType, new MediaType().schema(schema))); |
142 | 162 | operation.requestBody(requestBody);
|
143 | 163 | ApiResponses apiResponses = new ApiResponses();
|
144 | 164 | apiResponses.addApiResponse(String.valueOf(HttpStatus.OK.value()), new ApiResponse().description(HttpStatus.OK.getReasonPhrase()));
|
|
0 commit comments