A PHP Error was encountered

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

Re: Untitled - Stikked
From Sweltering Eider, 5 Years ago, written in Java 5.
This paste is a reply to Untitled from Reliable Curlew - view diff
Embed
  1. /*
  2.  * Copyright 2019, Pearson Education, Learning Technology Group
  3.  *
  4.  * PlatformAuthenticationResponseService.java
  5.  */
  6. package com.pearson.ltg.rbs.ltitoolgateway.service.openidconnect;
  7.  
  8. import java.util.List;
  9. import java.util.Objects;
  10. import java.util.Set;
  11. import java.util.stream.Collectors;
  12.  
  13. import javax.annotation.PostConstruct;
  14.  
  15. import org.apache.commons.collections.CollectionUtils;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.stereotype.Service;
  21.  
  22. import com.pearson.ltg.rbs.ltitoolgateway.constant.Constants;
  23. import com.pearson.ltg.rbs.ltitoolgateway.exception.InvalidDataException;
  24. import com.pearson.ltg.rbs.ltitoolgateway.jwt.JwtHelper;
  25. import com.pearson.ltg.rbs.ltitoolgateway.model.AuthenticationResponse;
  26. import com.pearson.ltg.rbs.ltitoolgateway.model.IssuerResponse;
  27. import com.pearson.ltg.rbs.ltitoolgateway.model.LTILaunchRequest;
  28. import com.pearson.ltg.rbs.ltitoolgateway.model.LTILaunchRequestSettings;
  29. import com.pearson.ltg.rbs.ltitoolgateway.model.PlatformConfiguration;
  30. import com.pearson.ltg.rbs.ltitoolgateway.model.PublicKeyData;
  31. import com.pearson.ltg.rbs.ltitoolgateway.model.RumbaRole;
  32. import com.pearson.ltg.rbs.ltitoolgateway.service.IPlatformConfigurationService;
  33. import com.pearson.ltg.rbs.ltitoolgateway.util.Encryption;
  34. import com.pearson.ltg.samlutils.model.SamlResponseInputData;
  35. import com.pearson.ltg.samlutils.service.ISamlResponseService;
  36.  
  37. import io.jsonwebtoken.Claims;
  38. import reactor.core.publisher.Mono;
  39. import reactor.util.function.Tuples;
  40.  
  41. @Service
  42. public class PlatformAuthenticationResponseService implements IPlatformAuthenticationResponseService {
  43.     private static final Logger LOGGER = LoggerFactory.getLogger(PlatformAuthenticationResponseService.class);
  44.  
  45.     @Value("${saml.issuerId}")
  46.     String issuerId;
  47.  
  48.     @Value("${saml.rumbaSSOUrl}")
  49.     String rumbaSSOUrl;
  50.  
  51.     @Value("${saml.externalIdp}")
  52.     String externalIdp;
  53.  
  54.     @Value("${saml.nameIdentitifer}")
  55.     String nameIdentitifer;
  56.  
  57.     @Value("${saml.nameQualifier}")
  58.     String nameQualifier;
  59.  
  60.     @Value("${saml.certificatePath}")
  61.     String certificatePath;
  62.  
  63.     @Value("${saml.privateKeyPkcs8Path}")
  64.     String privateKeyPkcs8Path;
  65.  
  66.     @Autowired
  67.     JwtHelper jwtHelper;
  68.  
  69.     @Autowired
  70.     Encryption encryption;
  71.  
  72.     @Autowired
  73.     IAuthenticationService authenticationService;
  74.  
  75.     @Autowired
  76.     IPlatformConfigurationService platformConfigurationService;
  77.  
  78.     @Autowired
  79.     ILaunchRequestServiceLocator launchRequestServiceLocator;
  80.  
  81.     @Autowired
  82.     ISamlResponseService samlResponseService;
  83.  
  84.     @Value("${ims.roles.mapped.to.rumba.teacher}")
  85.     Set<String> imsRolesMappedToRumbaTeacher;
  86.     @Value("${ims.roles.mapped.to.rumba.student}")
  87.     Set<String> imsRolesMappedToRumbaStudent;
  88.  
  89.     @PostConstruct
  90.     public void init() {
  91.         LOGGER.info("rolesMappedToRumbaTeacher {}", imsRolesMappedToRumbaTeacher);
  92.         LOGGER.info("rolesMappedToRumbaStudent {}", imsRolesMappedToRumbaStudent);
  93.     }
  94.  
  95.     @Override
  96.     public Mono<LTILaunchRequest<LTILaunchRequestSettings>> handlePlatformAuthenticationResponse(AuthenticationResponse authenticationResponse) {
  97.         IssuerResponse issuerResponse= authenticationService.retrieveIssuerResponse(authenticationResponse.getState());
  98.         String jwtToken = authenticationResponse.getIdToken();
  99.         String issuerId = issuerResponse.getIssuerId();
  100.         return platformConfigurationService
  101.                         .getByIssuerId(issuerId)
  102.                         .flatMap(platformConfiguration -> getPublicKeyData(platformConfiguration)
  103.                             .map(publicKeyData -> {
  104.                                 setPlatformConfigurationServicePublicKeyData(platformConfiguration, publicKeyData);
  105.                                 return Tuples.of(platformConfiguration, publicKeyData);
  106.                              }))
  107.                         .map(tuple -> jwtHelper.getClaimsFromJWTToken(jwtToken, tuple.getT2())
  108.                             .map(claims -> {
  109.                                  RumbaRole rumbaRole = obtainRumbaRoleFromLTIRoles(claims);
  110.                                  String messageType = claims.get(Constants.CLAIM_PREFIX + "message_type", String.class);
  111.                                  LaunchRequestProviderType.getLaunchRequestProviderType(messageType)
  112.                                      .map(launchRequestProviderType -> launchRequestServiceLocator.getProvider(launchRequestProviderType)
  113.                                      .map(launchRequestService ->  {
  114.                                          launchRequestService.validateLaunchRequest(claims);
  115.                                          launchRequestService.processRequest(claims)
  116.                                              .map(ltiLaunchRequest -> setLtiLaunchRequest(ltiLaunchRequest, tuple.getT1().getRumbaDistrictId(), rumbaRole));
  117.                                           }));
  118.                             }))
  119.                         .onErrorResume(InvalidDataException.class, exception -> Response.badRequest(exception.getMessage(), ResponseMediaType.JSON));
  120.  
  121. //        if(Objects.nonNull(platformConfiguration)) {
  122. //            PublicKeyData publicKeyData = getPublicKeyData(platformConfiguration);
  123. //            Claims claims = jwtHelper.getClaimsFromJWTToken(jwtToken, publicKeyData);
  124. //            if (publicKeyData.getIsNewPublicKey()) {
  125. //                setPlatformConfigurationPublicKeyData(platformConfiguration, publicKeyData);
  126. //                platformConfigurationService.update(platformConfiguration, issuerId);
  127. //                LOGGER.debug("platform configuration has been updated issuerId {}, public key id {}", platformConfiguration.getIssuerId(), publicKeyData.getPublicKeyId());
  128. //            }
  129. //            String messageType = claims.get(Constants.CLAIM_PREFIX + "message_type", String.class);
  130. //            LaunchRequestProviderType launchRequestProviderType = LaunchRequestProviderType.getLaunchRequestProviderType(messageType);
  131. //            ILaunchRequestService<LTILaunchRequest<LTILaunchRequestSettings>> launchRequestService = launchRequestServiceLocator.getProvider(launchRequestProviderType);
  132. //            RumbaRole rumbaRole = obtainRumbaRoleFromLTIRoles(claims);
  133. //            launchRequestService.validateLaunchRequest(claims.getSubject(), rumbaRole);
  134. //            LTILaunchRequest<LTILaunchRequestSettings> ltiLaunchRequest = launchRequestService.processRequest(claims);
  135. //            ltiLaunchRequest.setIssuer(issuerId);
  136. //            ltiLaunchRequest.setOrganizationId(platformConfiguration.getRumbaDistrictId());
  137. //            ltiLaunchRequest.setRumbaRole(rumbaRole);
  138. //            return ltiLaunchRequest;
  139. //        }
  140.         // throw new InvalidDataException("platformConfiguration is null" + platformConfiguration);
  141.     }
  142.  
  143.     @Override
  144.     public String getAutoSubmitForm(String redirectUrl, String rumbaUserId) {
  145.         SamlResponseInputData samlResponseInputData = new SamlResponseInputData();
  146.         samlResponseInputData.setIssuer(issuerId);
  147.         samlResponseInputData.setAuthTokenForSaml(rumbaUserId);
  148.         samlResponseInputData.setRumbaSSOUrl(rumbaSSOUrl);
  149.         samlResponseInputData.setExternalIdpUrl(externalIdp);
  150.         samlResponseInputData.setServiceUrl(redirectUrl);
  151.         samlResponseInputData.setTimeInSecondsTillValid(3000);
  152.         samlResponseInputData.setNameIdentifier(nameIdentitifer);
  153.         samlResponseInputData.setNameQualifier(nameQualifier);
  154.         samlResponseInputData.setCertificateFilePath(certificatePath);
  155.         samlResponseInputData.setPrivateKeyFilePath(privateKeyPkcs8Path);
  156.         LOGGER.info("Created auto submit form request {}", samlResponseInputData);
  157.         String autoSubmitForm = samlResponseService.getRumbaAutoSubmitForm(samlResponseInputData);
  158.         LOGGER.info("Created auto submit form {}", autoSubmitForm);
  159.         return autoSubmitForm;
  160.     }
  161.  
  162.     @SuppressWarnings("unchecked")
  163.     private RumbaRole obtainRumbaRoleFromLTIRoles(Claims claims) {
  164.  
  165.         List<String> roles = (List<String>) claims.get(Constants.CLAIM_PREFIX + "roles");
  166.         if (CollectionUtils.isNotEmpty(roles)) {
  167.             List<String> studentRoles = roles
  168.                     .stream()
  169.                     .filter(imsRolesMappedToRumbaStudent::contains)
  170.                     .collect(Collectors.toList());
  171.             if(CollectionUtils.isNotEmpty(studentRoles)) {
  172.                 return RumbaRole.S;
  173.             }
  174.             List<String> teacherRoles = roles
  175.                     .stream()
  176.                     .filter(imsRolesMappedToRumbaTeacher::contains)
  177.                     .collect(Collectors.toList());
  178.             if (CollectionUtils.isNotEmpty(teacherRoles)) {
  179.                 return RumbaRole.T;
  180.             }
  181.         }
  182.         return null;
  183.     }
  184.  
  185.     private Mono<PublicKeyData> getPublicKeyData(PlatformConfiguration platformConfiguration) {
  186.         PublicKeyData publicKeyData = new PublicKeyData();
  187.         publicKeyData.setPublicKeyString(platformConfiguration.getPlatformPublicKey());
  188.         publicKeyData.setPublicKeyId(platformConfiguration.getPlatformPublicKeyId());
  189.         publicKeyData.setPublicKeySetUrl(platformConfiguration.getPlatformPublicKeySetUrl());
  190.         publicKeyData.setPublicKeyType(platformConfiguration.getPlatformPublicKeyType());
  191.         publicKeyData.setPublicKeyAlgorithm(platformConfiguration.getPlatformPublicKeyAlgorithm());
  192.         return Mono.just(publicKeyData);
  193.     }
  194.  
  195.     private void setPlatformConfigurationPublicKeyData(PlatformConfiguration platformConfiguration, PublicKeyData publicKeyData) {
  196.         String platformPublicKey = encryption.keyToString(publicKeyData.getPublicKey());
  197.         platformConfiguration.setPlatformPublicKey(platformPublicKey);
  198.         platformConfiguration.setPlatformPublicKeyAlgorithm(publicKeyData.getPublicKeyAlgorithm());
  199.         platformConfiguration.setPlatformPublicKeyId(publicKeyData.getPublicKeyId());
  200.         platformConfiguration.setPlatformPublicKeyType(publicKeyData.getPublicKeyType());
  201.     }
  202.    
  203.     private void setPlatformConfigurationServicePublicKeyData(PlatformConfiguration platformConfiguration, PublicKeyData publicKeyData) {
  204.         if (publicKeyData.getIsNewPublicKey()) {
  205.           setPlatformConfigurationPublicKeyData(platformConfiguration, publicKeyData);
  206.           platformConfigurationService.update(platformConfiguration, issuerId);
  207.           LOGGER.debug("platform configuration has been updated issuerId {}, public key id {}", platformConfiguration.getIssuerId(), publicKeyData.getPublicKeyId());
  208.       }
  209.     }
  210.    
  211.     private Mono<LTILaunchRequest<LTILaunchRequestSettings>> setLtiLaunchRequest(LTILaunchRequest<LTILaunchRequestSettings> ltiLaunchRequest, String rumbaDistrictId, RumbaRole rumaRole) {
  212.       ltiLaunchRequest.setIssuer(issuerId);
  213.       ltiLaunchRequest.setOrganizationId(rumbaDistrictId);
  214.       ltiLaunchRequest.setRumbaRole(rumaRole);
  215.       return Mono.just(ltiLaunchRequest);
  216.     }
  217. }
  218.