Package com.atlassian.crowd.directory
Class InternalDirectory
java.lang.Object
com.atlassian.crowd.directory.AbstractInternalDirectory
com.atlassian.crowd.directory.InternalDirectory
- All Implemented Interfaces:
FastEntityCountProvider,InternalRemoteDirectory,MultiValuesQueriesSupport,RemoteDirectory,Attributes
- Direct Known Subclasses:
InternalDirectoryForDelegation
Internal directory connector.
Stores all entity information to the database used by the Crowd Server.
Note that this implementation is used for an Actual InternalDirectory, and there is a related class
CachingDirectory that does local caching of remote objects.-
Field Summary
Fields inherited from class com.atlassian.crowd.directory.AbstractInternalDirectory
ATTRIBUTE_PASSWORD_COMPLEXITY_MESSAGE, ATTRIBUTE_PASSWORD_EXPIRATION_NOTIFICATION_PERIODS, ATTRIBUTE_PASSWORD_HISTORY_COUNT, ATTRIBUTE_PASSWORD_MAX_ATTEMPTS, ATTRIBUTE_PASSWORD_MAX_CHANGE_TIME, ATTRIBUTE_PASSWORD_MINIMUM_DIGITS, ATTRIBUTE_PASSWORD_MINIMUM_LENGTH, ATTRIBUTE_PASSWORD_MINIMUM_LOWERCASE, ATTRIBUTE_PASSWORD_MINIMUM_RULES_MATCHED, ATTRIBUTE_PASSWORD_MINIMUM_SCORE, ATTRIBUTE_PASSWORD_MINIMUM_SPECIAL_CHARACTERS, ATTRIBUTE_PASSWORD_MINIMUM_UPPERCASE, ATTRIBUTE_PASSWORD_POLICY_PRESET, ATTRIBUTE_PASSWORD_REGEX, ATTRIBUTE_USER_ENCRYPTION_METHOD, attributes, CHARACTER_CLASS_CONSTRAINT_ATTRIBUTES, DESCRIPTIVE_NAME, directoryDao, directoryId, groupDao, internalDirectoryUtils, membershipDao, passwordEncoderFactory, tombstoneDao, userDao -
Constructor Summary
ConstructorsConstructorDescriptionInternalDirectory(InternalDirectoryUtils internalDirectoryUtils, PasswordEncoderFactory passwordEncoderFactory, DirectoryDao directoryDao, UserDao userDao, GroupDao groupDao, MembershipDao membershipDao, TombstoneDao tombstoneDao, PasswordConstraintsLoader passwordConstraints) -
Method Summary
Modifier and TypeMethodDescriptionaddAllGroups(Set<GroupTemplate> groups) addAllUsersToGroup(Set<String> userNames, String groupName) addLocalGroup(GroupTemplate group) addUser(UserTemplate user, PasswordCredential credential) addUser(UserTemplateWithAttributes user, PasswordCredential credential) Adds a user and the following custom attributes: - RemotePrincipalConstants.PASSWORD_LASTCHANGED set to the current time.booleanInternal directories never support local user statuses.protected booleanWhen an InternalDirectory is used as an internal directory, it must manage the values of the external_id column.updateUser(UserTemplate user) Methods inherited from class com.atlassian.crowd.directory.AbstractInternalDirectory
addAllGroupsToGroup, addGroup, addGroupToGroup, addUserToGroup, addUserToGroups, authenticate, calculatePostPasswordUpdateAttributes, countDirectMembersOfGroup, currentPrincipalInvalidPasswordAttempts, encryptedCredential, expireAllPasswords, findGroupByName, findGroupWithAttributesByName, findUserByExternalId, findUserByName, findUserWithAttributesByName, forceRenameUser, getAllUserExternalIds, getAuthoritativeDirectory, getDescriptiveName, getDirectoryId, getEncoder, getGroupCount, getKeys, getMemberships, getPasswordConstraints, getUserAvatarByName, getUserCount, getValue, getValues, isEmpty, isGroupDirectGroupMember, isRolesDisabled, isUserDirectGroupMember, removeAllGroups, removeAllUsers, removeGroup, removeGroupAttributes, removeGroupFromGroup, removeGroupsFromGroup, removeUser, removeUserAttributes, removeUserFromGroup, removeUsersFromGroup, renameGroup, renameUser, requiresPasswordChange, searchGroupRelationships, searchGroupRelationshipsGroupedByName, searchGroups, searchUsers, setAttributes, setDirectoryId, storeGroupAttributes, storeUserAttributes, supportsInactiveAccounts, supportsNestedGroups, supportsPasswordExpiration, supportsSettingEncryptedCredential, testConnection, updateGroup, updateUserCredential, userAuthenticatedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.atlassian.crowd.directory.RemoteDirectory
getLocallyFilteredGroupNames, updateUserFromRemoteDirectory
-
Constructor Details
-
InternalDirectory
public InternalDirectory(InternalDirectoryUtils internalDirectoryUtils, PasswordEncoderFactory passwordEncoderFactory, DirectoryDao directoryDao, UserDao userDao, GroupDao groupDao, MembershipDao membershipDao, TombstoneDao tombstoneDao, PasswordConstraintsLoader passwordConstraints)
-
-
Method Details
-
addUser
public User addUser(UserTemplate user, PasswordCredential credential) throws InvalidCredentialException, InvalidUserException, UserAlreadyExistsException, OperationFailedException -
addUser
public UserWithAttributes addUser(UserTemplateWithAttributes user, PasswordCredential credential) throws InvalidCredentialException, InvalidUserException, UserAlreadyExistsException, OperationFailedException Adds a user and the following custom attributes: - RemotePrincipalConstants.PASSWORD_LASTCHANGED set to the current time. - RemotePrincipalConstants.REQUIRES_PASSWORD_CHANGE set to false.- Specified by:
addUserin interfaceRemoteDirectory- Specified by:
addUserin classAbstractInternalDirectory- Parameters:
user- template of the user to add.credential- password. May be null, since JIRA creates a user in two steps- Returns:
- added user.
- Throws:
InvalidCredentialException- the password does not match the regular expression standard defined by the directory.InvalidUserExceptionUserAlreadyExistsExceptionOperationFailedException
-
addLocalGroup
- Specified by:
addLocalGroupin interfaceInternalRemoteDirectory- Specified by:
addLocalGroupin classAbstractInternalDirectory- Throws:
OperationFailedException
-
addAllUsers
-
addAllGroups
-
addAllUsersToGroup
public BatchResult<String> addAllUsersToGroup(Set<String> userNames, String groupName) throws GroupNotFoundException - Throws:
GroupNotFoundException
-
updateUser
-
isLocalUserStatusEnabled
public boolean isLocalUserStatusEnabled()Internal directories never support local user statuses.- Returns:
- false
-
isUserExternalIdReadOnly
protected boolean isUserExternalIdReadOnly()When an InternalDirectory is used as an internal directory, it must manage the values of the external_id column. However, when it is used as the front-end in a delegating directory, the values of the column are dictated by the remote LDAP directory and are subject to change. This method makes it possible to switch between these two behaviours.- Returns:
truein this class because it manages the external_id values and does not allow mutability.
-