- public Mono<LTILaunchRequest<LTILaunchRequestSettings>> handlePlatformAuthenticationResponse(AuthenticationResponse authenticationResponse) {
- IssuerResponse issuerResponse= authenticationService.retrieveIssuerResponse(authenticationResponse.getState());
- String jwtToken = authenticationResponse.getIdToken();
- String issuerId = issuerResponse.getIssuerId();
- return platformConfigurationService
- .getByIssuerId(issuerId)
- .flatMap(platformConfiguration -> getPublicKeyData(platformConfiguration))
- .flatMap(publicKeyData -> {
- setPlatformConfigurationServicePublicKeyData(platformConfiguration, publicKeyData);
- return Tuples.of(platformConfiguration, publicKeyData);
- })
- .flatMap(tuple -> jwtHelper.getClaimsFromJWTToken(jwtToken, tuple.getT2()))
- .map(claims -> {
- RumbaRole rumbaRole = obtainRumbaRoleFromLTIRoles(claims);
- String messageType = claims.get(Constants.CLAIM_PREFIX + "message_type", String.class);
- LaunchRequestProviderType.getLaunchRequestProviderType(messageType)
- .map(launchRequestProviderType -> launchRequestServiceLocator.getProvider(launchRequestProviderType))
- .map(launchRequestService -> {
- launchRequestService.validateLaunchRequest(claims);
- launchRequestService.processRequest(claims)
- .map(ltiLaunchRequest -> setLtiLaunchRequest(ltiLaunchRequest, tuple.getT1().getRumbaDistrictId(), rumbaRole));
- });
- });