package com.syzton.sunread.model.security;
import java.util.Date;
import java.util.UUID;
import org.joda.time.DateTime;
import com.syzton.sunread.model.common.AbstractEntity;
import com.syzton.sunread.model.user.User;
public class VerificationToken extends AbstractEntity {
private static final int DEFAULT_EXPIRY_TIME_IN_MINS = 60 * 24; // 24 hours
private final String token;
private Date expiryDate;
private boolean verified;
Long userId;
public VerificationToken() {
super();
this.token = UUID.randomUUID().toString();
this.expiryDate = calculateExpiryDate(DEFAULT_EXPIRY_TIME_IN_MINS);
}
public VerificationToken(User user, int expirationTimeInMinutes) {
this();
this.userId = user.getId();
this.expiryDate = calculateExpiryDate(expirationTimeInMinutes);
}
public boolean isVerified() {
return verified;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Date getExpiryDate() {
return expiryDate;
}
public String getToken() {
return token;
}
private Date calculateExpiryDate(int expiryTimeInMinutes) {
DateTime now = new DateTime();
return now.plusMinutes(expiryTimeInMinutes).toDate();
}
public boolean hasExpired() {
DateTime tokenDate = new DateTime(getExpiryDate());
return tokenDate.isBeforeNow();
}
}