@@ 143-170 (lines=28) @@ | ||
140 | $vettedSecondFactors->getTotalItems() > 0; |
|
141 | } |
|
142 | ||
143 | public function identityHasSecondFactorOfStateWithId($identityId, $state, $secondFactorId) |
|
144 | { |
|
145 | switch ($state) { |
|
146 | case 'unverified': |
|
147 | $secondFactors = $this->findUnverifiedByIdentity($identityId); |
|
148 | break; |
|
149 | case 'verified': |
|
150 | $secondFactors = $this->findVerifiedByIdentity($identityId); |
|
151 | break; |
|
152 | case 'vetted': |
|
153 | $secondFactors = $this->findVettedByIdentity($identityId); |
|
154 | break; |
|
155 | default: |
|
156 | throw new LogicException(sprintf('Invalid second factor state "%s" given.', $state)); |
|
157 | } |
|
158 | ||
159 | if (count($secondFactors->getElements()) === 0) { |
|
160 | return false; |
|
161 | } |
|
162 | ||
163 | foreach ($secondFactors->getElements() as $secondFactor) { |
|
164 | if ($secondFactor->id === $secondFactorId) { |
|
165 | return true; |
|
166 | } |
|
167 | } |
|
168 | ||
169 | return false; |
|
170 | } |
|
171 | ||
172 | /** |
|
173 | * Tests if the identity owns a second factor token for a given state, with a satisfiable LoA |
|
@@ 180-207 (lines=28) @@ | ||
177 | * @param Loa $loa |
|
178 | * @return bool |
|
179 | */ |
|
180 | public function identityHasSecondFactorOfStateWithMinimalLoa($identityId, $state, Loa $loa) |
|
181 | { |
|
182 | switch ($state) { |
|
183 | case 'unverified': |
|
184 | $secondFactors = $this->findUnverifiedByIdentity($identityId); |
|
185 | break; |
|
186 | case 'verified': |
|
187 | $secondFactors = $this->findVerifiedByIdentity($identityId); |
|
188 | break; |
|
189 | case 'vetted': |
|
190 | $secondFactors = $this->findVettedByIdentity($identityId); |
|
191 | break; |
|
192 | default: |
|
193 | throw new LogicException(sprintf('Invalid second factor state "%s" given.', $state)); |
|
194 | } |
|
195 | ||
196 | if (count($secondFactors->getElements()) === 0) { |
|
197 | return false; |
|
198 | } |
|
199 | ||
200 | foreach ($secondFactors->getElements() as $secondFactor) { |
|
201 | if ($this->secondFactorTypeService->canSatisfy(new SecondFactorType($secondFactor->type), $loa)) { |
|
202 | return true; |
|
203 | } |
|
204 | } |
|
205 | ||
206 | return false; |
|
207 | } |
|
208 | ||
209 | /** |
|
210 | * Returns the given registrant's unverified second factors. |