Деактивировать неактивных пользователей в Confluence - malikovalibek/groovyForJira GitHub Wiki

Обзор Поддерживайте свой экземпляр Confluence, деактивируя пользователей в зависимости от времени, прошедшего с момента их последнего входа в систему.

пример Как администратор, я отвечаю за ведение точного и актуального списка лиц, использующих инструменты Atlassian, чтобы не платить пользователям, которые не получают пользу от продуктов. Я хочу деактивировать всех пользователей, которые не входили в систему последние три месяца. Этот сценарий позволяет мне найти всех пользователей, которые не входили в систему в течение указанного времени, удалить их из группы confluence-users и добавить их в деактивированную группу пользователей, тем самым уменьшив количество лицензированных пользователей.

Хорошо знать В этом примере мы рассматриваем как успешные, так и неудачные попытки входа в систему, хотя вы можете настроить это в соответствии со своим вариантом использования. Требования Слияние Скопление (6,6 - 6,15)

import com.atlassian.confluence.security.login.LoginManager import com.atlassian.confluence.user.UserAccessor import com.atlassian.sal.api.component.ComponentLocator import com.atlassian.user.GroupManager

import java.time.LocalDateTime import java.time.ZoneId

def groupManager = ComponentLocator.getComponent(GroupManager) def loginManager = ComponentLocator.getComponent(LoginManager) def userAccessor = ComponentLocator.getComponent(UserAccessor)

def inactiveGroup = groupManager.getGroup("Deactivated users") ?: groupManager.createGroup("Deactivated users")

def confluenceUsersGroup = groupManager.getGroup('confluence-users') def users = groupManager.getMemberNames(confluenceUsersGroup) users.each { userName -> def user = userAccessor.getUserByName(userName) if (user) { log.info "Inspecting $user.name to determine whether user should be deactivated" def loginInfo = loginManager.getLoginInfo(user)

    def lastSuccessfulDate = convertDate(loginInfo?.lastSuccessfulLoginDate)
    def lastFailedDate = convertDate(loginInfo?.lastFailedLoginDate)
    def threeMonthsAgo = LocalDateTime.now().minusMonths(3)

    if (lastFailedDate?.isBefore(threeMonthsAgo) && lastSuccessfulDate?.isBefore(threeMonthsAgo)) {
        log.info "User ${user.name} last successuflly logged in ${lastSuccessfulDate} and last failed to login on ${lastFailedDate}"
        log.info "Removing user ${user.name} from confluence-users"

        groupManager.removeMembership(confluenceUsersGroup, user)

        log.info "Add user ${user.name} to the group: 'Deactivated Users'"
        groupManager.addMembership(inactiveGroup, user)

        log.info "Deactivating user ${user.name}"
        userAccessor.deactivateUser(user)
    }
}

}

/**