in src/com/intellij/idea/plugin/hybris/tools/remote/http/AbstractHybrisHacHttpClient.java [99:139]
public String login(@NotNull final Project project, @NotNull final RemoteConnectionSettings settings) {
final var hostHacURL = settings.getGeneratedURL();
retrieveCookies(hostHacURL, project, settings);
final var sessionId = Optional.ofNullable(cookiesPerSettings.get(settings))
.map(it -> it.get(COOKIE_JSESSIONID))
.orElse(null);
if (sessionId == null) {
return "Unable to obtain sessionId for " + hostHacURL;
}
final var csrfToken = getCsrfToken(hostHacURL, settings);
final var params = List.of(
new BasicNameValuePair("j_username", settings.getUsername()),
new BasicNameValuePair("j_password", settings.getPassword()),
new BasicNameValuePair("_csrf", csrfToken)
);
final var loginURL = hostHacURL + "/j_spring_security_check";
final HttpResponse response = post(project, loginURL, params, false, DEFAULT_HAC_TIMEOUT, settings);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY) {
final Header location = response.getFirstHeader("Location");
if (location != null && location.getValue().contains("login_error")) {
return "Wrong username/password. Set your credentials in [y] tool window.";
}
}
final var newSessionId = CookieParser.getInstance().getSpecialCookie(response.getAllHeaders());
if (newSessionId != null) {
Optional.ofNullable(cookiesPerSettings.get(settings))
.ifPresent(cookies -> cookies.put(COOKIE_JSESSIONID, newSessionId));
return StringUtils.EMPTY;
}
final int statusCode = response.getStatusLine().getStatusCode();
final StringBuilder sb = new StringBuilder();
sb.append("HTTP ");
sb.append(statusCode);
sb.append(' ');
switch (statusCode) {
case HTTP_OK -> sb.append("Unable to obtain sessionId from response");
case HTTP_MOVED_TEMP -> sb.append(response.getFirstHeader("Location"));
default -> sb.append(response.getStatusLine().getReasonPhrase());
}
return sb.toString();
}