com.atlassian.jira.user.util
Interface UserManager

All Known Implementing Classes:
DefaultUserManager, MockUserManager

public interface UserManager

Simple user utilities that do not require an implementation with too many dependencies.

Since:
v4.0

Nested Class Summary
static class UserManager.UserState
          The current state of a user with regard to the same username existing in other user directories.
 
Method Summary
 boolean canDirectoryUpdateUserPassword(com.atlassian.crowd.embedded.api.Directory directory)
          Checks if the given directory is able to update user passwords.
 boolean canRenameUser(ApplicationUser user)
          Test if this user can be renamed.
 boolean canUpdateGroupMembershipForUser(com.atlassian.crowd.embedded.api.User user)
          Test if this user's group membership can be updated, i.e.
 boolean canUpdateUser(ApplicationUser user)
          Test if this user can be updated, i.e.
 boolean canUpdateUser(com.atlassian.crowd.embedded.api.User user)
          Deprecated. Use canUpdateUser(ApplicationUser) instead. Since v6.0.
 boolean canUpdateUserPassword(com.atlassian.crowd.embedded.api.User user)
          Test if this user's password can be updated, i.e.
 com.atlassian.crowd.embedded.api.User findUserInDirectory(String userName, Long directoryId)
          Returns a User based on user name and directoryId
 Collection<ApplicationUser> getAllApplicationUsers()
          Returns all users defined in JIRA, regardless of whether they are active or not.
 Set<com.atlassian.crowd.embedded.api.Group> getAllGroups()
          Returns all groups defined in JIRA.
 Set<com.atlassian.crowd.embedded.api.User> getAllUsers()
          Returns all users defined in JIRA, regardless of whether they are active or not.
 com.atlassian.crowd.embedded.api.Directory getDirectory(Long directoryId)
           
 com.atlassian.crowd.embedded.api.Group getGroup(String groupName)
          Returns a Group based on user name.
 com.atlassian.crowd.embedded.api.Group getGroupObject(String groupName)
          Returns a Group based on user name.
 Collection<com.atlassian.crowd.embedded.api.Group> getGroups()
          Returns all groups defined in JIRA.
 int getTotalUserCount()
          Returns the total number of users defined in JIRA, regardless of whether they are active or not.
 com.atlassian.crowd.embedded.api.User getUser(String userName)
          Deprecated. Use getUserByKey(String) or getUserByName(String) instead. Since v6.0.
 ApplicationUser getUserByKey(String userKey)
          Returns an ApplicationUser based on user key.
 ApplicationUser getUserByKeyEvenWhenUnknown(String userKey)
          Returns an ApplicationUser based on user key.
 ApplicationUser getUserByName(String userName)
          Returns an ApplicationUser based on user name.
 ApplicationUser getUserByNameEvenWhenUnknown(String userName)
          Returns an ApplicationUser based on user name.
 com.atlassian.crowd.embedded.api.User getUserEvenWhenUnknown(String userName)
          Deprecated. Use getUserByKeyEvenWhenUnknown(String) or getUserByNameEvenWhenUnknown(String) instead. Since v6.0.
 com.atlassian.crowd.embedded.api.User getUserObject(String userName)
          Deprecated. Use getUserByKey(String) or getUserByName(String) instead. Since v6.0.
 Collection<com.atlassian.crowd.embedded.api.User> getUsers()
          Returns all users defined in JIRA, regardless of whether they are active or not.
 UserManager.UserState getUserState(ApplicationUser user)
          This convenience method is equivalent to getUserState(user.getUsername(), user.getDirectoryId()) except that a null user is permitted and returns UserManager.UserState.INVALID_USER.
 UserManager.UserState getUserState(String username, long directoryId)
          Checks for the existence of this user across all directories to determine whether or not the user exists in the specified directory and whether or not it is shadowing or shadowed by a user with the same username in another active user directory.
 UserManager.UserState getUserState(com.atlassian.crowd.embedded.api.User user)
          This convenience method is equivalent to getUserState(user.getName(), user.getDirectoryId()) except that a null user is permitted and returns UserManager.UserState.INVALID_USER.
 List<com.atlassian.crowd.embedded.api.Directory> getWritableDirectories()
          Returns an ordered list of directories that have "read-write" permission.
 boolean hasGroupWritableDirectory()
          Returns true if any of the directories have permission to update groups.
 boolean hasPasswordWritableDirectory()
          Returns true if any of the directories have permission to update user passwords, false if otherwise.
 boolean hasWritableDirectory()
          Returns true if at least one User Directory has "read-write" permission.
 boolean isUserExisting(ApplicationUser user)
          Checks if given user is existing user
 void updateUser(ApplicationUser user)
          Updates the ApplicationUser.
 void updateUser(com.atlassian.crowd.embedded.api.User user)
          Updates the User.
 

