Class CurrentUser

java.lang.Object
com.google.gerrit.server.CurrentUser
Direct Known Subclasses:
AnonymousUser, ExternalUser, GroupBackedUser, IdentifiedUser, InternalUser, PeerDaemonUser

public abstract class CurrentUser extends Object
Information about the currently logged in user.

This is a RequestScoped property managed by Guice.

See Also:
  • Field Details

  • Constructor Details

    • CurrentUser

      protected CurrentUser()
    • CurrentUser

      protected CurrentUser(PropertyMap properties)
  • Method Details

    • getAccessPath

      public final AccessPath getAccessPath()
      How this user is accessing the Gerrit Code Review application.
    • setAccessPath

      public void setAccessPath(AccessPath path)
    • getRealUser

      public CurrentUser getRealUser()
      Identity of the authenticated user.

      In the normal case where a user authenticates as themselves getRealUser() == this.

      If X-Gerrit-RunAs or suexec was used this method returns the identity of the account that has permission to act on behalf of this user.

    • isImpersonating

      public boolean isImpersonating()
    • updateRealAccountId

      public void updateRealAccountId(Consumer<Account.Id> setter)
      If the getRealUser() has an account ID associated with it, call the given setter with that ID.
    • getEffectiveGroups

      public abstract GroupMembership getEffectiveGroups()
      Get the set of groups the user is currently a member of.

      The returned set may be a subset of the user's actual groups; if the user's account is currently deemed to be untrusted then the effective group set is only the anonymous and registered user groups. To enable additional groups (and gain their granted permissions) the user must update their account to use only trusted authentication providers.

      Returns:
      active groups for this user.
    • getCacheKey

      public abstract Object getCacheKey()
      Returns a unique identifier for this user that is intended to be used as a cache key. Returned object should to implement equals() and hashCode() for effective caching.
    • getUserName

      public Optional<String> getUserName()
      Unique name of the user on this server, if one has been assigned.
    • getLoggableName

      public String getLoggableName()
      Returns unique name of the user for logging, never null
    • isIdentifiedUser

      public boolean isIdentifiedUser()
      Check if user is the IdentifiedUser
    • asIdentifiedUser

      public IdentifiedUser asIdentifiedUser()
      Cast to IdentifiedUser if possible.
    • getAccountId

      public Account.Id getAccountId()
      Return account ID if isIdentifiedUser() is true.
      Throws:
      UnsupportedOperationException - if the user is not logged in.
    • getEmailAddresses

      public com.google.common.collect.ImmutableSet<String> getEmailAddresses()
      Returns all email addresses associated with this user. For AnonymousUser and other users that don't represent a person user or service account, this set will be empty.
    • getExternalIdKeys

      public com.google.common.collect.ImmutableSet<ExternalId.Key> getExternalIdKeys()
      Returns all ExternalId.Keys associated with this user. For AnonymousUser and other users that don't represent a person user or service account, this set will be empty.
    • isInternalUser

      public boolean isInternalUser()
      Check if the CurrentUser is an InternalUser.
    • get

      public <T> Optional<T> get(PropertyMap.Key<T> key)
      Lookup a stored property.
      Parameters:
      key - unique property key. This key has to be the same instance that was used to store the value when constructing the PropertyMap
      Returns:
      stored value, or Optional#empty().
    • getLastLoginExternalIdKey

      public Optional<ExternalId.Key> getLastLoginExternalIdKey()
    • hasSameAccountId

      public boolean hasSameAccountId(CurrentUser other)
      Checks if the current user has the same account id of another.

      Provide a generic interface for allowing subclasses to define whether two accounts represent the same account id.

      Parameters:
      other - user to compare
      Returns:
      true if the two users have the same account id