]> WPIA git - gigi.git/commitdiff
add: js-managed default values for certificate-issue-form
authorFelix Dörre <felix@dogcraft.de>
Sat, 10 Sep 2016 14:18:48 +0000 (16:18 +0200)
committerFelix Dörre <felix@dogcraft.de>
Wed, 14 Sep 2016 19:31:05 +0000 (21:31 +0200)
Change-Id: I73713d708f5fdbd505f408b6b19a7a0f7fab813b

src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java
src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ
static/static/css/main.css
static/static/js/expert.js

index 0a29fb2d7506e8037750e455426485508048b564..8b9272cc887610ec4bb60d786481010bc28484cc 100644 (file)
@@ -13,7 +13,9 @@ import org.cacert.gigi.dbObjects.Certificate;
 import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
 import org.cacert.gigi.dbObjects.Certificate.SubjectAlternateName;
 import org.cacert.gigi.dbObjects.CertificateProfile;
+import org.cacert.gigi.dbObjects.Domain;
 import org.cacert.gigi.dbObjects.Organisation;
+import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.CertificateValiditySelector;
 import org.cacert.gigi.output.HashAlgorithms;
@@ -144,7 +146,16 @@ public class CertificateIssueForm extends Form {
             content.append(SAN.getName());
             content.append('\n');
         }
-
+        vars2.put("placeholderName", CertificateRequest.DEFAULT_CN);
+        if (c.getTarget() instanceof User) {
+            User target = (User) c.getTarget();
+            vars2.put("defaultName", target.getPreferredName().toString());
+            vars2.put("defaultEmail", target.getEmail());
+            Domain[] domains = target.getDomains();
+            if (domains.length > 0) {
+                vars2.put("defaultDomain", domains[0].getSuffix());
+            }
+        }
         vars2.put("CN", cr.getName());
         if (c.getTarget() instanceof Organisation) {
             vars2.put("orga", "true");
index e9947a970569f7b36c19bed74b1b5472537e566d..47f82349bddd7e88adf4da7a35897c4a114c7e86 100644 (file)
@@ -4,7 +4,14 @@
 <p><?=_CAcert Inc.'s public certification services are governed by a CPS as amended from time to time which is incorporated into this Agreement by reference. The Subscriber will use the SSL Server Certificate in accordance with SomeCA Inc.'s CPS and supporting documentation published at?> <a href="http://www.cacert.org/cps.php">http://www.cacert.org/cps.php</a></p>
 
 <p><?=_If the Subscriber's name and/or domain name registration change the subscriber will immediately inform SomeCA Inc. who shall revoke the digital certificate. When the Digital Certificate expires or is revoked the company will permanently remove the certificate from the server on which it is installed and will not use it for any purpose thereafter. The person responsible for key management and security is fully authorized to install and utilize the certificate to represent this organization's electronic presence.?></p>
-
+<span id="placeholderName" class="js-hint"><?=$placeholderName?></span>
+<? if($defaultName) { ?>
+<span id="defaultName" class="js-hint"><?=$defaultName?></span>
+<span id="defaultEmail" class="js-hint"><?=$defaultEmail?></span>
+<? } ?>
+<? if($defaultDomain) { ?>
+<span id="defaultDomain" class="js-hint"><?=$defaultDomain?></span>
+<? } ?>
 <table class="table">
   <thead>
   <tr>
index f8cd07292df2975ae34f499ffa3a918169f4739d..7bb2ee87b38c4caeb138b8ab1b6530548bd0218d 100644 (file)
@@ -23,3 +23,6 @@ div.error-msgs p{
 .summary-table td{
     padding: 0 3px;
 }
+.js-hint {
+    display: none;
+}
\ No newline at end of file
index 731dddde58f991e28868b2ec48e016fe4ab21384..9c623e7321ad95e530f496dd7bf739eef6a20fb4 100644 (file)
            }
          }
        }
+       function initCertForm() {
+               if(document.getElementById("placeholderName") == null) {
+                       return;
+               }
+               function getHint(id){
+                       var elem = document.getElementById(id);
+                       if(elem === null) {
+                               return null;
+                       }
+                       return $(elem).text();
+               }
+               $("select[name=profile]").off("change");
+               $("textarea[name=SANs]").off("keydown");
+               $("textarea[name=SANs]").get(0).modified=false;
+               $("input[name=CN]").off("keydown");
+               $("input[name=CN]").get(0).modified=false;
+
+               var placeholderName = getHint("placeholderName");
+               var defaultName = getHint("defaultName");
+               var defaultEmail = getHint("defaultEmail");
+               var defaultDomain = getHint("defaultDomain");
+               if(defaultName === null) {
+                       return;
+               }
+               $("textarea[name=SANs]").on("keydown", function(){
+                       this.modified = this.value !== "";
+               });
+               $("input[name=CN]").on("keydown", function(){
+                       this.modified = this.value !== "";
+               });
+
+               var loginCheck = document.getElementById("login");
+               $("select[name=profile]").change(function(){
+                       var val = this.value;
+                       var sans = $("textarea[name=SANs]").get(0);
+                       if(val.match(/client.*/)) {
+                               loginCheck.checked = true;
+                               loginCheck.disabled = false;
+                       } else {
+                               loginCheck.checked = false;
+                               loginCheck.disabled = true;
+                       }
+                       if(val.match(/client.*|mail.*/)) {
+                               if(!sans.modified) {
+                                       sans.value = "email:"+defaultEmail;
+                               }
+                       } else if(val.match(/server.*/)) {
+                               if(!sans.modified) {
+                                       sans.value = defaultDomain === null ? "" : "dns:" + defaultDomain;
+                               }
+                       }
+                       var cn = $("input[name=CN]").get(0);
+                       if(val.match(/.*-a/)) {
+                               if(!cn.modified) {
+                                       cn.value = defaultName;
+                               }
+                       }else{
+                               if(!cn.modified) {
+                                       cn.value = placeholderName;
+                               }
+                       }
+               });
+               var children = $("select[name=profile]").get(0).children;
+               var target = "client-mail";
+               for(var i=0; i < children.length; i++){
+                       if(children[i].value == "client-mail-a"){
+                               target = "client-mail-a";
+                       }
+               }
+
+               $("select[name=profile]").get(0).value = target;
+               $("select[name=profile]").trigger("change");
+
+       }
        function init(){
                showExpert(false);
+               initCertForm();
                var expert = document.getElementById("expertbox");
                if(expert !== null) {
                        expert.onchange = (function(expert){return function(){showExpert(expert.checked)}})(expert);