package com.mycompany.myapp.domain; import com.fasterxml.jackson.annotation.JsonGetter; import com.fasterxml.jackson.annotation.JsonIgnore; import org.neo4j.ogm.annotation.NodeEntity; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.time.LocalDate; import java.time.format.DateTimeFormatter; /** * Persistent tokens are used by Spring Security to automatically log in users. * * @see com.mycompany.myapp.security.CustomPersistentRememberMeServices */ @NodeEntity public class PersistentToken extends Entity { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("d MMMM yyyy"); private static final int MAX_USER_AGENT_LEN = 255; private String series; @JsonIgnore @NotNull private String tokenValue; @JsonIgnore private Long tokenDate; //an IPV6 address max length is 39 characters @Size(min = 0, max = 39) private String ipAddress; private String userAgent; @JsonIgnore private User user; public String getSeries() { return series; } public void setSeries(String series) { this.series = series; } public String getTokenValue() { return tokenValue; } public void setTokenValue(String tokenValue) { this.tokenValue = tokenValue; } public Long getTokenDate() { return tokenDate; } public void setTokenDate(Long tokenDate) { this.tokenDate = tokenDate; } @JsonGetter public String getFormattedTokenDate() { LocalDate ldt = LocalDate.ofEpochDay(tokenDate); return DATE_TIME_FORMATTER.format(ldt); } public String getIpAddress() { return ipAddress; } public void setIpAddress(String ipAddress) { this.ipAddress = ipAddress; } public String getUserAgent() { return userAgent; } public void setUserAgent(String userAgent) { if (userAgent.length() >= MAX_USER_AGENT_LEN) { this.userAgent = userAgent.substring(0, MAX_USER_AGENT_LEN - 1); } else { this.userAgent = userAgent; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String toString() { return "PersistentToken{" + "series='" + series + '\'' + ", tokenValue='" + tokenValue + '\'' + ", tokenDate=" + tokenDate + ", ipAddress='" + ipAddress + '\'' + ", userAgent='" + userAgent + '\'' + "}"; } }