in src/main/java/com/epam/digital/data/platform/el/juel/InitiatorJuelFunction.java [57:90]
public static UserDto initiator() {
final var variableAccessor = getVariableAccessor();
UserDto storedObject = variableAccessor.getVariable(INITIATOR_OBJ_VAR_NAME);
if (storedObject != null) {
return storedObject;
}
final var initiatorVariablesReadAccessor = initiatorVariablesReadAccessor();
var initiatorAccessToken = initiatorVariablesReadAccessor.getInitiatorAccessToken();
String token = null;
String userName = null;
JwtClaimsDto claims = null;
if(initiatorAccessToken.isPresent()) {
claims = initiatorAccessToken.map(AbstractApplicationContextAwareJuelFunction::parseClaims).orElse(null);
token = initiatorAccessToken.get();
userName = initiatorVariablesReadAccessor.getInitiatorName().orElse(null);
} else {
final var execution = getExecution();
String initialElementId = execution.getProcessDefinition().getInitial().getId();
var formData = getFormDataFromStorage(initialElementId, execution);
if(formData.isPresent()) {
token = formData.get().getAccessToken();
claims = AbstractSubmissionJuelFunction.parseClaims(token);
userName = claims.getPreferredUsername();
}
}
UserDto userDto = new UserDto(userName, token, claims);
variableAccessor.removeVariable(INITIATOR_OBJ_VAR_NAME);
variableAccessor.setVariableTransient(INITIATOR_OBJ_VAR_NAME, userDto);
return userDto;
}