You're enrolled in our new beta rewards program. Join our group to get the inside scoop and share your feedback.
Join groupJoin the community to find out what other Atlassian users are discussing, debating and creating.
Hello
I have a script that desactivate all users that are inactive, it works fine, now I need to desactive all users that never been logged in
this is my script
import com.atlassian.crowd.embedded.api.CrowdService
import com.atlassian.crowd.embedded.api.UserWithAttributes
import com.atlassian.crowd.embedded.impl.ImmutableUser
import com.atlassian.jira.bc.user.UserService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.ApplicationUsers
import com.atlassian.jira.user.util.UserUtil
import com.atlassian.jira.bc.security.login.LoginService
//
def loginManager = ComponentAccessor.getComponent(LoginService)
//
int numOfDays = 100 // Number of days the user was not logged in
Date dateLimit = (new Date())- numOfDays
UserUtil userUtil = ComponentAccessor.userUtil
CrowdService crowdService = ComponentAccessor.crowdService
UserService userService = ComponentAccessor.getComponent(UserService)
ApplicationUser updateUser
UserService.UpdateUserValidationResult updateUserValidationResult
long count = 0
def list = ['115058']
def userIsInList = false
//
//
userUtil.getUsers().findAll{it.isActive() || !loginManager.getLoginInfo(it.username).lastLoginTime}.each {
UserWithAttributes user = crowdService.getUserWithAttributes(it.getName())
String lastLoginMillis = user.getValue('login.lastLoginMillis')
if (lastLoginMillis?.isNumber()) {
Date d = new Date(Long.parseLong(lastLoginMillis))
if (d.before(dateLimit) && !(user.name in list) ) {
updateUser = ApplicationUsers.from(ImmutableUser.newUser(user).active(false).toUser())
updateUserValidationResult = userService.validateUpdateUser(updateUser)
//if (count < 10) {
if (updateUserValidationResult.isValid()) {
//userService.updateUser(updateUserValidationResult)
//log.info "Deactivated ${updateUser.name}"
count++
log.info "this one --> ${user.displayName}"
} else {
log.info "Update of ${user.name} failed: ${updateUserValidationResult.getErrorCollection().getErrors().entrySet().join(',')}"
}
//}
}
}
}
"${count} users deactivated.\n"
I think !loginManager.getLoginInfo(it.username).lastLoginTime is a wrong condition
have you any idea please?
Thank you
Hi @Firas hammami ,
according to this script the condition
!loginManager.getLoginInfo(it.username).lastLoginTime
looks ok.
I think the problem is you are later checking last login, but these users don't have any.
So these users won't get through the condition:
if (lastLoginMillis?.isNumber()) {
Hi
thank you for your respense, I tried to put
!loginManager.getLoginInfo(it.username).lastLoginTime
outside the condition
if (lastLoginMillis?.isNumber())
I dont't have any output
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Firas hammami ,
please, what do you mean by you don't have any output?
What I was trying to say is that you need to deactivate two different groups of users.
How does your code looks like now?
Thank you.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Connect with like-minded Atlassian users at free events near you!
Find an eventConnect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.
Host an eventYou're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.