]> WPIA git - gigi.git/commitdiff
Merge "upd: modified text displayed during certificate creation process"
authorFelix Dörre <felix@dogcraft.de>
Wed, 14 Sep 2016 19:44:56 +0000 (21:44 +0200)
committerGerrit Code Review <gigi-system@dogcraft.de>
Wed, 14 Sep 2016 19:44:56 +0000 (21:44 +0200)
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 7a99bfc653587e28573851712508db5469c846e6..703bd98a5f3d16af6abf0a33c5a06790e9b4b35e 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);