Method Detail

getTotalUserCount

int getTotalUserCount()
Returns the total number of users defined in JIRA, regardless of whether they are active or not.

Returns:
the total number of users defined in JIRA
Since:
v4.0

getAllUsers

@Nonnull
Set<com.atlassian.crowd.embedded.api.User> getAllUsers()
Returns all users defined in JIRA, regardless of whether they are active or not.

Returns:
the set of all users
Since:
v4.0

getUsers

@Nonnull
Collection<com.atlassian.crowd.embedded.api.User> getUsers()
Returns all users defined in JIRA, regardless of whether they are active or not.

Legacy synonym for getAllUsers().

Returns:
the collection of all users
Since:
v4.3
See Also:
getAllUsers()

getAllApplicationUsers

@Nonnull
Collection<ApplicationUser> getAllApplicationUsers()
Returns all users defined in JIRA, regardless of whether they are active or not.

Returns:
the set of all users
Since:
v6.0

getUser

com.atlassian.crowd.embedded.api.User getUser(@Nullable
                                              String userName)
Deprecated. Use getUserByKey(String) or getUserByName(String) instead. Since v6.0.

Returns a User based on user name.

Parameters:
userName - the user name of the user
Returns:
the User object, or null if the user cannot be found including null userName.
Since:
v4.0

getUserObject

com.atlassian.crowd.embedded.api.User getUserObject(@Nullable
                                                    String userName)
Deprecated. Use getUserByKey(String) or getUserByName(String) instead. Since v6.0.

Returns a User based on user name.

Parameters:
userName - the user name of the user
Returns:
the User object, or null if the user cannot be found including null userName.
Since:
v4.3

getUserByKey

@Nullable
ApplicationUser getUserByKey(@Nullable
                                      String userKey)
Returns an ApplicationUser based on user key.

Parameters:
userKey - the key of the user
Returns:
the ApplicationUser object
Since:
v5.1.1

getUserByName

@Nullable
ApplicationUser getUserByName(@Nullable
                                       String userName)
Returns an ApplicationUser based on user name.

Parameters:
userName - the user name of the user
Returns:
the ApplicationUser object
Throws:
IllegalStateException - if the CrowdService is able to resolve userName to a User, but the UserKeyService does not have a key mapped for it. This is not a valid configuration.
Since:
v5.1.1

getUserByKeyEvenWhenUnknown

@Nullable
ApplicationUser getUserByKeyEvenWhenUnknown(@Nullable
                                                     String userKey)
Returns an ApplicationUser based on user key.

If you want to check if given user is known user - please use isUserExisting(com.atlassian.jira.user.ApplicationUser)

Parameters:
userKey - the key of the user
Returns:
the ApplicationUser object, or proxy unknown immutable ApplicationUser object (null iff the key is null).
Since:
v6.0

getUserByNameEvenWhenUnknown

@Nullable
ApplicationUser getUserByNameEvenWhenUnknown(@Nullable
                                                      String userName)
Returns an ApplicationUser based on user name.

If you want to check if given user is known user - please use isUserExisting(com.atlassian.jira.user.ApplicationUser)

Parameters:
userName - the user name of the user
Returns:
the ApplicationUser object, or proxy unknown immutable ApplicationUser object (null iff the username is null).
Throws:
IllegalStateException - if the CrowdService is able to resolve userName to a User, but the UserKeyService does not have a key mapped for it. This is not a valid configuration.
Since:
v6.0

findUserInDirectory

@Nullable
com.atlassian.crowd.embedded.api.User findUserInDirectory(@Nullable
                                                                   String userName,
                                                                   Long directoryId)
Returns a User based on user name and directoryId

Parameters:
userName - the user name of the user
directoryId - the Directory to look in
Returns:
the User object, or null if the user cannot be found including null userName.
Since:
v4.3.2

getUserEvenWhenUnknown

@Nullable
com.atlassian.crowd.embedded.api.User getUserEvenWhenUnknown(@Nullable
                                                                      String userName)
Deprecated. Use getUserByKeyEvenWhenUnknown(String) or getUserByNameEvenWhenUnknown(String) instead. Since v6.0.

Returns a User based on user name.

