in teamcity-kubernetes-plugin-server/src/main/java/jetbrains/buildServer/clouds/kubernetes/web/KubeProfileEditController.java [59:94]
public KubeProfileEditController(@NotNull final SBuildServer server,
@NotNull final WebControllerManager web,
@NotNull final PluginDescriptor pluginDescriptor,
@NotNull final AgentPoolManager agentPoolManager,
@NotNull final KubeAuthStrategyProvider authStrategyProvider,
@NotNull final BuildAgentPodTemplateProviders podTemplateProviders,
@NotNull final KubernetesCredentialsFactory credentialsFactory,
@NotNull final AuthorizationInterceptor authInterceptor,
@NotNull final ProjectManager projectManager,
@NotNull final ProjectIdentifiersManager identifiersManager){
super(server);
myPluginDescriptor = pluginDescriptor;
myCredentialsFactory = credentialsFactory;
String path = pluginDescriptor.getPluginResourcesPath(EDIT_KUBE_HTML);
myAgentPoolManager = agentPoolManager;
myAuthStrategyProvider = authStrategyProvider;
myPodTemplateProviders = podTemplateProviders;
myIdentifiersManager = identifiersManager;
web.registerController(path, this);
authInterceptor.addPathBasedPermissionsChecker(path, new RequestPermissionsCheckerEx() {
@Override
public void checkPermissions(@NotNull SecurityContextEx securityContext, @NotNull HttpServletRequest request) {
if (!isTestConnection(request)) {
return;
}
final String projectId = request.getParameter("projectId");
final SProject project = projectManager.findProjectByExternalId(projectId);
if (project == null) {
throw new AccessDeniedException(securityContext.getAuthorityHolder(), String.format("No project with id '%s' found", projectId));
} else {
securityContext.getAccessChecker().checkCanEditProject(project);
}
}
});
}