From 3395fce1b4cf2ad4a01536f6aeabd59951ccee08 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Mon, 27 Oct 2014 22:26:51 +0100 Subject: [PATCH] ADD: Organisation selection in certificateIssueForm --- src/org/cacert/gigi/dbObjects/User.java | 14 +++++++++++++ .../account/certs/CertificateIssueForm.java | 20 +++++++++++++++++++ .../account/certs/CertificateIssueForm.templ | 13 ++++++++++++ 3 files changed, 47 insertions(+) diff --git a/src/org/cacert/gigi/dbObjects/User.java b/src/org/cacert/gigi/dbObjects/User.java index 57a9ee2c..cf9c40b9 100644 --- a/src/org/cacert/gigi/dbObjects/User.java +++ b/src/org/cacert/gigi/dbObjects/User.java @@ -1,9 +1,11 @@ package org.cacert.gigi.dbObjects; import java.sql.Date; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Locale; import java.util.Set; @@ -411,6 +413,18 @@ public class User extends CertificateOwner { ps.execute(); } + public List getOrganisations() { + List orgas = new ArrayList<>(); + GigiPreparedStatement query = DatabaseConnection.getInstance().prepare("SELECT orgid FROM org_admin WHERE `memid`=? AND deleted is NULL"); + query.setInt(1, getId()); + GigiResultSet res = query.executeQuery(); + + while (res.next()) { + orgas.add(Organisation.getById(res.getInt(1))); + } + return orgas; + } + public static synchronized User getById(int id) { CertificateOwner co = CertificateOwner.getById(id); if (co instanceof User) { diff --git a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java index 153a5ce0..2df486c1 100644 --- a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java +++ b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java @@ -9,7 +9,9 @@ import java.security.interfaces.ECPublicKey; import java.security.interfaces.RSAPublicKey; import java.util.Base64; import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; @@ -24,6 +26,7 @@ import org.cacert.gigi.dbObjects.Certificate.SANType; import org.cacert.gigi.dbObjects.Certificate.SubjectAlternateName; import org.cacert.gigi.dbObjects.CertificateProfile; import org.cacert.gigi.dbObjects.Digest; +import org.cacert.gigi.dbObjects.Organisation; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.CertificateValiditySelector; @@ -440,6 +443,23 @@ public class CertificateIssueForm extends Form { return true; } }); + final List orgs = u.getOrganisations(); + vars2.put("orga", orgs.size() == 0 ? null : new IterableDataset() { + + Iterator iter = orgs.iterator(); + + @Override + public boolean next(Language l, Map vars) { + if ( !iter.hasNext()) { + return false; + } + Organisation orga = iter.next(); + vars.put("key", orga.getId()); + vars.put("name", orga.getName()); + return true; + } + }); + t.output(out, l, vars2); } } diff --git a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ index ea23e332..a9971f8d 100644 --- a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ +++ b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ @@ -24,6 +24,19 @@ + + + + + + + + -- 2.39.2