package fr.ekito.example.domain;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.PersistenceConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import java.io.Serializable;
import java.util.UUID;
@Document(collection = "T_OAUTH_AUTHENTICATION_ACCESS_TOKEN")
public class OAuth2AuthenticationAccessToken implements Serializable {
@Id
private String id;
private String tokenId;
private OAuth2AccessToken oAuth2AccessToken;
private String authenticationId;
private String userName;
private String clientId;
private OAuth2Authentication authentication;
private String refreshToken;
@PersistenceConstructor
public OAuth2AuthenticationAccessToken(final OAuth2AccessToken oAuth2AccessToken, final OAuth2Authentication authentication, final String authenticationId) {
this.id = UUID.randomUUID().toString();
this.tokenId = oAuth2AccessToken.getValue();
this.oAuth2AccessToken = oAuth2AccessToken;
this.authenticationId = authenticationId;
this.userName = authentication.getName();
this.clientId = authentication.getOAuth2Request().getClientId();
this.authentication = authentication;
this.refreshToken = oAuth2AccessToken.getRefreshToken().getValue();
}
public String getTokenId() {
return tokenId;
}
public OAuth2AccessToken getoAuth2AccessToken() {
return oAuth2AccessToken;
}
public String getAuthenticationId() {
return authenticationId;
}
public String getUserName() {
return userName;
}
public String getClientId() {
return clientId;
}
public OAuth2Authentication getAuthentication() {
return authentication;
}
public String getRefreshToken() {
return refreshToken;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
OAuth2AuthenticationAccessToken that = (OAuth2AuthenticationAccessToken) o;
if (id != null ? !id.equals(that.id) : that.id != null) return false;
return true;
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
}