Severity: 8192
Message: Function create_function() is deprecated
Filename: geshi/geshi.php
Line Number: 4698
Backtrace:
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 4698
Function: _error_handler
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 4621
Function: _optimize_regexp_list_tokens_to_string
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 1655
Function: optimize_regexp_list
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 2029
Function: optimize_keyword_group
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/geshi/geshi.php
Line: 2168
Function: build_parse_cache
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/libraries/Process.php
Line: 45
Function: parse_code
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/models/Pastes.php
Line: 517
Function: syntax
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/application/controllers/Main.php
Line: 693
Function: getPaste
File: /home/httpd/vhosts/scratchbook.ch/geopaste.scratchbook.ch/index.php
Line: 315
Function: require_once
/* * Copyright 2019, Pearson Education, Learning Technology Group * * PlatformAuthenticationResponseService.java */ package com.pearson.ltg.rbs.ltitoolgateway.service.openidconnect; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import javax.annotation.PostConstruct; import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.pearson.ltg.rbs.ltitoolgateway.constant.Constants; import com.pearson.ltg.rbs.ltitoolgateway.jwt.JwtHelper; import com.pearson.ltg.rbs.ltitoolgateway.model.AuthenticationResponse; import com.pearson.ltg.rbs.ltitoolgateway.model.IssuerResponse; import com.pearson.ltg.rbs.ltitoolgateway.model.LTILaunchRequest; import com.pearson.ltg.rbs.ltitoolgateway.model.LTILaunchRequestSettings; import com.pearson.ltg.rbs.ltitoolgateway.model.PlatformConfiguration; import com.pearson.ltg.rbs.ltitoolgateway.model.PublicKeyData; import com.pearson.ltg.rbs.ltitoolgateway.model.RumbaRole; import com.pearson.ltg.rbs.ltitoolgateway.service.IPlatformConfigurationService; import com.pearson.ltg.rbs.ltitoolgateway.util.Encryption; import com.pearson.ltg.samlutils.model.SamlResponseInputData; import com.pearson.ltg.samlutils.service.ISamlResponseService; import io.jsonwebtoken.Claims; import reactor.core.publisher.Mono; import reactor.util.function.Tuples; @Service public class PlatformAuthenticationResponseService implements IPlatformAuthenticationResponseService { private static final Logger LOGGER = LoggerFactory.getLogger(PlatformAuthenticationResponseService.class); @Value("${saml.issuerId}") String issuerId; @Value("${saml.rumbaSSOUrl}") String rumbaSSOUrl; @Value("${saml.externalIdp}") String externalIdp; @Value("${saml.nameIdentitifer}") String nameIdentitifer; @Value("${saml.nameQualifier}") String nameQualifier; @Value("${saml.certificatePath}") String certificatePath; @Value("${saml.privateKeyPkcs8Path}") String privateKeyPkcs8Path; @Autowired JwtHelper jwtHelper; @Autowired Encryption encryption; @Autowired IAuthenticationService authenticationService; @Autowired IPlatformConfigurationService platformConfigurationService; @Autowired ILaunchRequestServiceLocator launchRequestServiceLocator; @Autowired ISamlResponseService samlResponseService; @Value("${ims.roles.mapped.to.rumba.teacher}") Set<String> imsRolesMappedToRumbaTeacher; @Value("${ims.roles.mapped.to.rumba.student}") Set<String> imsRolesMappedToRumbaStudent; @PostConstruct public void init() { LOGGER.info("rolesMappedToRumbaTeacher {}", imsRolesMappedToRumbaTeacher); LOGGER.info("rolesMappedToRumbaStudent {}", imsRolesMappedToRumbaStudent); } @Override public Mono<LTILaunchRequest<LTILaunchRequestSettings>> handlePlatformAuthenticationResponse(AuthenticationResponse authenticationResponse) { IssuerResponse issuerResponse= authenticationService.retrieveIssuerResponse(authenticationResponse.getState()); return platformConfigurationService .getByIssuerId(issuerId) .flatMap(platformConfiguration -> getPublicKeyData(platformConfiguration) .map(publicKeyData -> Tuples.of(platformConfiguration, publicKeyData))) .flatMap(tuple -> jwtHelper.getClaimsFromJWTToken(jwtToken, tuple.getT2()) .map(claims -> { updatePlatformConfigurationWithPulicKey(tuple.getT1(), tuple.getT2()); return Tuples.of(platformConfiguration, claims); })) .flatMap(claimsKeyConfigTuple -> { RumbaRole rumbaRole = obtainRumbaRoleFromLTIRoles(claimsKeyConfigTuple.getT2()); LaunchRequestProviderType launchRequestProviderType = LaunchRequestProviderType.getLaunchRequestProviderType(messageType); return Mono.just(launchRequestProviderType) .map(launchRequestServiceLocator::getProvider) .flatMap(launchRequestService -> { launchRequestService.validateLaunchRequest(claimsKeyConfigTuple.getT2().getSubject(), rumbaRole); LTILaunchRequest<LTILaunchRequestSettings> ltiLaunchRequest = launchRequestService.processRequest(claimsKeyConfigTuple.getT3()); setLtiLaunchRequest(ltiLaunchRequest, claimsKeyConfigTuple.getT1().getRumbaDistrictId(), rumbaRole); return Mono.just(ltiLaunchRequest); }); }); } @Override SamlResponseInputData samlResponseInputData = new SamlResponseInputData(); samlResponseInputData.setIssuer(issuerId); samlResponseInputData.setAuthTokenForSaml(rumbaUserId); samlResponseInputData.setRumbaSSOUrl(rumbaSSOUrl); samlResponseInputData.setExternalIdpUrl(externalIdp); samlResponseInputData.setServiceUrl(redirectUrl); samlResponseInputData.setTimeInSecondsTillValid(3000); samlResponseInputData.setNameIdentifier(nameIdentitifer); samlResponseInputData.setNameQualifier(nameQualifier); samlResponseInputData.setCertificateFilePath(certificatePath); samlResponseInputData.setPrivateKeyFilePath(privateKeyPkcs8Path); LOGGER.info("Created auto submit form request {}", samlResponseInputData); LOGGER.info("Created auto submit form {}", autoSubmitForm); return autoSubmitForm; } @SuppressWarnings("unchecked") private RumbaRole obtainRumbaRoleFromLTIRoles(Claims claims) { List<String> roles = (List<String>) claims.get(Constants.CLAIM_PREFIX + "roles"); if (CollectionUtils.isNotEmpty(roles)) { List<String> studentRoles = roles .stream() .filter(imsRolesMappedToRumbaStudent::contains) .collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(studentRoles)) { return RumbaRole.S; } List<String> teacherRoles = roles .stream() .filter(imsRolesMappedToRumbaTeacher::contains) .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(teacherRoles)) { return RumbaRole.T; } } return null; } private Mono<PublicKeyData> getPublicKeyData(PlatformConfiguration platformConfiguration) { PublicKeyData publicKeyData = new PublicKeyData(); publicKeyData.setPublicKeyString(platformConfiguration.getPlatformPublicKey()); publicKeyData.setPublicKeyId(platformConfiguration.getPlatformPublicKeyId()); publicKeyData.setPublicKeySetUrl(platformConfiguration.getPlatformPublicKeySetUrl()); publicKeyData.setPublicKeyType(platformConfiguration.getPlatformPublicKeyType()); publicKeyData.setPublicKeyAlgorithm(platformConfiguration.getPlatformPublicKeyAlgorithm()); return Mono.just(publicKeyData); } private void setPlatformConfigurationPublicKeyData(PlatformConfiguration platformConfiguration, PublicKeyData publicKeyData) { platformConfiguration.setPlatformPublicKey(platformPublicKey); platformConfiguration.setPlatformPublicKeyAlgorithm(publicKeyData.getPublicKeyAlgorithm()); platformConfiguration.setPlatformPublicKeyId(publicKeyData.getPublicKeyId()); platformConfiguration.setPlatformPublicKeyType(publicKeyData.getPublicKeyType()); } private void updatePlatformConfigurationWithPulicKey(PlatformConfiguration platformConfiguration, PublicKeyData publicKeyData) { if (publicKeyData.getIsNewPublicKey()) { setPlatformConfigurationPublicKeyData(platformConfiguration, publicKeyData); platformConfigurationService.update(platformConfiguration, issuerId); LOGGER.debug("platform configuration has been updated issuerId {}, public key id {}", platformConfiguration.getIssuerId(), publicKeyData.getPublicKeyId()); } } private void setLtiLaunchRequest(LTILaunchRequest<LTILaunchRequestSettings> ltiLaunchRequest, String rumbaDistrictId, RumbaRole rumaRole) { ltiLaunchRequest.setIssuer(issuerId); ltiLaunchRequest.setOrganizationId(rumbaDistrictId); ltiLaunchRequest.setRumbaRole(rumaRole); } }