X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2FdbObjects%2FEmailAddress.java;h=935877a6d7a594e89955b0c46458130f9a782863;hp=f8629d946bc85bc396947d2c360a2314704babde;hb=00ae4dde24b2b284ed8dbe085a5b42c9ceeb32d1;hpb=b67f4dbc8bdda82af3012e34c48e970ec6b4a700 diff --git a/src/club/wpia/gigi/dbObjects/EmailAddress.java b/src/club/wpia/gigi/dbObjects/EmailAddress.java index f8629d94..935877a6 100644 --- a/src/club/wpia/gigi/dbObjects/EmailAddress.java +++ b/src/club/wpia/gigi/dbObjects/EmailAddress.java @@ -62,6 +62,11 @@ public class EmailAddress implements IdCachable, Verifyable { throw new GigiApiException("The email address is already known to the system."); } } + + if (isOrgMailAddress()) { + throw new GigiApiException("The entered email address belongs to a registered organisation. Please contact the organisation to issue certificates for this email address."); + } + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `emails` SET memid=?, email=?")) { ps.setInt(1, owner.getId()); ps.setString(2, address); @@ -181,4 +186,14 @@ public class EmailAddress implements IdCachable, Verifyable { return results.toArray(new EmailAddress[results.size()]); } } + + public boolean isOrgMailAddress() { + String[] parts = address.split("@"); + + try (GigiPreparedStatement statmt = new GigiPreparedStatement("SELECT 1 FROM `domains` AS d, `organisations` AS o WHERE d.`domain` = ? AND d.`deleted` IS NULL AND d.`memid` = o.`id`")) { + statmt.setString(1, parts[parts.length - 1]); + GigiResultSet e = statmt.executeQuery(); + return e.next(); + } + } }