-
Valentin Pocotilenco authoredValentin Pocotilenco authored
ResultsController.php 6.75 KiB
<?php
namespace app\Http\Controllers;
use App\Http\Controllers\Controller;
use App\IdpResult;
use App\TestResult;
use App\TestAttribute;
use App\Libraries\EarcUtils;
use Illuminate\Http\Request;
use App\Constants\EarcUtils AS EarcConstants;
class ResultsController extends Controller
{
/**
* Show Results.
*/
public function __invoke(Request $request, $test_id)
{
//Get only the latest result for each IdP
$idps = IdpResult::all()->unique('idp_entity_id');
foreach ($idps as $idp)
{
$historical_results[] = IdpResult::where('idp_entity_id', $idp['idp_entity_id'])->orderBy('created_at', 'desc')->first();
}
$idp_result = IdpResult::where('test_id', $test_id)->get();
if (count($idp_result) > 0)
{
$released_attributes = array();
$sp_entities = EarcUtils::getSpMetadata(null);
$test_results = TestResult::where('test_id', $test_id)->get();
$test_attributes = TestAttribute::where('test_id', $test_id)->get();
foreach ($test_results as $result)
{
$sp_entities[$result->sp_entityid]['tested'] = true;
if ($result->sp_entityid == env('APP_URL_NOEC') . "/shibboleth")
{
if (strpos($result->test_mark, 'F') !== false)
{
$verdict[$result->sp_entityid]['comment'] = 'Good data privacy but bad usability.';
}
elseif (strpos($result->test_mark, 'A') !== false)
{
$verdict[$result->sp_entityid]['comment'] = 'Good usability but bad data privacy.';
}
else
{
$verdict[$result->sp_entityid]['comment'] = $result->test_comment;
}
$verdict[$result->sp_entityid]['mark'] = '';
}
else
{
$verdict[$result->sp_entityid]['mark'] = $result->test_mark;
$verdict[$result->sp_entityid]['comment'] = $result->test_comment;
}
$released_attributes[$result->sp_entityid] = [];
}
foreach ($test_attributes as $attribute)
{
$released_attributes[$attribute->sp_entityid][$attribute->attr_name] = $attribute->attr_value_multiplicity;
}
foreach ($sp_entities as $sp)
{
if (array_key_exists('tested', $sp))
{
if (array_key_exists('attributeNamesRequired', $sp))
{
if (EarcUtils::isRnsIndicated($sp))
{
if (array_key_exists('eduPersonScopedAffiliation', $released_attributes[$sp['entityid']]))
{
$sp['attributeNamesRequired'][] = 'eduPersonScopedAffiliation';
}
if (array_key_exists('eduPersonTargetedID', $released_attributes[$sp['entityid']]))
{
$sp['attributeNamesRequired'][] = 'eduPersonTargetedID';
}
}
$sp_entities[$sp['entityid']]['superfluous_attributes'] = array_diff(array_keys($released_attributes[$sp['entityid']]), $sp['attributeNamesRequired']);
}
}
}
$regional_earc = array_key_exists($idp_result[0]['registration_authority'], EarcConstants::EARC_REGIONAL_SP)
? EarcConstants::EARC_REGIONAL_SP[$idp_result[0]['registration_authority']]
: null;
return view('results', ['historical_results' => $historical_results,
'idp' => $idp_result[0],
'regional_earc' => $regional_earc,
'verdict' => $verdict,
'sp_entities' => $sp_entities,
'released_attributes' => $released_attributes, ]);
}
abort(404);
}
public function getHistoricalResults()
{
$idps = IdpResult::all()->unique('idp_entity_id');
foreach ($idps as $idp)
{
$historical_results[] = IdpResult::where('idp_entity_id', $idp['idp_entity_id'])->orderBy('created_at', 'desc')->first();
}
foreach ($historical_results as $key => $result)
{
$historical_results[$key]['test_result'] = TestResult::where('test_id', $result['test_id'])->get();
$historical_results[$key]['result_page'] = EarcConstants::RELEASE_CHECK_EDUGAIN . $historical_results[$key]['test_id'];
$historical_results[$key]['date'] = $historical_results[$key]['created_at'];
foreach ($historical_results[$key]['test_result'] as $tkey => $tvalue)
{
if ($historical_results[$key]['test_result'][$tkey]['sp_entityid'] == env('APP_URL_NOEC') . "/shibboleth")
{
unset($historical_results[$key]['test_result'][$tkey]);
continue;
}
unset($historical_results[$key]['test_result'][$tkey]['test_comment']);
unset($historical_results[$key]['test_result'][$tkey]['created_at']);
unset($historical_results[$key]['test_result'][$tkey]['updated_at']);
unset($historical_results[$key]['test_result'][$tkey]['id']);
unset($historical_results[$key]['test_result'][$tkey]['test_id']);
}
unset($historical_results[$key]['created_at']);
unset($historical_results[$key]['updated_at']);
unset($historical_results[$key]['id']);
unset($historical_results[$key]['test_id']);
}
return $historical_results;
}
public function getSingleHistoricalResult(Request $request, $idp_entity_id)
{
$idp_entity_id = urldecode($idp_entity_id);
$historical_result = IdpResult::where('idp_entity_id', $idp_entity_id)->orderBy('created_at', 'desc')->first();
if (count($historical_result)>0)
{
$historical_result['datetime'] = $historical_result['created_at'];
$historical_result['result_page'] = EarcConstants::RELEASE_CHECK_EDUGAIN . $historical_result['test_id'];
unset($historical_result['test_comment']);
unset($historical_result['created_at']);
unset($historical_result['updated_at']);
unset($historical_result['id']);
unset($historical_result['test_id']);
}
return $historical_result;
}
}