Code Duplication    Length = 22-23 lines in 3 locations

src/Surfnet/StepupMiddleware/CommandHandlingBundle/Identity/CommandHandler/IdentityCommandHandler.php 3 locations

@@ 186-207 (lines=22) @@
183
        $this->eventSourcedRepository->save($identity);
184
    }
185
186
    public function handleProveYubikeyPossessionCommand(ProveYubikeyPossessionCommand $command)
187
    {
188
        /** @var IdentityApi $identity */
189
        $identity = $this->eventSourcedRepository->load(new IdentityId($command->identityId));
190
191
        $this->assertSecondFactorIsAllowedFor(new SecondFactorType('yubikey'), $identity->getInstitution());
192
193
        $configurationInstitution = new ConfigurationInstitution(
194
            (string) $identity->getInstitution()
195
        );
196
        $tokenCount = $this->institutionConfigurationOptionsService->getMaxNumberOfTokensFor($configurationInstitution);
197
        $identity->setMaxNumberOfTokens($tokenCount);
198
199
        $identity->provePossessionOfYubikey(
200
            new SecondFactorId($command->secondFactorId),
201
            new YubikeyPublicId($command->yubikeyPublicId),
202
            $this->emailVerificationIsRequired($identity),
203
            $this->configurableSettings->createNewEmailVerificationWindow()
204
        );
205
206
        $this->eventSourcedRepository->save($identity);
207
    }
208
209
    /**
210
     * @param ProvePhonePossessionCommand $command
@@ 212-234 (lines=23) @@
209
    /**
210
     * @param ProvePhonePossessionCommand $command
211
     */
212
    public function handleProvePhonePossessionCommand(ProvePhonePossessionCommand $command)
213
    {
214
        /** @var IdentityApi $identity */
215
        $identity = $this->eventSourcedRepository->load(new IdentityId($command->identityId));
216
217
        $this->assertSecondFactorIsAllowedFor(new SecondFactorType('sms'), $identity->getInstitution());
218
219
        $configurationInstitution = new ConfigurationInstitution(
220
            (string) $identity->getInstitution()
221
        );
222
223
        $tokenCount = $this->institutionConfigurationOptionsService->getMaxNumberOfTokensFor($configurationInstitution);
224
        $identity->setMaxNumberOfTokens($tokenCount);
225
226
        $identity->provePossessionOfPhone(
227
            new SecondFactorId($command->secondFactorId),
228
            new PhoneNumber($command->phoneNumber),
229
            $this->emailVerificationIsRequired($identity),
230
            $this->configurableSettings->createNewEmailVerificationWindow()
231
        );
232
233
        $this->eventSourcedRepository->save($identity);
234
    }
235
236
    /**
237
     * @param ProveGssfPossessionCommand $command
@@ 266-288 (lines=23) @@
263
        $this->eventSourcedRepository->save($identity);
264
    }
265
266
    public function handleProveU2fDevicePossessionCommand(ProveU2fDevicePossessionCommand $command)
267
    {
268
        /** @var IdentityApi $identity */
269
        $identity = $this->eventSourcedRepository->load(new IdentityId($command->identityId));
270
271
        $this->assertSecondFactorIsAllowedFor(new SecondFactorType('u2f'), $identity->getInstitution());
272
273
        $configurationInstitution = new ConfigurationInstitution(
274
            (string) $identity->getInstitution()
275
        );
276
277
        $tokenCount = $this->institutionConfigurationOptionsService->getMaxNumberOfTokensFor($configurationInstitution);
278
        $identity->setMaxNumberOfTokens($tokenCount);
279
280
        $identity->provePossessionOfU2fDevice(
281
            new SecondFactorId($command->secondFactorId),
282
            new U2fKeyHandle($command->keyHandle),
283
            $this->emailVerificationIsRequired($identity),
284
            $this->configurableSettings->createNewEmailVerificationWindow()
285
        );
286
287
        $this->eventSourcedRepository->save($identity);
288
    }
289
290
    /**
291
     * @param VerifyEmailCommand $command