/* * oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text. * * Copyright (c) 2014, Gluu */ package org.xdi.oxauth.model.common; import java.io.Serializable; import java.util.Date; import java.util.Map; import javax.annotation.Nonnull; import javax.inject.Named; import javax.persistence.Transient; import org.gluu.site.ldap.persistence.annotation.LdapAttribute; import org.gluu.site.ldap.persistence.annotation.LdapDN; import org.gluu.site.ldap.persistence.annotation.LdapEntry; import org.gluu.site.ldap.persistence.annotation.LdapJsonObject; import org.gluu.site.ldap.persistence.annotation.LdapObjectClass; import com.google.common.collect.Maps; /** * @author Yuriy Zabrovarnyy * @author Javier Rojas Blum * @version December 15, 2015 */ @Named("sessionUser") @LdapEntry @LdapObjectClass(values = {"top", "oxAuthSessionId"}) public class SessionState implements Serializable { private static final long serialVersionUID = -237476411915686378L; @LdapDN private String dn; @LdapAttribute(name = "oxAuthSessionId") private String id; @LdapAttribute(name = "oxLastAccessTime") private Date lastUsedAt; @LdapAttribute(name = "oxAuthUserDN") private String userDn; @LdapAttribute(name = "oxAuthAuthenticationTime") private Date authenticationTime; @LdapAttribute(name = "oxState") private SessionIdState state; @LdapAttribute(name = "oxAuthSessionState") private Boolean permissionGranted; @LdapAttribute(name = "oxAsJwt") private Boolean isJwt = false; @LdapAttribute(name = "oxJwt") private String jwt; @LdapJsonObject @LdapAttribute(name = "oxAuthPermissionGrantedMap") private SessionIdAccessMap permissionGrantedMap; @LdapJsonObject @LdapAttribute(name = "oxInvolvedClients") private SessionIdAccessMap involvedClients; @LdapJsonObject @LdapAttribute(name = "oxAuthSessionAttribute") private Map<String, String> sessionAttributes; @Transient private transient boolean persisted; public SessionState() { } public String getDn() { return dn; } public void setDn(String p_dn) { dn = p_dn; } public String getJwt() { return jwt; } public void setJwt(String jwt) { this.jwt = jwt; } public Boolean getIsJwt() { return isJwt; } public void setIsJwt(Boolean isJwt) { this.isJwt = isJwt; } public SessionIdAccessMap getInvolvedClients() { if (involvedClients == null) { involvedClients = new SessionIdAccessMap(); } return involvedClients; } public void setInvolvedClients(SessionIdAccessMap involvedClients) { this.involvedClients = involvedClients; } public SessionIdState getState() { return state; } public void setState(SessionIdState state) { this.state = state; } public String getId() { return id; } public void setId(String p_id) { id = p_id; } public Date getLastUsedAt() { return lastUsedAt; } public void setLastUsedAt(Date p_lastUsedAt) { lastUsedAt = p_lastUsedAt; } public String getUserDn() { return userDn; } public void setUserDn(String p_userDn) { userDn = p_userDn != null ? p_userDn : ""; } public Date getAuthenticationTime() { return authenticationTime; } public void setAuthenticationTime(Date authenticationTime) { this.authenticationTime = authenticationTime; } public Boolean getPermissionGranted() { return permissionGranted; } public void setPermissionGranted(Boolean permissionGranted) { this.permissionGranted = permissionGranted; } public SessionIdAccessMap getPermissionGrantedMap() { return permissionGrantedMap; } public void setPermissionGrantedMap(SessionIdAccessMap permissionGrantedMap) { this.permissionGrantedMap = permissionGrantedMap; } public Boolean isPermissionGrantedForClient(String clientId) { return permissionGrantedMap != null && permissionGrantedMap.get(clientId); } public void addPermission(String clientId, Boolean granted) { if (permissionGrantedMap == null) { permissionGrantedMap = new SessionIdAccessMap(); } permissionGrantedMap.put(clientId, granted); } @Nonnull public Map<String, String> getSessionAttributes() { if (sessionAttributes == null) { sessionAttributes = Maps.newHashMap(); } return sessionAttributes; } public void setSessionAttributes(Map<String, String> sessionAttributes) { this.sessionAttributes = sessionAttributes; } public boolean isPersisted() { return persisted; } public void setPersisted(boolean persisted) { this.persisted = persisted; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; SessionState id1 = (SessionState) o; return !(id != null ? !id.equals(id1.id) : id1.id != null); } @Override public int hashCode() { return id != null ? id.hashCode() : 0; } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("SessionState"); sb.append(", dn='").append(dn).append('\''); sb.append(", id='").append(id).append('\''); sb.append(", isJwt=").append(isJwt); sb.append(", lastUsedAt=").append(lastUsedAt); sb.append(", userDn='").append(userDn).append('\''); sb.append(", authenticationTime=").append(authenticationTime); sb.append(", state=").append(state); sb.append(", permissionGranted=").append(permissionGranted); sb.append(", permissionGrantedMap=").append(permissionGrantedMap); sb.append(", sessionAttributes=").append(sessionAttributes); sb.append(", persisted=").append(persisted); sb.append('}'); return sb.toString(); } }