|  | @@ 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 |