X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FEmailAddress.java;h=756785393a0acbccb64413baf0ca999b584ffca2;hb=a1618d1;hp=d92338ca9899f0dc8e126159e005e26863cd0b88;hpb=bc51ef4b743b32a7cd3f917a65a2884155b589bb;p=gigi.git diff --git a/src/org/cacert/gigi/dbObjects/EmailAddress.java b/src/org/cacert/gigi/dbObjects/EmailAddress.java index d92338ca..75678539 100644 --- a/src/org/cacert/gigi/dbObjects/EmailAddress.java +++ b/src/org/cacert/gigi/dbObjects/EmailAddress.java @@ -1,11 +1,9 @@ package org.cacert.gigi.dbObjects; import java.io.IOException; -import java.util.Arrays; import java.util.Date; -import java.util.HashMap; +import java.util.LinkedList; import java.util.Locale; -import java.util.Map; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.database.GigiPreparedStatement; @@ -13,7 +11,6 @@ import org.cacert.gigi.database.GigiResultSet; import org.cacert.gigi.email.EmailProvider; import org.cacert.gigi.email.MailProbe; import org.cacert.gigi.localisation.Language; -import org.cacert.gigi.output.template.Scope; import org.cacert.gigi.output.template.SprintfCommand; import org.cacert.gigi.util.RandomToken; @@ -42,7 +39,8 @@ public class EmailAddress implements IdCachable, Verifyable { } public EmailAddress(User owner, String address, Locale mailLocale) throws GigiApiException { - if ( !EmailProvider.MAIL.matcher(address).matches()) { + address = address.toLowerCase(); + if ( !EmailProvider.isValidMailAddress(address)) { throw new IllegalArgumentException("Invalid email."); } this.address = address; @@ -137,9 +135,7 @@ public class EmailAddress implements IdCachable, Verifyable { Date lastExecution = getLastPing(false); if (lastExecution != null && lastExecution.getTime() + REPING_MINIMUM_DELAY >= System.currentTimeMillis()) { - Map data = new HashMap(); - data.put("data", new Date(lastExecution.getTime() + REPING_MINIMUM_DELAY)); - throw new GigiApiException(new Scope(new SprintfCommand("Reping is only allowed after 5 minutes, yours end at {0}.", Arrays.asList("${data}")), data)); + throw new GigiApiException(SprintfCommand.createSimple("Reping is only allowed after {0} minutes, yours end at {1}.", REPING_MINIMUM_DELAY / 60 / 1000, new Date(lastExecution.getTime() + REPING_MINIMUM_DELAY))); } ping(l); return; @@ -154,4 +150,20 @@ public class EmailAddress implements IdCachable, Verifyable { } return em; } + + public User getOwner() { + return owner; + } + + public static EmailAddress[] findByAllEmail(String mail) { + LinkedList results = new LinkedList(); + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT `emails`.`id` FROM `emails` INNER JOIN `users` ON `users`.`id` = `emails`.`memid` INNER JOIN `certOwners` ON `certOwners`.`id` = `users`.`id` WHERE `emails`.`email` LIKE ? AND `emails`.`deleted` IS NULL AND `certOwners`.`deleted` IS NULL ORDER BY `users`.`id`, `emails`.`email` LIMIT 100")) { + ps.setString(1, mail); + GigiResultSet rs = ps.executeQuery(); + while (rs.next()) { + results.add(EmailAddress.getById(rs.getInt(1))); + } + return results.toArray(new EmailAddress[results.size()]); + } + } }