in commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/PublisherSettingsController.java [81:151]
protected ModelAndView doHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) throws Exception {
SUser user = SessionUser.getUser(request);
if (user == null)
return null;
String buildTypeId = request.getParameter("id");
if (buildTypeId != null) {
BuildTypeIdentity buildTypeOrTemplate;
try {
buildTypeOrTemplate = getBuildTypeOrTemplate(buildTypeId);
} catch (PublisherException e) {
LOG.warn(String.format(ILLEGAL_ACCESS_WARNING, user.getUsername(), buildTypeId));
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return null;
}
if (!user.isPermissionGrantedForProject(buildTypeOrTemplate.getProject().getProjectId(), Permission.EDIT_PROJECT)) {
LOG.warn(String.format(ILLEGAL_ACCESS_WARNING, user.getUsername(), buildTypeId));
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return null;
}
}
String publisherId = request.getParameter(Constants.PUBLISHER_ID_PARAM);
if (publisherId == null)
return null;
String projectId = request.getParameter("projectId");
SProject project = myProjectManager.findProjectByExternalId(projectId);
if (project != null) {
if (!user.isPermissionGrantedForProject(project.getProjectId(), Permission.VIEW_PROJECT)) {
LOG.warn(String.format(ILLEGAL_PROJECT_ACCESS_WARNING, user.getUsername(), buildTypeId));
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return null;
}
request.setAttribute("projectId", project.getExternalId());
request.setAttribute("project", project);
}
CommitStatusPublisherSettings settings = myPublisherManager.findSettings(publisherId);
if (settings == null)
return null;
String settingsUrl = settings.getEditSettingsUrl();
Map<String, String> params = settings.getDefaultParameters() != null ? settings.getDefaultParameters() : Collections.emptyMap();
if (Constants.TEST_CONNECTION_YES.equals(request.getParameter(Constants.TEST_CONNECTION_PARAM))) {
processTestConnectionRequest(request, response, settings, params);
return null;
}
if (project != null) {
settings.getSpecificAttributes(project, Collections.emptyMap()).forEach((k, v) -> request.setAttribute(k, v));
}
request.setAttribute("propertiesBean", new BasePropertiesBean(params));
request.setAttribute("currentUser", SessionUser.getUser(request));
request.setAttribute("testConnectionSupported", settings.isTestConnectionSupported());
if (project != null && user != null) {
List<OAuthConnectionDescriptor> oauthConnections = settings.getOAuthConnections(project, user);
request.setAttribute("oauthConnections", oauthConnections);
request.setAttribute("refreshTokenSupported", oauthConnections.stream().anyMatch(c -> c.getOauthProvider().isTokenRefreshSupported()));
request.setAttribute("canEditProject", AuthUtil.hasPermissionToManageProject(mySecurityContext.getAuthorityHolder(), project.getProjectId()));
}
if (settingsUrl != null) {
return new ModelAndView(settingsUrl);
}
return null;
}