Class BasicUserProfile

java.lang.Object
org.pac4j.core.profile.BasicUserProfile
All Implemented Interfaces:
Externalizable, Serializable, UserProfile
Direct Known Subclasses:
CommonProfile

public class BasicUserProfile extends Object implements UserProfile, Externalizable
This class is the user profile retrieved from a provider after successful authentication: it's an identifier (string) and attributes (objects). Additional concepts are the "remember me" nature of the user profile, the associated roles, permissions, client name and linked identifier.
Since:
1.0.0
Author:
Jerome Leleu
See Also:
  • Field Details

    • logger

      protected final transient org.slf4j.Logger logger
  • Constructor Details

    • BasicUserProfile

      public BasicUserProfile()
    • BasicUserProfile

      public BasicUserProfile(boolean canAttributesBeMerged)
      Create a profile with possibility to merge attributes with the same name and collection-type values.
      Parameters:
      canAttributesBeMerged - if true - merge attributes with the same name and collection-type values, if false - overwrite them
      Since:
      3.1.0
  • Method Details

    • build

      public void build(Object id, Map<String,Object> attributes)
      Build a profile from user identifier and attributes.
      Parameters:
      id - user identifier
      attributes - user attributes
    • build

      public void build(Object id, Map<String,Object> attributes, Map<String,Object> authenticationAttributes)
      Build a profile from user identifier, attributes, and authentication attributes.
      Parameters:
      id - user identifier
      attributes - user attributes
      authenticationAttributes - authentication attributes
    • setId

      public void setId(String id)
      Set the identifier.
      Specified by:
      setId in interface UserProfile
      Parameters:
      id - user identifier
    • getId

      public String getId()
      Get the user identifier. This identifier is unique for this provider but not necessarily through all providers.
      Specified by:
      getId in interface UserProfile
      Returns:
      the user identifier
    • getTypedId

      public String getTypedId()
      Get the user identifier with a prefix which is the profile type (full class name with package). This identifier is unique through all providers.
      Specified by:
      getTypedId in interface UserProfile
      Returns:
      the typed user identifier
    • getUsername

      public String getUsername()
      Specified by:
      getUsername in interface UserProfile
    • addAttribute

      public void addAttribute(String key, Object value)
      Add an attribute. If existing attribute value is collection and the new value is collection - merge the collections
      Specified by:
      addAttribute in interface UserProfile
      Parameters:
      key - key of the attribute
      value - value of the attribute
    • addAuthenticationAttribute

      public void addAuthenticationAttribute(String key, Object value)
      Add an authentication-related attribute
      Specified by:
      addAuthenticationAttribute in interface UserProfile
      Parameters:
      key - the attribute key
      value - the attribute value
    • addAttributes

      public void addAttributes(Map<String,Object> attributes)
      Add attributes.
      Parameters:
      attributes - use attributes
    • addAuthenticationAttributes

      public void addAuthenticationAttributes(Map<String,Object> attributeMap)
      Add authentication attributes.
      Parameters:
      attributeMap - the authentication attributes
    • removeAttribute

      public void removeAttribute(String key)
      Remove an attribute by its key.
      Specified by:
      removeAttribute in interface UserProfile
      Parameters:
      key - the key
    • removeAuthenticationAttribute

      public void removeAuthenticationAttribute(String key)
      Remove an authentication attribute by its key
      Specified by:
      removeAuthenticationAttribute in interface UserProfile
      Parameters:
      key - the key
    • getAttributes

      public Map<String,Object> getAttributes()
      Get all attributes as immutable map.
      Specified by:
      getAttributes in interface UserProfile
      Returns:
      the immutable attributes
    • getAuthenticationAttributes

      public Map<String,Object> getAuthenticationAttributes()
      Get all authentication attributes as an immutable map
      Returns:
      the immutable authentication attributes
    • getAttribute

      public Object getAttribute(String name)
      Return the attribute with name.
      Specified by:
      getAttribute in interface UserProfile
      Parameters:
      name - attribute name
      Returns:
      the attribute with name
    • extractAttributeValues

      public List<String> extractAttributeValues(String name)
      Return the attribute values with name.
      Parameters:
      name - attribute name
      Returns:
      the attribute values as List of strings.
    • getAuthenticationAttribute

      public Object getAuthenticationAttribute(String name)
      Return the authentication attribute with name.
      Parameters:
      name - authentication attribute name
      Returns:
      the authentication attribute with name
    • containsAttribute

      public boolean containsAttribute(String name)
      Check to see if profile contains attribute name.
      Specified by:
      containsAttribute in interface UserProfile
      Parameters:
      name - the name
      Returns:
      true/false
    • containsAuthenicationAttribute

      public boolean containsAuthenicationAttribute(String name)
      Check to see if profile contains attribute name.
      Parameters:
      name - the name
      Returns:
      true/false
    • getAttribute

      public <T> T getAttribute(String name, Class<T> clazz)
      Return the attribute with name.
      Type Parameters:
      T - the type of the attribute
      Parameters:
      name - the attribute name
      clazz - the class of the attribute
      Returns:
      the attribute by its name
      Since:
      1.8
    • getAuthenticationAttribute

      public <T> T getAuthenticationAttribute(String name, Class<T> clazz)
      Return authentication attribute with name
      Type Parameters:
      T - The type of the authentication attribute
      Parameters:
      name - Name of authentication attribute
      clazz - The class of the authentication attribute
      Returns:
      the named attribute
    • addRole

      public void addRole(String role)
      Add a role.
      Specified by:
      addRole in interface UserProfile
      Parameters:
      role - the role to add.
    • addRoles

      public void addRoles(Collection<String> roles)
      Add roles.
      Specified by:
      addRoles in interface UserProfile
      Parameters:
      roles - the roles to add.
    • getRoles

      public Set<String> getRoles()
      Get the roles of the user.
      Specified by:
      getRoles in interface UserProfile
      Returns:
      the user roles.
    • setRoles

      public void setRoles(Set<String> roles)
    • addPermission

      public void addPermission(String permission)
      Add a permission.
      Specified by:
      addPermission in interface UserProfile
      Parameters:
      permission - the permission to add.
    • addPermissions

      public void addPermissions(Collection<String> permissions)
      Add permissions.
      Specified by:
      addPermissions in interface UserProfile
      Parameters:
      permissions - the permissions to add.
    • getPermissions

      public Set<String> getPermissions()
      Get the permissions of the user.
      Specified by:
      getPermissions in interface UserProfile
      Returns:
      the user permissions.
    • setPermissions

      public void setPermissions(Set<String> permissions)
    • setRemembered

      public void setRemembered(boolean rme)
      Define if this profile is remembered.
      Specified by:
      setRemembered in interface UserProfile
      Parameters:
      rme - whether the user is remembered.
    • isRemembered

      public boolean isRemembered()
      Is the user remembered?
      Specified by:
      isRemembered in interface UserProfile
      Returns:
      whether the user is remembered.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Specified by:
      writeExternal in interface Externalizable
      Throws:
      IOException
    • readExternal

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Specified by:
      readExternal in interface Externalizable
      Throws:
      IOException
      ClassNotFoundException
    • removeLoginData

      public void removeLoginData()
      Remove the specific data retrieved during the login process to only keep the user attributes, roles and permissions.
    • getClientName

      public String getClientName()
      Specified by:
      getClientName in interface UserProfile
    • setClientName

      public void setClientName(String clientName)
      Specified by:
      setClientName in interface UserProfile
    • getLinkedId

      public String getLinkedId()
      Specified by:
      getLinkedId in interface UserProfile
    • setLinkedId

      public void setLinkedId(String linkedId)
      Specified by:
      setLinkedId in interface UserProfile
    • isExpired

      public boolean isExpired()
      Specified by:
      isExpired in interface UserProfile
    • asPrincipal

      public Principal asPrincipal()
      Specified by:
      asPrincipal in interface UserProfile