Skip to content

Commit

Permalink
Merge pull request #137 from Edugate/develop
Browse files Browse the repository at this point in the history
arpgen speed improvement
  • Loading branch information
janul committed Nov 23, 2014
2 parents 2659d3d + db6b29c commit 24daa28
Show file tree
Hide file tree
Showing 4 changed files with 3 additions and 171 deletions.
157 changes: 0 additions & 157 deletions application/controllers/manage/Attribute_policyajax.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,161 +25,6 @@ public function __construct() {

}

public function retrieveattrpath($idpid=null)
{
if(!$this->input->is_ajax_request() || (empty($idpid) || !is_numeric($idpid)))
{
show_error('method not allowed',403);
}
$loggedin = $this->j_auth->logged_in();
if (!$loggedin) {
set_status_header(403);
echo 'lost session';
return;
}
$this->load->library('zacl');
$tmp_arps = new models\AttributeReleasePolicies;
$langdrop = array('0'=>lang('dropnever'),'1'=> lang('dropokreq'),'2'=>lang('dropokreqdes'),'100'=>lang('dropnotset'));



$idp = $this->em->getRepository("models\Provider")->findOneBy(array('id'=>$idpid,'type'=>array('IDP','BOTH')));
if(empty($idp))
{
set_status_header(404);
echo 'idp not found';
return;
}
$has_write_access = $this->zacl->check_acl($idpid, 'write', 'entity', '');
if(!$has_write_access)
{
set_status_header(403);
echo 'no permission';
return;
}

$requester = $this->input->post('requester');
$attrname = $this->input->post('attribute');

if(empty($requester) || empty($attrname))
{
set_status_header(403);
echo 'missing params';
return;
}

$attribute = $this->em->getRepository("models\Attribute")->findOneBy(array('name'=>$attrname));
if(empty($attribute))
{
set_status_header(403);
echo 'missing attr';
return;
}
$sp = $this->em->getRepository("models\Provider")->findOneBy(array('entityid'=>$requester,'type'=>array('SP','BOTH')));
if(empty($sp))
{
set_status_header(403);
echo 'missing sp';
return;
}
$result = array('status'=>'ok','requester'=>$requester,'attributename'=>$attrname);
$result['details'] = array();
$supportedAttr = $this->em->getRepository("models\AttributeReleasePolicy")->findOneBy(array('attribute'=>$attribute,'idp'=>$idp,'type'=>'supported'));
$supported = false;
if(!empty($supportedAttr))
{
$result['supported'] = true;
$result['details'][] = array('name'=>'','value'=>lang('rr_supported'));
$supported = true;
}
else
{
$result['supported'] = false;
$result['details'][] = array('name'=>'','value'=>lang('attrnotsupported'));
}
$globalPolicy = $this->em->getRepository("models\AttributeReleasePolicy")->findOneBy(array('attribute'=>$attribute,'idp'=>$idp,'type'=>'global'));
$global = 0;
if(empty($globalPolicy))
{
$result['global'] = null;
$val = ''.$langdrop['100'].' => deny';
$result['details'][] = array('name'=>lang('rr_defaultarp'),'value'=>$val);
}
else
{
$result['global'] = $globalPolicy->getPolicy();
$result['details'][] = array('name'=>lang('rr_default'),'value'=>$langdrop[$globalPolicy->getPolicy()]);
}
$idpfeds = $idp->getFederations();
$spfeds = $sp->getFederations();
$attrfed = null;
$fedsmerged = array();
foreach($spfeds as $s)
{
if($idpfeds->contains($s))
{
$tmpattrfed = $tmp_arps->getOneFedPolicyAttribute($idp,$s,$attribute->getId());
if(!empty($tmpattrfed))
{
$tmpattrfedPolicy = $tmpattrfed->getPolicy();
if($tmpattrfedPolicy !== null && $tmpattrfedPolicy >= $attrfed)
{
$attrfed = $tmpattrfedPolicy;
$fedsmerged[] = $sp->getName();
}
}
}
}
if($attrfed === null)
{
$result['details'][] = array('name'=>'federation','value'=>$langdrop['100'] .' => '.lang('rr_inheritfromparent'));
}
else
{
$fedsuffix = '';
if(count($fedsmerged)>1)
{
$fedsuffix = '<br />'.lang('rr_merged').':<br />';
$fedsuffix .= implode('<br />',$fedsmerged);
}
$result['details'][] = array('name'=>lang('rr_federation'),'value'=>$langdrop[''.$attrfed.''].$fedsuffix);
}

$specificPolicy = $tmp_arps->getOneSPPolicy($idp->getId(), $attribute->getId(), $sp->getId());
$customPolicy = $tmp_arps->getOneSPCustomPolicy($idp->getId(), $attribute->getId(), $sp->getId());
if(empty($specificPolicy))
{
$result['details'][] = array('name'=>lang('rr_requester'),'value'=>$langdrop['100'] .' => '.lang('rr_inheritfromparent'));
}
else
{
$result['details'][] = array('name'=>lang('rr_requester'),'value'=>$langdrop[$specificPolicy->getPolicy()] );
}
if(!empty($customPolicy))
{
$rawdata = $customPolicy->getRawdata();
if(is_array($rawdata))
{
$suffix = '';
if(isset($rawdata['permit']) && is_array($rawdata['permit']))
{
$suffix = '<br />'.lang('rr_permvalues').':<br />';
$suffix .= implode('<br />',$rawdata['permit']);
}
elseif(isset($rawdata['deny']) && is_array($rawdata['deny']))
{
$suffix = '<br />'.lang('rr_denvalues').':<br />';
$suffix .= implode('<br />',$rawdata['deny']);

}
$result['details'][] = array('name'=>lang('custompolicy'),'value'=>'<small>'.lang('customappliedifpermited').'</small>'.$suffix);
}
}
$this->output->set_content_type('application/json');
echo json_encode($result);


}
public function getattrpath($idpid,$spid,$attrid)
{
if(!$this->input->is_ajax_request())
Expand Down Expand Up @@ -245,15 +90,13 @@ public function getattrpath($idpid,$spid,$attrid)
{
$result['supported'] = true;
$result['details'][] = array('name'=>'','value'=>lang('rr_supported'));
$supported = true;
}
else
{
$result['supported'] = false;
$result['details'][] = array('name'=>'','value'=>lang('attrnotsupported'));
}
$globalPolicy = $this->em->getRepository("models\AttributeReleasePolicy")->findOneBy(array('attribute'=>$attribute,'idp'=>$idp,'type'=>'global'));
$global = 0;
if(empty($globalPolicy))
{
$result['global'] = null;
Expand Down
8 changes: 0 additions & 8 deletions application/controllers/reports/Idpmatrix.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ class Idpmatrix extends MY_Controller
{

private $tmp_providers;
private $logo_url;

function __construct()
{
Expand All @@ -40,11 +39,6 @@ function __construct()
$this->logo_url = $this->logo_baseurl . $this->logo_basepath;
}

private function _get_members($idp)
{
$members = $this->tmp_providers->getCircleMembersLight($idp);
return $members;
}

public function getArpData($idpid)
{
Expand Down Expand Up @@ -86,7 +80,6 @@ public function getArpData($idpid)
$returnArray = TRUE;
$arparray['policies'] = $this->arp_generator->arpToXML($idp, $returnArray);

//$attrdedsCopy = array();
foreach($arparray['policies'] as $p)
{
foreach($p['attributes'] as $k => $v)
Expand Down Expand Up @@ -154,7 +147,6 @@ public function show($idpid)
$extends = $idp->getExtendMetadata();
if (count($extends) > 0)
{
$is_logo = false;
foreach ($extends as $ex)
{
$el = $ex->getElement();
Expand Down
8 changes: 3 additions & 5 deletions application/models/Providers.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,9 @@ public function getTrustedActiveFeds(Provider $provider)
}
return $feds;
}

public function getSPsForArp(Provider $provider)
{
$query1 = $this->em->createQuery("SELECT m,f FROM models\FederationMembers m JOIN m.federation f WHERE m.provider = ?1 AND m.joinstate != '2' AND m.isDisabled = '0' AND m.isBanned='0' AND f.is_active = '1'");
$query1 = $this->em->createQuery("SELECT partial m.{id, federation},partial f.{id} FROM models\FederationMembers m JOIN m.federation f WHERE m.provider = ?1 AND m.joinstate != '2' AND m.isDisabled = '0' AND m.isBanned='0' AND f.is_active = '1'");
$query1->setParameter(1, $provider->getId());
$query1->setHint(\Doctrine\ORM\Query::HINT_FORCE_PARTIAL_LOAD, true);
$result1 = $query1->getResult();
Expand All @@ -82,9 +81,8 @@ public function getSPsForArp(Provider $provider)
{
return array();
}
$query = $this->em->createQuery("SELECT p,e,m,f FROM models\Provider p LEFT JOIN p.membership m LEFT JOIN m.federation f LEFT JOIN p.extend e WHERE m.federation IN (:feds) AND m.joinstate != '2' AND m.isDisabled = '0' AND m.isBanned='0' AND p.id != ?2 AND p.is_active = '1' AND p.is_approved = '1' AND p.type IN ('SP','BOTH')");
$query = $this->em->createQuery("SELECT partial p.{id, entityid,type,ldisplayname,displayname,lname, name},e,partial m.{id, provider, federation},partial f.{id} FROM models\Provider p LEFT JOIN p.membership m LEFT JOIN m.federation f LEFT JOIN p.extend e WHERE m.federation IN (:feds) AND m.joinstate != '2' AND m.isDisabled = '0' AND m.isBanned='0' AND p.type IN ('SP','BOTH') AND p.is_active = '1' AND p.is_approved = '1'");
$query->setParameter('feds', $feds);
$query->setParameter(2, $provider->getId());
$query->setHint(\Doctrine\ORM\Query::HINT_FORCE_PARTIAL_LOAD, true);
$result = $query->getResult();
$r2 = new \Doctrine\Common\Collections\ArrayCollection;
Expand Down Expand Up @@ -113,7 +111,7 @@ public function getIdPsForWayf(Provider $provider)
return array();
}
$currentTime = new \DateTime("now", new \DateTimeZone('UTC'));
$query = $this->em->createQuery("SELECT partial p.{id, entityid,type,ldisplayname,lname,validfrom, validto},e, partial m.{id} FROM models\Provider p LEFT JOIN p.extend e LEFT JOIN p.membership m LEFT JOIN m.federation f WHERE m.federation IN (:feds) AND m.joinstate != '2' AND m.isDisabled = '0' AND m.isBanned='0' AND p.id != ?2 AND p.is_active = '1' AND p.is_approved = '1' AND (p.validto is null OR p.validto >= :now) AND (p.validfrom is null OR p.validfrom <= :now) AND p.type IN ('IDP','BOTH')");
$query = $this->em->createQuery("SELECT partial p.{id,entityid,type,ldisplayname,lname,name,displayname},e, partial m.{id} FROM models\Provider p LEFT JOIN p.extend e LEFT JOIN p.membership m LEFT JOIN m.federation f WHERE m.federation IN (:feds) AND m.joinstate != '2' AND m.isDisabled = '0' AND m.isBanned='0' AND p.id != ?2 AND p.is_active = '1' AND p.is_approved = '1' AND (p.validto is null OR p.validto >= :now) AND (p.validfrom is null OR p.validfrom <= :now) AND p.type IN ('IDP','BOTH')");
$query->setParameter('feds', $feds);
$query->setParameter(2, $spid);
$query->setParameter('now', $currentTime);
Expand Down
1 change: 0 additions & 1 deletion application/views/reports/idpmatrix_show_view.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@
<?php
echo form_close();

https://janul.no-ip.info/rr3/manage/attribute_policyajax/retrieveattrpath/2
echo '
<div id="policyupdater" class="reveal-modal small" data-reveal jagger-data-link="' . base_url() . 'manage/attribute_policyajax/getattrpath/' . $idpid . '">
<h2>' . lang('confirmupdpolicy') . '</h2>
Expand Down

0 comments on commit 24daa28

Please sign in to comment.