changeset 33:76233e3aceb7

auth settings reworked
author Evgeniy.Koshkin
date Mon, 12 Aug 2013 20:57:13 +0400
parents 2ae714d6faa5
children b983676b66f9
files server/resources/editSymbolsBuildFeatureParams.jsp server/resources/symbolServerSettings.jsp server/src/jetbrains/buildServer/symbols/IndexSymbolsBuildFeature.java server/src/jetbrains/buildServer/symbols/SymbolServerSettingsTab.java
diffstat 4 files changed, 35 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/server/resources/editSymbolsBuildFeatureParams.jsp	Mon Aug 12 16:28:03 2013 +0400
+++ b/server/resources/editSymbolsBuildFeatureParams.jsp	Mon Aug 12 20:57:13 2013 +0400
@@ -1,8 +1,6 @@
 <%@ include file="/include-internal.jsp"%>
 
 <jsp:useBean id="isGuestEnabled" scope="request" type="java.lang.Boolean"/>
-<jsp:useBean id="publicFeedUrl" scope="request" type="java.lang.String" />
-<jsp:useBean id="actualServerUrl" scope="request" type="java.lang.String" />
 
 <table class="runnerFormTable">
   <tr>
@@ -11,24 +9,10 @@
     </td>
   </tr>
   <tr>
-    <th>Symbol Server URL:</th>
+    <th>Sources Access:</th>
     <td>
-      <c:choose>
-        <c:when test="${not isGuestEnabled}">
-          <div>Not available.</div>
-            <span class="smallNote">
-              Guest user is disabled.
-            </span>
-            <span class="smallNote">
-              You need to enable guest user login in TeamCity <a href="<c:url value="/admin/admin.html?item=auth"/>">Authentication Settings</a> for Symbol Server to work.
-            </span>
-        </c:when>
-        <c:otherwise>
-          <c:set var="url"><c:url value="${actualServerUrl}${publicFeedUrl}"/></c:set>
-          <div><a href="${url}">${url}</a></div>
-          <span class="smallNote">Use this URL in Visual Studio and WinDbg settings.</span>
-        </c:otherwise>
-      </c:choose>
+      <props:checkboxProperty name="symbols.sources-authrequired"/>
+      <label for="symbols.sources-authrequired">Grand access to the sources to authenticated users only.</label>
     </td>
   </tr>
 </table>
\ No newline at end of file
--- a/server/resources/symbolServerSettings.jsp	Mon Aug 12 16:28:03 2013 +0400
+++ b/server/resources/symbolServerSettings.jsp	Mon Aug 12 20:57:13 2013 +0400
@@ -2,12 +2,26 @@
 
 <jsp:useBean id="pageUrl" type="java.lang.String" scope="request"/>
 <jsp:useBean id="isGuestEnabled" scope="request" type="java.lang.Boolean"/>
-<jsp:useBean id="publicFeedUrl" scope="request" type="java.lang.String" />
+<jsp:useBean id="publicUrl" scope="request" type="java.lang.String" />
+<jsp:useBean id="privateUrl" scope="request" type="java.lang.String" />
 <jsp:useBean id="actualServerUrl" scope="request" type="java.lang.String" />
 
 <table class="runnerFormTable">
   <tr>
-    <th>Symbol Server URL:</th>
+    <td colspan="2">
+      <em>Use this URL in Visual Studio and WinDbg settings.</em>
+    </td>
+  </tr>
+  <tr>
+    <th>Authenticated URL:</th>
+    <td>
+      <c:set var="url"><c:url value="${actualServerUrl}${privateUrl}"/></c:set>
+      <div><a href="${url}">${url}</a></div>
+      <span class="smallNote">Access to the url requires HTTP authentication</span>
+    </td>
+  </tr>
+  <tr>
+    <th>Public URL:</th>
     <td>
       <c:choose>
         <c:when test="${not isGuestEnabled}">
@@ -16,13 +30,13 @@
               Guest user is disabled.
             </span>
             <span class="smallNote">
-              You need to enable guest user login in TeamCity <a href="<c:url value="/admin/admin.html?item=auth"/>">Authentication Settings</a> for Symbol Server to work.
+              You need to enable guest user login in TeamCity <a href="<c:url value="/admin/admin.html?item=auth"/>">Authentication Settings</a> for public url to work.
             </span>
         </c:when>
         <c:otherwise>
-          <c:set var="url"><c:url value="${actualServerUrl}${publicFeedUrl}"/></c:set>
+          <c:set var="url"><c:url value="${actualServerUrl}${publicUrl}"/></c:set>
           <div><a href="${url}">${url}</a></div>
-          <span class="smallNote">Use this URL in Visual Studio and WinDbg settings.</span>
+          <span class="smallNote">No authentication is required.</span>
         </c:otherwise>
       </c:choose>
     </td>
--- a/server/src/jetbrains/buildServer/symbols/IndexSymbolsBuildFeature.java	Mon Aug 12 16:28:03 2013 +0400
+++ b/server/src/jetbrains/buildServer/symbols/IndexSymbolsBuildFeature.java	Mon Aug 12 20:57:13 2013 +0400
@@ -12,12 +12,15 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
 
 /**
  * @author Evgeniy.Koshkin
  */
 public class IndexSymbolsBuildFeature extends BuildFeature {
 
+  private static final String SOURCES_AUTH_REQUIRED_PARAM_NAME = "symbols.sources-authrequired";
+
   private String myEditParametersUrl;
 
   public IndexSymbolsBuildFeature(final PluginDescriptor pluginDescriptor, final WebControllerManager web, final ServerSettings serverSettings) {
@@ -60,4 +63,12 @@
   public String getEditParametersUrl() {
     return myEditParametersUrl;
   }
+
+  @NotNull
+  @Override
+  public String describeParameters(@NotNull Map<String, String> params) {
+    return Boolean.parseBoolean(params.get(SOURCES_AUTH_REQUIRED_PARAM_NAME))
+            ? "Access to the indexed sources requires HTTP authentication."
+            : "No authentication is required to retrieve indexed sources";
+  }
 }
--- a/server/src/jetbrains/buildServer/symbols/SymbolServerSettingsTab.java	Mon Aug 12 16:28:03 2013 +0400
+++ b/server/src/jetbrains/buildServer/symbols/SymbolServerSettingsTab.java	Mon Aug 12 20:57:13 2013 +0400
@@ -69,7 +69,8 @@
     super.fillModel(model, request);
     model.put("isGuestEnabled", myServerSettings.isGuestLoginAllowed());
     model.put("actualServerUrl", WebUtil.getRootUrl(request));
-    model.put("publicFeedUrl", WebUtil.GUEST_AUTH_PREFIX + SymbolsConstants.APP_SYMBOLS);
+    model.put("publicUrl", WebUtil.GUEST_AUTH_PREFIX + SymbolsConstants.APP_SYMBOLS);
+    model.put("privateUrl", WebUtil.HTTP_AUTH_PREFIX + SymbolsConstants.APP_SYMBOLS);
   }
 
   private boolean hasAccess() {