@RequirePOST
public HttpResponse doGenerateNewToken(@AncestorInPath User u, @QueryParameter String newTokenName) throws IOException {
if(!hasCurrentUserRightToGenerateNewToken(u)){
return HttpResponses.forbidden();
}
final String tokenName;
if (StringUtils.isBlank(newTokenName)) {
tokenName = String.format("Token created on %s", DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
}else{
tokenName = newTokenName;
}
ApiTokenProperty p = u.getProperty(ApiTokenProperty.class);
if (p == null) {
p = forceNewInstance(u, false);
u.addProperty(p);
}
ApiTokenStore.TokenUuidAndPlainValue tokenUuidAndPlainValue = p.tokenStore.generateNewToken(tokenName);
u.save();
return HttpResponses.okJSON(new HashMap<String, String>() {{
put("tokenUuid", tokenUuidAndPlainValue.tokenUuid);
put("tokenName", tokenName);
put("tokenValue", tokenUuidAndPlainValue.plainValue);
}});
}