Skip to content

Commit 1ef62f5

Browse files
authored
Make Secret Token updates work when CSP is enforced (#1840)
* Make Secret Token updates work when CSP is enforced * Update to released Jenkins 2.540 * Do not use undocumented feature of validateButton --------- Co-authored-by: Daniel Beck <[email protected]>
1 parent b5bfe29 commit 1ef62f5

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

src/main/java/com/dabsquared/gitlabjenkins/GitLabPushTrigger.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666
import org.kohsuke.stapler.QueryParameter;
6767
import org.kohsuke.stapler.Stapler;
6868
import org.kohsuke.stapler.StaplerRequest2;
69-
import org.kohsuke.stapler.StaplerResponse2;
7069

7170
/**
7271
* Triggers a build when we receive a GitLab WebHook.
@@ -744,17 +743,5 @@ public FormValidation doCheckExcludeMergeRequestLabels(
744743
@AncestorInPath final Job<?, ?> project, @QueryParameter final String value) {
745744
return ProjectLabelsProvider.instance().doCheckLabels(project, value);
746745
}
747-
748-
public void doGenerateSecretToken(@AncestorInPath final Job<?, ?> project, StaplerResponse2 response) {
749-
byte[] random = new byte[16]; // 16x8=128bit worth of randomness, since we use md5 digest as the API token
750-
RANDOM.nextBytes(random);
751-
String secretToken = Util.toHexString(random);
752-
response.setHeader("script", "document.getElementById('secretToken').value='" + secretToken + "'");
753-
}
754-
755-
public void doClearSecretToken(@AncestorInPath final Job<?, ?> project, StaplerResponse2 response) {
756-
;
757-
response.setHeader("script", "document.getElementById('secretToken').value=''");
758-
}
759746
}
760747
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Behaviour.specify("BUTTON.gitlab_plugin-generate", "gitlab_plugin-generate", 0, function (e) {
2+
e.onclick = function (evt) {
3+
document.getElementById('gitlab_plugin_secretToken').value = [...Array(32)].map(() => Math.floor(Math.random() * 16).toString(16)).join('');
4+
evt.preventDefault();
5+
};
6+
});
7+
8+
Behaviour.specify("BUTTON.gitlab_plugin-clear", "gitlab_plugin-clear", 0, function (e) {
9+
e.onclick = function (evt) {
10+
document.getElementById('gitlab_plugin_secretToken').value = "";
11+
evt.preventDefault();
12+
};
13+
});

src/main/resources/com/dabsquared/gitlabjenkins/GitLabPushTrigger/config.jelly

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?jelly escape-by-default='true'?>
22
<j:jelly xmlns:j="jelly:core"
33
xmlns:f="/lib/form"
4-
xmlns:d="jelly:define">
4+
xmlns:st="jelly:stapler">
55
<f:entry title="Enabled GitLab triggers">
66
<div>
77
<f:entry title="Push Events" field="triggerOnPush">
@@ -102,11 +102,10 @@
102102
</div>
103103
</f:entry>
104104
<f:entry title="${%Secret token}" help="/plugin/gitlab-plugin/help/help-secretToken.html">
105-
<div>
106-
<f:readOnlyTextbox field="secretToken" id="secretToken"/>
107-
<f:validateButton title="${%Generate}" method="generateSecretToken"/>
108-
<f:validateButton title="${%Clear}" method="clearSecretToken"/>
109-
</div>
105+
<st:adjunct includes="com.dabsquared.gitlabjenkins.GitLabPushTrigger.adjunct"/>
106+
<f:readOnlyTextbox field="secretToken" id="gitlab_plugin_secretToken"/>
107+
<button class="jenkins-button gitlab_plugin-generate jenkins-!-margin-right-1 jenkins-!-margin-top-1">${%Generate}</button>
108+
<button class="jenkins-button gitlab_plugin-clear jenkins-!-margin-top-1">${%Clear}</button>
110109
</f:entry>
111110
</f:advanced>
112111
</j:jelly>

0 commit comments

Comments
 (0)