package net.sourceforge.fenixedu.domain; import net.sourceforge.fenixedu.domain.exceptions.DomainException; import org.apache.commons.codec.digest.DigestUtils; public class LoginRequest extends LoginRequest_Base { public LoginRequest(User user) { if (user.getLoginRequest() != null) { throw new DomainException("error.user.already.has.loginRequest"); } setRootDomainObject(RootDomainObject.getInstance()); super.setUser(user); super.setHash(generateHash()); } public void delete() { super.setUser(null); removeRootDomainObject(); super.deleteDomainObject(); } private String generateHash() { String seed = System.currentTimeMillis() + " " + this.getUser().getIdInternal(); return DigestUtils.md5Hex(seed); } @Override public void setHash(String hash) { throw new DomainException("error.cannot.change.hash"); } @Override public void setUser(User user) { throw new DomainException("error.cannot.change.user"); } public static LoginRequest getLoginRequestWithHash(String hash) { for (LoginRequest request : RootDomainObject.getInstance().getLoginRequests()) { if (request.getHash().equals(hash)) { return request; } } return null; } }