]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/dbObjects/User.java
add: Implement (de)serialisation support for CertificateOwner and derived classes
[gigi.git] / src / org / cacert / gigi / dbObjects / User.java
index e5175694ed1b8ac1083ad728de76740a283d4cc9..009814762ec89ecb40df9cfecd045bf9374a0c57 100644 (file)
@@ -1,5 +1,8 @@
 package org.cacert.gigi.dbObjects;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -29,6 +32,8 @@ import org.cacert.gigi.util.TimeConditions;
  */
 public class User extends CertificateOwner {
 
+    private static final long serialVersionUID = -7915843843752264176L;
+
     private DayDate dob;
 
     private String email;
@@ -43,13 +48,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".
@@ -134,7 +141,15 @@ public class User extends CertificateOwner {
     public void setDoB(DayDate dob) throws GigiApiException {
         synchronized (Notary.class) {
             if (getReceivedAssurances().length != 0) {
-                throw new GigiApiException("No change after assurance allowed.");
+                throw new GigiApiException("No change after verification 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 +262,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
@@ -385,7 +401,7 @@ public class User extends CertificateOwner {
 
     }
 
-    public Name getPreferredName() {
+    public synchronized Name getPreferredName() {
         return preferredName;
     }
 
@@ -592,4 +608,8 @@ public class User extends CertificateOwner {
         }
     }
 
+    private void writeObject(ObjectOutputStream oos) throws IOException {}
+
+    private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {}
+
 }