Деактивировать бездействующих пользователей - malikovalibek/groovyForJira GitHub Wiki
Обзор Запуск этого сценария из консоли сценариев деактивирует пользователей, которые никогда не входили в систему.
пример Я хочу деактивировать в моем экземпляре Jira всех пользователей, которые никогда не входили в систему, чтобы поддерживать порядок в моем экземпляре и контролировать расходы на лицензию. Запуск следующего сценария из консоли сценариев деактивирует пользователей, которые никогда не входили в систему, сохраняя порядок в вашем экземпляре и контролируя расходы на лицензию.
Требования JiraJira (7,7 - 8,6)
import com.atlassian.crowd.manager.directory.DirectoryManager import com.atlassian.jira.bc.JiraServiceContextImpl import com.atlassian.jira.bc.user.UserService import com.atlassian.jira.bc.user.search.UserSearchParams import com.atlassian.jira.bc.user.search.UserSearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.security.login.LoginManager import com.atlassian.jira.user.ApplicationUser
import static com.onresolve.scriptrunner.canned.util.OutputFormatter.markupBuilder
final String directoryToCheck = "JIRA Internal Directory"
def loginManager = ComponentAccessor.getComponent(LoginManager) def directoryManager = ComponentAccessor.getComponent(DirectoryManager)
UserSearchParams.Builder paramBuilder = UserSearchParams.builder() .allowEmptyQuery(true) .includeActive(true) .includeInactive(false)
JiraServiceContextImpl jiraServiceContext = new JiraServiceContextImpl(ComponentAccessor.jiraAuthenticationContext.loggedInUser)
def allActiveUsers = ComponentAccessor.getComponent(UserSearchService).findUsers(jiraServiceContext, "", paramBuilder.build()) def internalDirectoryId = directoryManager.findAllDirectories()?.find { it.name.toLowerCase() == directoryToCheck.toLowerCase() }?.id
def idleUsers = allActiveUsers.findAll { user -> user.directoryId == internalDirectoryId && !loginManager.getLoginInfo(user.username)?.lastLoginTime }
if (idleUsers) { markupBuilder { p('Follow users deactivated ') { ul { idleUsers.each { user -> deactivateUser(user) }*.username?.each { deactivated -> li(deactivated) } } } } } else { "No Idle users found" }
def deactivateUser(ApplicationUser user) { def userService = ComponentAccessor.getComponent(UserService) def updateUser = userService.newUserBuilder(user).active(false).build() def updateUserValidationResult = userService.validateUpdateUser(updateUser)
if (!updateUserValidationResult.valid) {
log.error "Update of ${user.name} failed. ${updateUserValidationResult.errorCollection}"
return
}
userService.updateUser(updateUserValidationResult)
log.info "${updateUser.name} deactivated"
}