Code Duplication    Length = 18-20 lines in 4 locations

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

@@ 189-206 (lines=18) @@
186
        $this->eventSourcedRepository->save($identity);
187
    }
188
189
    public function handleProveYubikeyPossessionCommand(ProveYubikeyPossessionCommand $command)
190
    {
191
        /** @var IdentityApi $identity */
192
        $identity = $this->eventSourcedRepository->load(new IdentityId($command->identityId));
193
194
        $identity->setMaxNumberOfTokens($this->numberOfTokensPerIdentity);
195
196
        $this->assertSecondFactorIsAllowedFor(new SecondFactorType('yubikey'), $identity->getInstitution());
197
198
        $identity->provePossessionOfYubikey(
199
            new SecondFactorId($command->secondFactorId),
200
            new YubikeyPublicId($command->yubikeyPublicId),
201
            $this->emailVerificationIsRequired($identity),
202
            $this->configurableSettings->createNewEmailVerificationWindow()
203
        );
204
205
        $this->eventSourcedRepository->save($identity);
206
    }
207
208
    /**
209
     * @param ProvePhonePossessionCommand $command
@@ 211-228 (lines=18) @@
208
    /**
209
     * @param ProvePhonePossessionCommand $command
210
     */
211
    public function handleProvePhonePossessionCommand(ProvePhonePossessionCommand $command)
212
    {
213
        /** @var IdentityApi $identity */
214
        $identity = $this->eventSourcedRepository->load(new IdentityId($command->identityId));
215
216
        $this->assertSecondFactorIsAllowedFor(new SecondFactorType('sms'), $identity->getInstitution());
217
218
        $identity->setMaxNumberOfTokens($this->numberOfTokensPerIdentity);
219
220
        $identity->provePossessionOfPhone(
221
            new SecondFactorId($command->secondFactorId),
222
            new PhoneNumber($command->phoneNumber),
223
            $this->emailVerificationIsRequired($identity),
224
            $this->configurableSettings->createNewEmailVerificationWindow()
225
        );
226
227
        $this->eventSourcedRepository->save($identity);
228
    }
229
230
    /**
231
     * @param ProveGssfPossessionCommand $command
@@ 233-252 (lines=20) @@
230
    /**
231
     * @param ProveGssfPossessionCommand $command
232
     */
233
    public function handleProveGssfPossessionCommand(ProveGssfPossessionCommand $command)
234
    {
235
        /** @var IdentityApi $identity */
236
        $identity = $this->eventSourcedRepository->load(new IdentityId($command->identityId));
237
238
        // Assume tiqr is being used as it is the only GSSF currently supported
239
        $this->assertSecondFactorIsAllowedFor(new SecondFactorType('tiqr'), $identity->getInstitution());
240
241
        $identity->setMaxNumberOfTokens($this->numberOfTokensPerIdentity);
242
243
        $identity->provePossessionOfGssf(
244
            new SecondFactorId($command->secondFactorId),
245
            new StepupProvider($command->stepupProvider),
246
            new GssfId($command->gssfId),
247
            $this->emailVerificationIsRequired($identity),
248
            $this->configurableSettings->createNewEmailVerificationWindow()
249
        );
250
251
        $this->eventSourcedRepository->save($identity);
252
    }
253
254
    public function handleProveU2fDevicePossessionCommand(ProveU2fDevicePossessionCommand $command)
255
    {
@@ 254-271 (lines=18) @@
251
        $this->eventSourcedRepository->save($identity);
252
    }
253
254
    public function handleProveU2fDevicePossessionCommand(ProveU2fDevicePossessionCommand $command)
255
    {
256
        /** @var IdentityApi $identity */
257
        $identity = $this->eventSourcedRepository->load(new IdentityId($command->identityId));
258
259
        $this->assertSecondFactorIsAllowedFor(new SecondFactorType('u2f'), $identity->getInstitution());
260
261
        $identity->setMaxNumberOfTokens($this->numberOfTokensPerIdentity);
262
263
        $identity->provePossessionOfU2fDevice(
264
            new SecondFactorId($command->secondFactorId),
265
            new U2fKeyHandle($command->keyHandle),
266
            $this->emailVerificationIsRequired($identity),
267
            $this->configurableSettings->createNewEmailVerificationWindow()
268
        );
269
270
        $this->eventSourcedRepository->save($identity);
271
    }
272
273
    /**
274
     * @param VerifyEmailCommand $command