If a null username is passed, then a null User object is returned, but it is guaranteed to return a non-null User in all other cases.
If the username is not null, but the User is not found then a proxy unknown immutable User object is returned.

Parameters:
userName - the user name of the user
Returns:
the User object, or proxy unknown immutable User object (null iff the username is null).
Since:
v4.3

canUpdateUser

boolean canUpdateUser(@Nullable
                      com.atlassian.crowd.embedded.api.User user)
Deprecated. Use canUpdateUser(ApplicationUser) instead. Since v6.0.

Test if this user can be updated, i.e. is in a writable directory. This relies upon the local directory configuration and does not guarantee that the actual remote directory, e.g. the remote LDAP directory, will actually allow the user to be updated.

If the "External user management" setting is on, then you cannot update the user.

Parameters:
user - The user to update.
Returns:
true if the user is not null and can be updated.

canUpdateUser

boolean canUpdateUser(@Nullable
                      ApplicationUser user)
Test if this user can be updated, i.e. is in a writable directory. This relies upon the local directory configuration and does not guarantee that the actual remote directory, e.g. the remote LDAP directory, will actually allow the user to be updated.

If the "External user management" setting is on, then you cannot update the user.

Parameters:
user - The user to update.
Returns:
true if the user is not null and can be updated.

canRenameUser

boolean canRenameUser(@Nullable
                      ApplicationUser user)
Test if this user can be renamed. In addition to the constraints of canUpdateUser(ApplicationUser), renaming a user is only allowed when:

  1. The user is in either an INTERNAL or DELEGATING user directory; AND
  2. Either JIRA is not configured as a crowd server, or APKeys.JIRA_OPTION_USER_CROWD_ALLOW_RENAME is enabled to bypass this check.

Parameters:
user - The user to rename.
Returns:
true if the user is not null and can be renamed.
Since:
v6.0

updateUser

void updateUser(com.atlassian.crowd.embedded.api.User user)
Updates the User. The user must have non-null names and email address.

Parameters:
user - The user to update.
Throws:
com.atlassian.crowd.exception.runtime.UserNotFoundException - If the supplied user does not exist in the directory.
com.atlassian.crowd.exception.runtime.OperationFailedException - If the underlying directory implementation failed to execute the operation.
IllegalArgumentException - If something is wrong with the provided user object
Since:
v5.0

updateUser

void updateUser(ApplicationUser user)
Updates the ApplicationUser. The user must have non-null names and email address. If the user's name does not match the name that is currently associated with the key, then this is implicitly treated as a request to rename the user.

Parameters:
user - The user to update.
Throws:
com.atlassian.crowd.exception.runtime.UserNotFoundException - If the supplied user does not exist in the directory.
com.atlassian.crowd.exception.runtime.OperationFailedException - If the underlying directory implementation failed to execute the operation.
IllegalArgumentException - If something is wrong with the provided user object
Since:
v6.0

canUpdateUserPassword

boolean canUpdateUserPassword(@Nullable
                              com.atlassian.crowd.embedded.api.User user)
Test if this user's password can be updated, i.e. is in a writable directory which is not a Delegated LDAP directory. This relies upon the local directory configuration and does not guarantee that the actual remote directory, e.g. the remote LDAP directory, will actually allow the user to be updated.

If the "External user management", or "External password management" setting is on, then you cannot update the password.

Parameters:
user - The user to update.
Returns:
true if the user is not null and the user's password can be updated.

canUpdateGroupMembershipForUser

boolean canUpdateGroupMembershipForUser(com.atlassian.crowd.embedded.api.User user)
Test if this user's group membership can be updated, i.e. is in a writable directory or a directory with Local Group support. This relies upon the local directory configuration and does not guarantee that the actual remote directory, e.g. the remote LDAP directory, will actually allow the user membership to be updated.

Parameters:
user - The user to update.
Returns:
true if the user is not null and can be updated.

getAllGroups

@IncompatibleReturnType(since="5.0",
                        was="java.util.Set")
Set<com.atlassian.crowd.embedded.api.Group> getAllGroups()
Returns all groups defined in JIRA.

Warning: previous incarnations of this method returned com.opensymphony.user.User. This class has now been removed from the JIRA API, meaning that the 5.0 version is not binary or source compatible with earlier versions.

Returns:
the set of all groups
Since:
v4.0

getGroups

Collection<com.atlassian.crowd.embedded.api.Group> getGroups()
Returns all groups defined in JIRA.

Legacy synonym for getAllGroups().

Returns:
the set of all groups
Since:
v4.3
See Also:
getAllGroups()

getGroup

