X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FUser.java;h=61f347a4e90b380e70802d9871641da1ead0161f;hp=91ab46cbe8b3c70aa081208ad0b75c4abe683199;hb=dff3996afcd54cde9dfed259a9a24ceecaa78e7a;hpb=9def69bd08ea69eb27786d5b34f00e154e09e9f3 diff --git a/src/org/cacert/gigi/dbObjects/User.java b/src/org/cacert/gigi/dbObjects/User.java index 91ab46cb..61f347a4 100644 --- a/src/org/cacert/gigi/dbObjects/User.java +++ b/src/org/cacert/gigi/dbObjects/User.java @@ -21,6 +21,7 @@ import org.cacert.gigi.util.DayDate; import org.cacert.gigi.util.Notary; import org.cacert.gigi.util.PasswordHash; import org.cacert.gigi.util.PasswordStrengthChecker; +import org.cacert.gigi.util.TimeConditions; /** * Represents an acting, assurable, user. Synchronizing on user means: no @@ -42,16 +43,20 @@ 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 = 4; + /** * Time in months a verification is considered "recent". */ - public static final int VERIFICATION_MONTHS = 39; + public static final int VERIFICATION_MONTHS = TimeConditions.getInstance().getVerificationMonths(); private Name preferredName; @@ -133,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(); } @@ -231,7 +244,7 @@ public class User extends CertificateOwner { int points = 0; if (rs.next()) { - points = rs.getInt(1) * 2; + points = rs.getInt(1) * EXPERIENCE_POINTS; } return points; @@ -244,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 @@ -252,19 +266,19 @@ public class User extends CertificateOwner { int exp = getExperiencePoints(); int points = 10; - if (exp >= 10) { + if (exp >= 5 * EXPERIENCE_POINTS) { points += 5; } - if (exp >= 20) { + if (exp >= 10 * EXPERIENCE_POINTS) { points += 5; } - if (exp >= 30) { + if (exp >= 15 * EXPERIENCE_POINTS) { points += 5; } - if (exp >= 40) { + if (exp >= 20 * EXPERIENCE_POINTS) { points += 5; } - if (exp >= 50) { + if (exp >= 25 * EXPERIENCE_POINTS) { points += 5; } @@ -320,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(); @@ -339,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()) { @@ -382,7 +396,7 @@ public class User extends CertificateOwner { } - public Name getPreferredName() { + public synchronized Name getPreferredName() { return preferredName; }