org.keycloak.storage.adapter

## Class AbstractUserAdapter

- java.lang.Object
- - org.keycloak.models.UserModelDefaultMethods
  - - org.keycloak.storage.adapter.AbstractUserAdapter

- All Implemented Interfaces:
    RoleMapperModel, UserModel
  Direct Known Subclasses:
    AbstractUserAdapter.Streams

      public abstract class AbstractUserAdapter
      extends UserModelDefaultMethods

  This abstract class provides implementations for everything but getUsername(). getId() returns a default value of "f:" + providerId + ":" + getUsername(). isEnabled() returns true. getRoleMappings() will return default roles. getGroups() will return default groups. All other read methods return null, an empty collection, or false depending on the type. All update methods throw a ReadOnlyException. Provider implementors should override the methods for attributes, properties, and mappings they support.
  Version:
    $Revision: 1 $
  Author:
    Bill Burke

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `AbstractUserAdapter.Streams` The `AbstractUserAdapter.Streams` class extends the `AbstractUserAdapter` abstract class and implements the `UserModel.Streams` interface, allowing subclasses to focus on the implementation of the `Stream`-based query methods and providing default implementations for the collections-based variants that delegate to their `Stream` counterparts.

    - ### Nested classes/interfaces inherited from interface org.keycloak.models.UserModel

      `UserModel.RequiredAction, UserModel.SearchableFields, UserModel.UserRemovedEvent`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected long` | `created`
    `protected RealmModel` | `realm`
    `protected KeycloakSession` | `session`
    `protected StorageId` | `storageId`
    `protected ComponentModel` | `storageProviderModel`

    - ### Fields inherited from interface org.keycloak.models.UserModel

      `COMPARE_BY_USERNAME, DISABLED_REASON, EMAIL, EMAIL_VERIFIED, ENABLED, EXACT, FIRST_NAME, GROUPS, IDP_ALIAS, IDP_USER_ID, INCLUDE_SERVICE_ACCOUNT, LAST_NAME, LOCALE, SEARCH, USERNAME`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractUserAdapter(KeycloakSession session, RealmModel realm, ComponentModel storageProviderModel)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addRequiredAction(String action)`
    `void` | `addRequiredAction(UserModel.RequiredAction action)`
    `protected boolean` | `appendDefaultGroups()` Should the realm's default groups be appended to getGroups() call? If your storage provider is not managing group mappings then it is recommended that this method return true
    `protected boolean` | `appendDefaultRolesToRoleMappings()` Should the realm's default roles be appended to getRoleMappings() call? If your storage provider is not managing all role mappings then it is recommended that this method return true
    `void` | `deleteRoleMapping(RoleModel role)` Removes the given role mapping from this object.
    `boolean` | `equals(Object o)`
    `List<String>` | `getAttribute(String name)`
    `Map<String,List<String>>` | `getAttributes()`
    `Set<RoleModel>` | `getClientRoleMappings(ClientModel app)` Returns set of client roles that are directly set to this object for the given client.
    `Long` | `getCreatedTimestamp()` Get timestamp of user creation.
    `String` | `getEmail()`
    `String` | `getFederationLink()` This method should not be overriden
    `String` | `getFirstAttribute(String name)`
    `String` | `getFirstName()`
    `Set<GroupModel>` | `getGroups()`
    `protected Set<GroupModel>` | `getGroupsInternal()` Get group membership mappings that are managed by this storage provider
    `String` | `getId()` Defaults to 'f:' + storageProvider.getId() + ':' + getUsername()
    `String` | `getLastName()`
    `Set<RoleModel>` | `getRealmRoleMappings()` Returns set of realm roles that are directly set to this object.
    `Set<String>` | `getRequiredActions()`
    `Set<RoleModel>` | `getRoleMappings()` Returns set of all role (both realm all client) that are directly set to this object.
    `protected Set<RoleModel>` | `getRoleMappingsInternal()`
    `String` | `getServiceAccountClientLink()` This method should not be overriden
    `void` | `grantRole(RoleModel role)` Grants the given role to this object.
    `int` | `hashCode()`
    `boolean` | `hasRole(RoleModel role)` Returns `true` if this object is directly or indirectly assigned the given role, `false` otherwise.
    `boolean` | `isEmailVerified()`
    `boolean` | `isEnabled()`
    `boolean` | `isMemberOf(GroupModel group)`
    `void` | `joinGroup(GroupModel group)`
    `void` | `leaveGroup(GroupModel group)`
    `void` | `removeAttribute(String name)`
    `void` | `removeRequiredAction(String action)`
    `void` | `removeRequiredAction(UserModel.RequiredAction action)`
    `void` | `setAttribute(String name, List<String> values)`
    `void` | `setCreatedTimestamp(Long timestamp)`
    `void` | `setEmail(String email)` Sets email for this user.
    `void` | `setEmailVerified(boolean verified)`
    `void` | `setEnabled(boolean enabled)`
    `void` | `setFederationLink(String link)` This method should not be overriden
    `void` | `setFirstName(String firstName)`
    `void` | `setLastName(String lastName)`
    `void` | `setServiceAccountClientLink(String clientInternalId)` This method should not be overriden
    `void` | `setSingleAttribute(String name, String value)` Set single value of specified attribute.
    `void` | `setUsername(String username)` Sets username for this user.

    - ### Methods inherited from class org.keycloak.models.UserModelDefaultMethods

      `toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.keycloak.models.UserModel

      `getAttributeStream, getGroups, getGroups, getGroupsCount, getGroupsCountByNameContaining, getGroupsStream, getGroupsStream, getRequiredActionsStream, getUsername`

    - ### Methods inherited from interface org.keycloak.models.RoleMapperModel

      `getClientRoleMappingsStream, getRealmRoleMappingsStream, getRoleMappingsStream`

- - ### Field Detail

    - #### session

          protected KeycloakSession session

    - #### realm

          protected RealmModel realm

    - #### storageProviderModel

          protected ComponentModel storageProviderModel

    - #### storageId

          protected StorageId storageId

    - #### created

          protected long created

  - ### Constructor Detail

    - #### AbstractUserAdapter

          public AbstractUserAdapter(KeycloakSession session,
                                     RealmModel realm,
                                     ComponentModel storageProviderModel)

  - ### Method Detail

    - #### getRequiredActions

          public Set<String> getRequiredActions()

    - #### addRequiredAction

          public void addRequiredAction(String action)

    - #### removeRequiredAction

          public void removeRequiredAction(String action)

    - #### addRequiredAction

          public void addRequiredAction(UserModel.RequiredAction action)

    - #### removeRequiredAction

          public void removeRequiredAction(UserModel.RequiredAction action)

    - #### getGroupsInternal

          protected Set<GroupModel> getGroupsInternal()

      Get group membership mappings that are managed by this storage provider
      Returns:

    - #### appendDefaultGroups

          protected boolean appendDefaultGroups()

      Should the realm's default groups be appended to getGroups() call? If your storage provider is not managing group mappings then it is recommended that this method return true
      Returns:

    - #### getGroups

          public Set<GroupModel> getGroups()

    - #### joinGroup

          public void joinGroup(GroupModel group)

    - #### leaveGroup

          public void leaveGroup(GroupModel group)

    - #### isMemberOf

          public boolean isMemberOf(GroupModel group)

    - #### getRealmRoleMappings

          public Set<RoleModel> getRealmRoleMappings()

      Description copied from interface: `RoleMapperModel`
      Returns set of realm roles that are directly set to this object.
      Returns:
        see description

    - #### getClientRoleMappings

          public Set<RoleModel> getClientRoleMappings(ClientModel app)

      Description copied from interface: `RoleMapperModel`
      Returns set of client roles that are directly set to this object for the given client.
      Parameters:
        `app` - Client to get the roles for
      Returns:
        see description

    - #### hasRole

          public boolean hasRole(RoleModel role)

      Description copied from interface: `RoleMapperModel`
      Returns `true` if this object is directly or indirectly assigned the given role, `false` otherwise.

      For example, `true` is returned for hasRole(R) if:

      - R is directly assigned to this object
      - R is not assigned to this object but this object belongs to a group G which is assigned the role R
      - R is not assigned to this object but this object belongs to a group G, and G belongs to group H which is assigned the role R
      Returns:
        see description

    - #### grantRole

          public void grantRole(RoleModel role)

      Description copied from interface: `RoleMapperModel`
      Grants the given role to this object.

    - #### appendDefaultRolesToRoleMappings

          protected boolean appendDefaultRolesToRoleMappings()

      Should the realm's default roles be appended to getRoleMappings() call? If your storage provider is not managing all role mappings then it is recommended that this method return true
      Returns:

    - #### getRoleMappingsInternal

          protected Set<RoleModel> getRoleMappingsInternal()

    - #### getRoleMappings

          public Set<RoleModel> getRoleMappings()

      Description copied from interface: `RoleMapperModel`
      Returns set of all role (both realm all client) that are directly set to this object.
      Returns:

    - #### deleteRoleMapping

          public void deleteRoleMapping(RoleModel role)

      Description copied from interface: `RoleMapperModel`
      Removes the given role mapping from this object.
      Parameters:
        `role` - Role to remove

    - #### isEnabled

          public boolean isEnabled()

    - #### setEnabled

          public void setEnabled(boolean enabled)

    - #### getFederationLink

          public String getFederationLink()

      This method should not be overriden
      Returns:

    - #### setFederationLink

          public void setFederationLink(String link)

      This method should not be overriden

    - #### getServiceAccountClientLink

          public String getServiceAccountClientLink()

      This method should not be overriden
      Returns:

    - #### setServiceAccountClientLink

          public void setServiceAccountClientLink(String clientInternalId)

      This method should not be overriden

    - #### getId

          public String getId()

      Defaults to 'f:' + storageProvider.getId() + ':' + getUsername()
      Returns:

    - #### setUsername

          public void setUsername(String username)

      Description copied from interface: `UserModel`
      Sets username for this user. No default method here to allow Abstract subclasses where the username is provided in a different manner
      Parameters:
        `username` - username string

    - #### getCreatedTimestamp

          public Long getCreatedTimestamp()

      Description copied from interface: `UserModel`
      Get timestamp of user creation. May be null for old users created before this feature introduction.

    - #### setCreatedTimestamp

          public void setCreatedTimestamp(Long timestamp)

    - #### setSingleAttribute

          public void setSingleAttribute(String name,
                                         String value)

      Description copied from interface: `UserModel`
      Set single value of specified attribute. Remove all other existing values of this attribute

    - #### removeAttribute

          public void removeAttribute(String name)

    - #### setAttribute

          public void setAttribute(String name,
                                   List<String> values)

    - #### getFirstAttribute

          public String getFirstAttribute(String name)

      Returns:
        null if there is not any value of specified attribute or first value otherwise. Don't throw exception if there are more values of the attribute

    - #### getAttributes

          public Map<String,List<String>> getAttributes()

    - #### getAttribute

          public List<String> getAttribute(String name)

      Returns:
        list of all attribute values or empty list if there are not any values. Never return null

    - #### getFirstName

          public String getFirstName()

      Specified by:
        `getFirstName` in interface `UserModel`
      Overrides:
        `getFirstName` in class `UserModelDefaultMethods`

    - #### setFirstName

          public void setFirstName(String firstName)

      Specified by:
        `setFirstName` in interface `UserModel`
      Overrides:
        `setFirstName` in class `UserModelDefaultMethods`

    - #### getLastName

          public String getLastName()

      Specified by:
        `getLastName` in interface `UserModel`
      Overrides:
        `getLastName` in class `UserModelDefaultMethods`

    - #### setLastName

          public void setLastName(String lastName)

      Specified by:
        `setLastName` in interface `UserModel`
      Overrides:
        `setLastName` in class `UserModelDefaultMethods`

    - #### getEmail

          public String getEmail()

      Specified by:
        `getEmail` in interface `UserModel`
      Overrides:
        `getEmail` in class `UserModelDefaultMethods`

    - #### setEmail

          public void setEmail(String email)

      Description copied from interface: `UserModel`
      Sets email for this user.
      Specified by:
        `setEmail` in interface `UserModel`
      Overrides:
        `setEmail` in class `UserModelDefaultMethods`
      Parameters:
        `email` - the email

    - #### isEmailVerified

          public boolean isEmailVerified()

    - #### setEmailVerified

          public void setEmailVerified(boolean verified)

    - #### equals

          public boolean equals(Object o)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

Copyright © 2021 JBoss by Red Hat. All rights reserved.