public static UserDto initiator()

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;
  }