X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FOrganisation.java;h=633412c440fff98732c4fdfc11a0e9bfe2505cfa;hb=d4802b68c651a984f0b98a462ac1e7721aa50388;hp=fcd9b2a3b1a6003b24ba7131af8acb3d2c618168;hpb=5f0c781007ae0ddce24057654a0ab095bc2a2b5b;p=gigi.git diff --git a/src/org/cacert/gigi/dbObjects/Organisation.java b/src/org/cacert/gigi/dbObjects/Organisation.java index fcd9b2a3..633412c4 100644 --- a/src/org/cacert/gigi/dbObjects/Organisation.java +++ b/src/org/cacert/gigi/dbObjects/Organisation.java @@ -100,13 +100,20 @@ public class Organisation extends CertificateOwner { return null; } - public void addAdmin(User admin, User actor, boolean master) { - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO org_admin SET orgid=?, memid=?, creator=?, master=?"); - ps.setInt(1, getId()); - ps.setInt(2, admin.getId()); - ps.setInt(3, actor.getId()); - ps.setString(4, master ? "y" : "n"); - ps.execute(); + public synchronized void addAdmin(User admin, User actor, boolean master) { + GigiPreparedStatement ps1 = DatabaseConnection.getInstance().prepare("SELECT 1 FROM org_admin WHERE orgid=? AND memid=? AND deleted is null"); + ps1.setInt(1, getId()); + ps1.setInt(2, admin.getId()); + GigiResultSet result = ps1.executeQuery(); + if (result.next()) { + return; + } + GigiPreparedStatement ps2 = DatabaseConnection.getInstance().prepare("INSERT INTO org_admin SET orgid=?, memid=?, creator=?, master=?"); + ps2.setInt(1, getId()); + ps2.setInt(2, admin.getId()); + ps2.setInt(3, actor.getId()); + ps2.setString(4, master ? "y" : "n"); + ps2.execute(); } public void removeAdmin(User admin, User actor) {