@IncompatibleReturnType(since="5.0",
                        was="com.opensymphony.user.User")
com.atlassian.crowd.embedded.api.Group getGroup(@Nullable
                                                                               String groupName)
Returns a Group based on user name.

Warning: previous incarnations of this method returned com.opensymphony.user.User. This class has now been removed from the JIRA API, meaning that the 5.0 version is not binary or source compatible with earlier versions.

Parameters:
groupName - the user name of the group
Returns:
the Group object, or null if the group cannot be found including null groupName.
Since:
v4.0

getGroupObject

com.atlassian.crowd.embedded.api.Group getGroupObject(@Nullable
                                                      String groupName)
Returns a Group based on user name.

Legacy synonym for getGroup(String).

Parameters:
groupName - the user name of the group
Returns:
the Group object, or null if the group cannot be found including null groupName.
Since:
v4.3
See Also:
getGroup(String)

getWritableDirectories

@Nonnull
List<com.atlassian.crowd.embedded.api.Directory> getWritableDirectories()
Returns an ordered list of directories that have "read-write" permission. ie those directories that we can add a user to.

Returns:
an ordered list of directories that have "read-write" permission.
See Also:
hasWritableDirectory()

hasWritableDirectory

boolean hasWritableDirectory()
Returns true if at least one User Directory has "read-write" permission.

This is equivalent to:
  getWritableDirectories().size() > 0

Returns:
true if at least one User Directory has "read-write" permission.
See Also:
getWritableDirectories(), hasPasswordWritableDirectory(), hasGroupWritableDirectory()

hasPasswordWritableDirectory

boolean hasPasswordWritableDirectory()
Returns true if any of the directories have permission to update user passwords, false if otherwise.

Note that this is not quite the same as hasWritableDirectory() because of "Internal with LDAP Authentication" directories. These directories are generally read-write but passwords are read-only.

Returns:
true if any of the directories have permission to update user passwords, false if otherwise.
See Also:
hasWritableDirectory()

hasGroupWritableDirectory

boolean hasGroupWritableDirectory()
Returns true if any of the directories have permission to update groups.

Note that this will not always return the same results as hasWritableDirectory() because you can set "Read-Only with Local Groups" to LDAP directories. These directories are generally read-only but you can create local gropus and assign users to them.

Returns:
true if any of the directories have permission to update groups, false if otherwise.
See Also:
hasWritableDirectory()

canDirectoryUpdateUserPassword

boolean canDirectoryUpdateUserPassword(@Nullable
                                       com.atlassian.crowd.embedded.api.Directory directory)
Checks if the given directory is able to update user passwords.

Parameters:
directory - the Directory
Returns:
true if the directory can update user passwords, false if otherwise.

getDirectory

com.atlassian.crowd.embedded.api.Directory getDirectory(Long directoryId)

isUserExisting

boolean isUserExisting(@Nullable
                       ApplicationUser user)
Checks if given user is existing user

Parameters:
user - possible existing user object - i.e. recieved from getUserByKeyEvenWhenUnknown(String) or getUserByNameEvenWhenUnknown(String)
Returns:
true if given user is real user, false otherwise (also when given object is null)
See Also:
getUserByKeyEvenWhenUnknown(String), getUserByNameEvenWhenUnknown(String)

getUserState

@ExperimentalApi
@Nonnull
UserManager.UserState getUserState(@Nonnull
                                                           String username,
                                                           long directoryId)
Checks for the existence of this user across all directories to determine whether or not the user exists in the specified directory and whether or not it is shadowing or shadowed by a user with the same username in another active user directory.

Parameters:
username - the username to check
directoryId - the directory ID of the user directory that the user came from
Returns:
the shadowing state of the specified user

getUserState

@ExperimentalApi
@Nonnull
UserManager.UserState getUserState(@Nullable
                                                           com.atlassian.crowd.embedded.api.User user)
This convenience method is equivalent to getUserState(user.getName(), user.getDirectoryId()) except that a null user is permitted and returns UserManager.UserState.INVALID_USER.

Parameters:
user - the user to check
Returns:
the shadowing state of the specified user

getUserState

@ExperimentalApi
@Nonnull
UserManager.UserState getUserState(@Nullable
                                                           ApplicationUser user)
This convenience method is equivalent to getUserState(user.getUsername(), user.getDirectoryId()) except that a null user is permitted and returns UserManager.UserState.INVALID_USER.

Parameters:
user - the user to check
Returns:
the shadowing state of the specified user


Copyright © 2002-2014 Atlassian. All Rights Reserved.