Skip to content

Commit 5ef0b05

Browse files
committed
Merge branch 'feature/fine-grained-authorization' of github.com:OpenConext/Stepup-Middleware into feature/fine-grained-authorization
2 parents 2c721df + 2e42248 commit 5ef0b05

File tree

6 files changed

+24
-28
lines changed

6 files changed

+24
-28
lines changed

src/Surfnet/Stepup/Configuration/InstitutionConfiguration.php

+3-8
Original file line numberDiff line numberDiff line change
@@ -469,19 +469,14 @@ public function getAggregateRootId()
469469
}
470470

471471
/**
472-
* Check if role is allowed
472+
* Check if role from institution is allowed to accredit roles
473473
*
474-
* @param RegistrationAuthorityRole $role
475474
* @param Institution $institution
476475
* @return bool
477476
*/
478-
public function isAllowed(RegistrationAuthorityRole $role, Institution $institution)
477+
public function isInstitutionAllowedToAccreditRoles(Institution $institution)
479478
{
480-
if ($role->isRa() && $this->useRaOption->hasInstitution($institution)) {
481-
return true;
482-
}
483-
484-
if ($role->isRaa() && $this->useRaaOption->hasInstitution($institution)) {
479+
if ($this->selectRaaOption->hasInstitution($institution, $this->institution)) {
485480
return true;
486481
}
487482

src/Surfnet/Stepup/Configuration/Value/InstitutionAuthorizationOption.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -182,11 +182,12 @@ public function getInstitutions(Institution $institution)
182182

183183
/**
184184
* @param Institution $institution
185+
* @param Institution $default
185186
* @return bool
186187
*/
187-
public function hasInstitution(Institution $institution)
188+
public function hasInstitution(Institution $institution, Institution $default)
188189
{
189-
$institutions = $this->getInstitutions($institution);
190+
$institutions = $this->getInstitutions($default);
190191
$list = array_map(
191192
function (Institution $institution) {
192193
return $institution->getInstitution();

src/Surfnet/Stepup/Identity/Identity.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,8 @@ public function accreditWith(
586586
) {
587587
$this->assertNotForgotten();
588588

589-
if (!$institutionConfiguration->isAllowed($role, new ConfigurationInstitution($institution->getInstitution()))) {
590-
throw new DomainException('An Identity may only be accredited with configured institutions');
589+
if (!$institutionConfiguration->isInstitutionAllowedToAccreditRoles(new ConfigurationInstitution($institution->getInstitution()))) {
590+
throw new DomainException('An Identity may only be accredited by configured institutions.');
591591
}
592592

593593
if (!$this->vettedSecondFactors->count()) {
@@ -661,7 +661,7 @@ public function appointAs(
661661
) {
662662
$this->assertNotForgotten();
663663

664-
if (!$institutionConfiguration->isAllowed($role, new ConfigurationInstitution($institution->getInstitution()))) {
664+
if (!$institutionConfiguration->isInstitutionAllowedToAccreditRoles(new ConfigurationInstitution($institution->getInstitution()))) {
665665
throw new DomainException(
666666
'Cannot appoint as different RegistrationAuthorityRole: identity is not a registration authority for institution'
667667
);

src/Surfnet/Stepup/Tests/Configuration/Value/InstitutionAuthorizationOptionTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public function the_has_institution_method_should_check_for_institutions($expect
162162
}
163163
$option = InstitutionAuthorizationOption::fromInstitutions(InstitutionRole::useRa(), $this->institution, $list);
164164

165-
$this->assertEquals($expectation, $option->hasInstitution($institution));
165+
$this->assertEquals($expectation, $option->hasInstitution($institution, $this->institution));
166166
}
167167

168168

src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/RegistrationAuthorityCommandHandler.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public function handleAppointRoleCommand(AppointRoleCommand $command)
101101
/** @var \Surfnet\Stepup\Identity\Api\Identity $identity */
102102
$identity = $this->repository->load(new IdentityId($command->identityId));
103103

104-
$institutionConfiguration = $this->loadInstitutionConfigurationFor(new Institution($identity->getInstitution()->getInstitution()));
104+
$institutionConfiguration = $this->loadInstitutionConfigurationFor(new Institution($command->raInstitution));
105105

106106
$newRole = $this->assertValidRoleAndConvertIfValid($command->role, $command->UUID);
107107

src/Surfnet/StepupMiddleware/CommandHandlingBundle/Tests/Identity/CommandHandler/RegistrationAuthorityCommandHandlerTest.php

+13-13
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ protected function createCommandHandler(EventStoreInterface $eventStore, EventBu
100100
* @group command-handler
101101
* @group ra-command-handler
102102
* @expectedException \Surfnet\Stepup\Exception\DomainException
103-
* @expectedExceptionMessage An Identity may only be accredited with configured institutions
103+
* @expectedExceptionMessage An Identity may only be accredited by configured institutions
104104
*/
105-
public function an_identity_cannot_be_accredited_for_another_institution_than_its_own()
105+
public function an_identity_cannot_be_accredited_for_another_institution_than_configured()
106106
{
107107
$command = new AccreditIdentityCommand();
108108
$command->identityId = static::uuid();
@@ -121,7 +121,7 @@ public function an_identity_cannot_be_accredited_for_another_institution_than_it
121121
$secondFactorPublicId = new YubikeyPublicId('8329283834');
122122

123123
$this->institutionConfiguration
124-
->shouldReceive('isAllowed')
124+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
125125
->andReturn(false);
126126

127127
$this->scenario
@@ -173,7 +173,7 @@ public function an_identity_cannot_be_accredited_when_it_does_not_have_a_vetted_
173173
$commonName = new CommonName('Henk Westbroek');
174174

175175
$this->institutionConfiguration
176-
->shouldReceive('isAllowed')
176+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
177177
->andReturn(true);
178178

179179
$this->scenario
@@ -218,7 +218,7 @@ public function an_identity_cannot_be_accredited_when_it_already_has_been_accred
218218
$secondFactorPublicId = new YubikeyPublicId('8329283834');
219219

220220
$this->institutionConfiguration
221-
->shouldReceive('isAllowed')
221+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
222222
->andReturn(true);
223223

224224
$this->scenario
@@ -332,7 +332,7 @@ public function an_identity_can_be_accredited_with_ra_role()
332332
$raInstitution = new Institution($command->raInstitution);
333333

334334
$this->institutionConfiguration
335-
->shouldReceive('isAllowed')
335+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
336336
->andReturn(true);
337337

338338
$this->scenario
@@ -398,7 +398,7 @@ public function an_identity_can_be_accredited_with_raa_role()
398398
$secondFactorPublicId = new YubikeyPublicId('8329283834');
399399

400400
$this->institutionConfiguration
401-
->shouldReceive('isAllowed')
401+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
402402
->andReturn(true);
403403

404404
$this->scenario
@@ -584,7 +584,7 @@ public function an_identity_without_vetted_second_factor_may_not_be_accredited_a
584584
$commonName = new CommonName('Henk Westbroek');
585585

586586
$this->institutionConfiguration
587-
->shouldReceive('isAllowed')
587+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
588588
->andReturn(true);
589589

590590
$this->scenario
@@ -627,7 +627,7 @@ public function an_identity_with_a_vetted_second_factor_can_be_accredited_as_ra(
627627
$raInstitution = new Institution($command->raInstitution);
628628

629629
$this->institutionConfiguration
630-
->shouldReceive('isAllowed')
630+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
631631
->andReturn(true);
632632

633633
$this->scenario
@@ -694,7 +694,7 @@ public function an_identity_cannot_be_accredited_twice()
694694
$secondFactorPublicId = new YubikeyPublicId('8329283834');
695695

696696
$this->institutionConfiguration
697-
->shouldReceive('isAllowed')
697+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
698698
->andReturn(true);
699699

700700
$this->scenario
@@ -800,7 +800,7 @@ public function an_identity_that_is_accredited_as_raa_can_be_appointed_as_ra()
800800
$secondFactorPublicId = new YubikeyPublicId('8329283834');
801801

802802
$this->institutionConfiguration
803-
->shouldReceive('isAllowed')
803+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
804804
->andReturn(true);
805805

806806
$this->scenario
@@ -867,7 +867,7 @@ public function an_identity_that_is_accredited_as_ra_can_be_appointed_as_raa()
867867
$secondFactorPublicId = new YubikeyPublicId('8329283834');
868868

869869
$this->institutionConfiguration
870-
->shouldReceive('isAllowed')
870+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
871871
->andReturn(true);
872872

873873
$this->scenario
@@ -935,7 +935,7 @@ public function an_unaccredited_identity_cannot_be_appointed_a_registration_auth
935935
$secondFactorPublicId = new YubikeyPublicId('8329283834');
936936

937937
$this->institutionConfiguration
938-
->shouldReceive('isAllowed')
938+
->shouldReceive('isInstitutionAllowedToAccreditRoles')
939939
->andReturn(false);
940940

941941
$this->scenario

0 commit comments

Comments
 (0)