X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FUser.java;h=61f347a4e90b380e70802d9871641da1ead0161f;hp=18b50f5df5245bc4ec142d8cd16e0f0bfef328fe;hb=dff3996afcd54cde9dfed259a9a24ceecaa78e7a;hpb=fd3cf9cdbd563e2fdcd5210b97e1cc612ce8d02e diff --git a/src/org/cacert/gigi/dbObjects/User.java b/src/org/cacert/gigi/dbObjects/User.java index 18b50f5d..61f347a4 100644 --- a/src/org/cacert/gigi/dbObjects/User.java +++ b/src/org/cacert/gigi/dbObjects/User.java @@ -43,13 +43,15 @@ public class User extends CertificateOwner { public static final int MINIMUM_AGE = 16; + public static final int MAXIMUM_PLAUSIBLE_AGE = 120; + public static final int POJAM_AGE = 14; public static final int ADULT_AGE = 18; public static final boolean POJAM_ENABLED = false; - public static final int EXPERIENCE_POINTS = 2; + public static final int EXPERIENCE_POINTS = 4; /** * Time in months a verification is considered "recent". @@ -136,6 +138,14 @@ public class User extends CertificateOwner { if (getReceivedAssurances().length != 0) { throw new GigiApiException("No change after assurance allowed."); } + + if ( !CalendarUtil.isOfAge(dob, User.MINIMUM_AGE)) { + throw new GigiApiException("Entered date of birth is below the restricted age requirements."); + } + + if (CalendarUtil.isOfAge(dob, User.MAXIMUM_PLAUSIBLE_AGE)) { + throw new GigiApiException("Entered date of birth exceeds the maximum age set in our policies. Please check your DoB is correct and contact support if the issue persists."); + } this.dob = dob; rawUpdateUserData(); } @@ -247,6 +257,7 @@ public class User extends CertificateOwner { * * @return the maximal points @ */ + @SuppressWarnings("unused") public int getMaxAssurePoints() { if ( !CalendarUtil.isOfAge(dob, ADULT_AGE) && POJAM_ENABLED) { return 10; // PoJAM @@ -323,7 +334,7 @@ public class User extends CertificateOwner { public synchronized Assurance[] getReceivedAssurances() { if (receivedAssurances == null) { - try (GigiPreparedStatement query = new GigiPreparedStatement("SELECT * FROM `notary` INNER JOIN `names` ON `names`.`id` = `notary`.`to` WHERE `names`.`uid`=? AND `notary`.`deleted` IS NULL")) { + try (GigiPreparedStatement query = new GigiPreparedStatement("SELECT * FROM `notary` INNER JOIN `names` ON `names`.`id` = `notary`.`to` WHERE `names`.`uid`=? AND `notary`.`deleted` IS NULL ORDER BY `when` DESC")) { query.setInt(1, getId()); GigiResultSet res = query.executeQuery(); @@ -342,7 +353,7 @@ public class User extends CertificateOwner { public synchronized Assurance[] getMadeAssurances() { if (madeAssurances == null) { - try (GigiPreparedStatement query = new GigiPreparedStatement("SELECT * FROM notary WHERE `from`=? AND deleted is NULL")) { + try (GigiPreparedStatement query = new GigiPreparedStatement("SELECT * FROM notary WHERE `from`=? AND deleted is NULL ORDER BY `when` DESC")) { query.setInt(1, getId()); try (GigiResultSet res = query.executeQuery()) { @@ -385,7 +396,7 @@ public class User extends CertificateOwner { } - public Name getPreferredName() { + public synchronized Name getPreferredName() { return preferredName; }