Class DefaultUserAccessor

    • Method Detail

      • getBulkFetchUsersBatchSize

        public static int getBulkFetchUsersBatchSize()
      • isUserRemovable

        public boolean isUserRemovable​(com.atlassian.user.User user)
                                throws com.atlassian.user.EntityException
        Specified by:
        isUserRemovable in interface UserAccessor
        Throws:
        com.atlassian.user.EntityException
      • getUserByName

        public @Nullable ConfluenceUser getUserByName​(String name)
        Description copied from interface: UserAccessor
        Returns the ConfluenceUser with the supplied user name or null if the user doesn't exist or the supplied name is null.

        Note that user name lookups are case-insensitive, so the user you get back may not have exactly the same name as the name passed to this method.

        Specified by:
        getUserByName in interface ConfluenceUserResolver
        Specified by:
        getUserByName in interface UserAccessor
        Parameters:
        name - the user name of the user
        Returns:
        the ConfluenceUser with the supplied user name or null.
      • isUnsyncedUser

        public boolean isUnsyncedUser​(ConfluenceUser user)
        Description copied from interface: UserAccessorInternal
        Checks whether or not a user is unsynced
        Specified by:
        isUnsyncedUser in interface UserAccessorInternal
        Parameters:
        user - the user to check
        Returns:
        true if the user is unsynced, false otherwise (even if the user doesn't exist)
      • isCrowdManaged

        public boolean isCrowdManaged​(ConfluenceUser user)
        Description copied from interface: UserAccessorInternal
        Checks whether or not embedded Crowd manages/has knowledge of a given user
        Specified by:
        isCrowdManaged in interface UserAccessorInternal
        Returns:
        true if the user is managed by embedded Crowd, false otherwise (even if the user doesn't exist)
      • exists

        public boolean exists​(String name)
        Description copied from interface: UserAccessor
        Returns true if a user exists with the given username. This method is significantly faster than getUser(name) != null.
        Specified by:
        exists in interface UserAccessor
        Specified by:
        exists in interface UserExistenceChecker
        Parameters:
        name - username of the user
        Returns:
        true if a user exists with the given username
      • saveUser

        public void saveUser​(com.atlassian.user.User user)
        Description copied from interface: UserAccessor
        Persists changes made to a user (e.g. changing email or full name).
        Specified by:
        saveUser in interface UserAccessor
      • addGroup

        public com.atlassian.user.Group addGroup​(String groupname)
        Description copied from interface: UserAccessor
        Creates a group with the specified name and returns it.
        Specified by:
        addGroup in interface UserAccessor
      • createGroup

        public com.atlassian.user.Group createGroup​(String groupname)
        Adds a group with the specified name.
        Specified by:
        createGroup in interface UserAccessor
        Returns:
        the group created
        Throws:
        InsufficientPrivilegeException - if the current user does not have permission to add this group
      • searchUnsyncedUsers

        public com.atlassian.user.search.page.Pager<ConfluenceUser> searchUnsyncedUsers​(String searchParam)
        Description copied from interface: UserAccessorInternal
        Returns a list of all users for the given username search parameter that are unsynced: a user whose account has been disconnected from an external directory, i.e. a user who has a known mapping but no backing user, but who has not yet been deleted from the application.
        Specified by:
        searchUnsyncedUsers in interface UserAccessorInternal
        Parameters:
        searchParam - the username parameter to search by
        Returns:
        a pager of all unknown / unsynced users
      • isDeactivated

        public boolean isDeactivated​(String username)
        Description copied from interface: UserAccessor
        Returns true if the user with the specified username exists and is unable to log in, otherwise false. Returns false if the username is null.
        Specified by:
        isDeactivated in interface UserAccessor
        Specified by:
        isDeactivated in interface UserAccessor
        Returns:
        true if the user with the specified username exists and is unable to log in, otherwise false.
      • isDeactivated

        public boolean isDeactivated​(com.atlassian.user.User user)
        Description copied from interface: UserAccessor
        Returns true if the user exists and is unable to log in, otherwise false. Returns false if the user is null.
        Specified by:
        isDeactivated in interface UserAccessor
        Specified by:
        isDeactivated in interface UserAccessor
        Returns:
        true if the user exists and is unable to log in, otherwise false.
      • deactivateUser

        public void deactivateUser​(com.atlassian.user.User user)
        Description copied from interface: UserAccessor
        Deactivate the specified user, which prevents them logging in. Does nothing if the user is already deactivated.
        Specified by:
        deactivateUser in interface UserAccessor
      • reactivateUser

        public void reactivateUser​(com.atlassian.user.User user)
        Description copied from interface: UserAccessor
        Marks the specified user as active, which allows them to log in. Does nothing if the user is already active.
        Specified by:
        reactivateUser in interface UserAccessor
      • isReadOnly

        public boolean isReadOnly​(com.atlassian.user.User user)
        Description copied from interface: UserAccessor
        Returns true if the user cannot be modified or removed. However, returning false does necessarily confirm that the user can be modified or removed. Depending on the user management configuration, it is not always possible for Confluence to determine whether a user is read-only.

        In an internal-only user management configuration, this method always returns false.

        Specified by:
        isReadOnly in interface UserAccessor
      • isReadOnly

        public boolean isReadOnly​(com.atlassian.user.Group group)
        Description copied from interface: UserAccessor
        Returns true if the group cannot be modified or removed. However, returning false does necessarily confirm that the group can be modified or removed. Depending on the user management configuration, it is not always possible for Confluence to determine whether a group is read-only. Indeed, groups can span across multiple directories with different access control mechanisms, so it may be possible to modify certain memberships of a group but not others.

        In an internal-only user management configuration, this method always returns false.

        Specified by:
        isReadOnly in interface UserAccessor
      • setUserProfilePicture

        public void setUserProfilePicture​(com.atlassian.user.User user,
                                          Attachment attachment)
        Description copied from interface: UserAccessor
        Set the user profile picture to the given attachment. The attachment should be an image attached to that user's personal information, of size 48x48. No check is performed in this method that the image is valid or the right size.
        Specified by:
        setUserProfilePicture in interface UserAccessor
        Parameters:
        user - the user to set a profile picture for
        attachment - the attachment containing the user's profile picture
      • setUserProfilePicture

        public void setUserProfilePicture​(com.atlassian.user.User user,
                                          String imagePath)
        Description copied from interface: UserAccessor
        Set the user profile picture to a built-in image. The path should be the web-application-root-relative path to the image to be used as the user's profile picture and should be size 48x48. Neither are checked by the implementation
        Specified by:
        setUserProfilePicture in interface UserAccessor
        Parameters:
        user - the user to set a profile picture for
        imagePath - the image path to that picture.
      • isSuperUser

        public boolean isSuperUser​(com.atlassian.user.User user)
        Description copied from interface: UserAccessor
        Return true is the user is a super user. This should not be used to infer any special permission exempt behaviours. In general, relying on group memberships for special behaviour is a bad idea. Permission checks in the application like PermissionManager.hasPermission(User, Permission, Object) already take care of super-user permission exempt checks and more. If checking for exemption from any permission checks is still required explicitly, use PermissionManager.isConfluenceAdministrator(User) instead. It also takes care of more checks than a group-membership for permission exemption. e.g. Checking exemptions before applying permission related query and/or filter, see AlphabeticalListPagesAction.getFilter(ConfluenceUser)
        Specified by:
        isSuperUser in interface UserAccessor
        Parameters:
        user - the user to check for (the null user will always return false)
        Returns:
        true if the user is super-user, false otherwise.
      • getGroupNames

        public List<String> getGroupNames​(com.atlassian.user.User user)
        Description copied from interface: UserAccessor
        Gets the list of group names representing the groups the passed in user is a member of.
        Specified by:
        getGroupNames in interface UserAccessor
        Parameters:
        user - the user to perform the membership check for
        Returns:
        a list of group names
      • getGroupNamesForUserName

        public List<String> getGroupNamesForUserName​(String userName)
        Description copied from interface: UserAccessor
        Gets the list of group names representing the groups the passed in user is a member of.
        Specified by:
        getGroupNamesForUserName in interface UserAccessor
        Parameters:
        userName - the name of the user to perform the membership check for
        Returns:
        a list of group names
      • getGroup

        public com.atlassian.user.Group getGroup​(String name)
        Description copied from interface: UserAccessor
        Returns the group with the specified name, or null if the user doesn't exist or the name is null.
        Specified by:
        getGroup in interface GroupResolver
        Specified by:
        getGroup in interface UserAccessor
      • getMemberNames

        public com.atlassian.user.search.page.Pager<String> getMemberNames​(com.atlassian.user.Group group)
        Description copied from interface: UserAccessor
        Returns a pager containing the usernames of users who are members of the specified group (either directly or as a member of a nested group). Returns an empty pager if the group has no members or doesn't exist.
        Specified by:
        getMemberNames in interface GroupMembershipAccessor
        Specified by:
        getMemberNames in interface UserAccessor
      • getMembers

        public Iterable<ConfluenceUser> getMembers​(com.atlassian.user.Group group)
        Description copied from interface: UserAccessor
        Returns users who are members of the specified group (either directly or as a member of a nested group). Returns an empty iterable if the group is null or the group doesn't exist.

        Elements are generated on demand and it is recommended to fetch only as many elements as are needed.

        Specified by:
        getMembers in interface UserAccessor
        Parameters:
        group - group to get members for
        Returns:
        users who are members of the specified group
      • getWriteableGroups

        public List<com.atlassian.user.Group> getWriteableGroups()
        Description copied from interface: UserAccessor
        Gets all editable groups. That is, returns any groups that belong to read/write repositories. Groups in readonly repositories that are ReadOnly are not returned.
        Specified by:
        getWriteableGroups in interface UserAccessor
        Returns:
        list of Groups that can be edited.
      • getPropertySet

        @Transactional(readOnly=true)
        public com.opensymphony.module.propertyset.PropertySet getPropertySet​(ConfluenceUser user)
        Specified by:
        getPropertySet in interface UserAccessor
        Returns:
        the property set for the supplied user
      • findUsersAsList

        public List<com.atlassian.user.User> findUsersAsList​(com.atlassian.user.search.query.Query<com.atlassian.user.User> search)
                                                      throws com.atlassian.user.EntityException
        Specified by:
        findUsersAsList in interface UserAccessor
        Throws:
        com.atlassian.user.EntityException
      • findUsers

        public com.atlassian.user.search.SearchResult<com.atlassian.user.User> findUsers​(com.atlassian.user.search.query.Query<com.atlassian.user.User> query)
                                                                                  throws com.atlassian.user.EntityException
        Specified by:
        findUsers in interface com.atlassian.user.search.query.EntityQueryParser
        Specified by:
        findUsers in interface UserAccessor
        Throws:
        com.atlassian.user.EntityException
      • renameUser

        public ConfluenceUser renameUser​(ConfluenceUser user,
                                         String newUsername)
                                  throws com.atlassian.user.EntityException
        Description copied from interface: UserAccessor
        Updates the username of the given user.
        Specified by:
        renameUser in interface UserAccessor
        Parameters:
        user - user to rename
        newUsername - username to use for renaming
        Returns:
        renamed user
        Throws:
        com.atlassian.user.impl.EntityValidationException - if the new username does not meet the username requirements
        com.atlassian.user.EntityException - if the operation is not allowed for the user
        com.atlassian.user.impl.DuplicateEntityException - if the username is already taken
      • getGroupsByGroupNames

        public List<com.atlassian.user.Group> getGroupsByGroupNames​(List<String> groupNames)
        Description copied from interface: UserAccessor
        Returns a list of Group objects where the names match that of the provided list of group names. If no names are provided an empty list will be returned.
        Specified by:
        getGroupsByGroupNames in interface UserAccessor
        Parameters:
        groupNames - the list group names for which the matching Group objects must be returned
        Returns:
        the list of resolved groups
      • getUsers

        public PageResponse<ConfluenceUser> getUsers​(LimitedRequest limitedRequest)
        Description copied from interface: ConfluenceUserResolver
        Get fully backed (active or disabled) Confluence Users. When both embedded Crowd tables and Confluence user tables have the same user, that user can be retrieved.

        This means, when embedded crowd has the user, but Confluence does not (unsynced, externally deleted, shadowed), the user is not retrievable.

        This means, when embedded crowd has a user, but Confluence does not, the user is not retrievable.
        Specified by:
        getUsers in interface ConfluenceUserResolver
        Parameters:
        limitedRequest - the limited request for ConfluenceUser
        Returns:
        a non-null page response of ConfluenceUser.
      • getUsersByUserKeys

        public List<ConfluenceUser> getUsersByUserKeys​(List<com.atlassian.sal.api.user.UserKey> userKeys)
        Description copied from interface: UserAccessor
        Returns a list of ConfluenceUser with the supplied UserKeys or an empty list if the users do not exist. This method returns ConfluenceUser instances with pre-populated backing EmbeddedCrowdUser.
        Specified by:
        getUsersByUserKeys in interface ConfluenceUserResolver
        Specified by:
        getUsersByUserKeys in interface UserAccessor
        Parameters:
        userKeys - the user keys
        Returns:
        the list of ConfluenceUsers with UserKeys
      • countUnsyncedUsers

        public int countUnsyncedUsers()
        Description copied from interface: UserAccessor
        Get a count of all unsynced users in Confluence. An unsynced user is a user that was managed in an external directory but has since been removed from the directory without being deleted in Confluence.
        Specified by:
        countUnsyncedUsers in interface UserAccessor
        Returns:
        the total number of all unsynced users.
      • alterPassword

        public void alterPassword​(com.atlassian.user.User user,
                                  String plainTextPassword,
                                  String token)
                           throws com.atlassian.user.EntityException
        Specified by:
        alterPassword in interface UserAccessor
        Throws:
        com.atlassian.user.EntityException
      • alterPassword

        public void alterPassword​(com.atlassian.user.User user,
                                  String plainTextPassword)
                           throws com.atlassian.user.EntityException
        Specified by:
        alterPassword in interface UserAccessor
        Throws:
        com.atlassian.user.EntityException