Yes, a simple script using the rename method of Crowd REST API will do. For instance in Groovy:
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
CROWD_SERVER_URL = "http://localhost:8095/crowd"
APPLICATION_NAME = "test"
APPLICATION_PASSWORD = "password"
boolean isEmailAddress(String s){
emailPattern = /[_A-Za-z0-9-]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})/
return s ==~ emailPattern
}
def removeEmailDomainFromUsername(String username){
def url = "${CROWD_SERVER_URL}/rest/usermanagement/1/user/rename?username=${URLEncoder.encode(username)}"
def body = JsonOutput.toJson(["new-name":username.substring(0,username.indexOf('@'))]).getBytes('UTF-8')
def connection = new URL(url).openConnection()
connection.setRequestProperty('Authorization', "Basic ${(APPLICATION_NAME + ':' + APPLICATION_PASSWORD).bytes.encodeBase64().toString()}")
connection.setRequestProperty('Content-Type', 'application/json')
connection.setRequestProperty('Accept', 'application/json')
connection.setRequestMethod('POST')
connection.setDoOutput(true)
connection.getOutputStream().write(body)
if (connection.responseCode.equals(200)){
return true
} else return false
}
def searchAllUsers(){
def url = "${CROWD_SERVER_URL}/rest/usermanagement/1/search?entity-type=user"
def connection = new URL(url).openConnection()
connection.setRequestProperty('Authorization', "Basic ${(APPLICATION_NAME + ':' + APPLICATION_PASSWORD).bytes.encodeBase64().toString()}")
connection.setRequestProperty('Accept', 'application/json')
connection.setRequestMethod('GET')
if (connection.responseCode.equals(200)){
def json = connection.inputStream.withCloseable { inStream ->
new JsonSlurper().parse( inStream as InputStream )
}
return json.users.name
} else return []
}
searchAllUsers().each{ username ->
if (isEmailAddress(username)){
println "${username} is an email address. Trying to remove the domain extension..."
if (removeEmailDomainFromUsername(username)){
println "Success!"
} else{
println "Failed to remove domain extension"
}
} else{
println "${username}: nothing to do here"
}
}
Hope this helps!
Bruno
Hi joe,
Out of interest, wondering how removing the domain from the username helps with GDPR compliance when the username is still it’s own field?
Given a persons name is still PII, my understanding is that all this info would still need to comply with GDPR requirements.
thanks!
CCM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
We use crowd for Confluence and JIRA in a public setting. In JIRA, Usernames are exposed when tagging individuals in comments. To avoid this, we intend to convert email based usernames.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Ah rightio - makes sense!
CCM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Awesome! But I would also like to recommend this one https://gmailbulkemail.com/gmail-bulk-email/ if you want cheap & easy version that enables the user to send mass email without complications.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.