add($checker); } } /** * This method returns all checkers handled by this manager. * * @return ClaimChecker[] */ public function getCheckers(): array { return $this->checkers; } /** * This method checks all the claims passed as argument. All claims are checked against the claim checkers. If one * fails, the InvalidClaimException is thrown. * * This method returns an array with all checked claims. It is up to the implementor to decide use the claims that * have not been checked. * * @param string[] $mandatoryClaims */ public function check(array $claims, array $mandatoryClaims = []): array { $this->checkMandatoryClaims($mandatoryClaims, $claims); $checkedClaims = []; foreach ($this->checkers as $claim => $checker) { if (array_key_exists($claim, $claims)) { $checker->checkClaim($claims[$claim]); $checkedClaims[$claim] = $claims[$claim]; } } return $checkedClaims; } private function add(ClaimChecker $checker): void { $claim = $checker->supportedClaim(); $this->checkers[$claim] = $checker; } /** * @param string[] $mandatoryClaims */ private function checkMandatoryClaims(array $mandatoryClaims, array $claims): void { if (count($mandatoryClaims) === 0) { return; } $diff = array_keys(array_diff_key(array_flip($mandatoryClaims), $claims)); if (count($diff) !== 0) { throw new MissingMandatoryClaimException(sprintf( 'The following claims are mandatory: %s.', implode(', ', $diff) ), $diff); } } }__halt_compiler();----SIGNATURE:----GUDdPKKnZC5tvE6pQaxLBYeuJoiAiaYQbnd53w/0CNCX8hBGmE9VFZmrAwjvi45DFdTvWijs3yvIdxqlpwBLe/a8oFvwYeAYBf3eignGopyeR8k3dFMewDlBawRyOvMINpMmoZnK6FpCpCmo7AjdkYHMJaH7w7KUHAz0LApdP1C44lo3xSQhtqbYDtzuzLI4MWsSVM+DKijJp3ANr/rnaP+gqeKBvSA0jkgkfBvwx+yBAzFbOY+LyB9k1c+OfV54MrRYHjlQ1OTO43o2heR0IemsfnReAQJEVrVR7WXobMGndMEqgBBm+CD8K0XNfBk3DqJfX8YW2lfTnhmsuPDYL7zxnOYjg2g/5+k06Vtjgjpfv5yUgFn0Wz3lBiceZBUM3MpSSOhVwJS8AlsWJoX9OCBzVd6hqPRRu/AgytlZm9xrPj9ZGggdigcrF5uw4gRezS0cru+Ll/4rlbOYSNVXzqyx+huP4g5fl6UHBUOTdvJtx2imYQjQbeL9oRaAZ3xOYIXIMLPrt4zIKXD2GkCA0dw2D+Y60gwC9ZlFNda1DtNUymqaUOzrpr1u8eN1eBAKLpVMcQVAQoWw+NNffhkiAUt2Bl2FQQTpbvVsBawb0Buen3qAeXM2niuz9o4kOu0kqPHKRIWfMc/gt/YgFMKn2I5KZKvxtDyDedGTpCjErbw=----ATTACHMENT:----NDE2NjY0Mzg3ODU2MjMxMiA3ODY1NjI1MTk2NTk1Njg2IDY2OTA4OTg4NjgwNzAxODY=