Source of file CredentialRepositoryProviderTrait.php
Size: 2,041 Bytes - Last Modified: 2021-12-23T10:36:18+00:00
/var/www/docs.ssmods.com/process/src/src/CredentialRepositoryProviderTrait.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | <?php declare(strict_types=1); namespace SilverStripe\WebAuthn; use SilverStripe\MFA\Model\RegisteredMethod; use SilverStripe\MFA\Service\RegisteredMethodManager; use SilverStripe\MFA\Store\StoreInterface; use SilverStripe\Security\Member; use Webauthn\PublicKeyCredentialUserEntity; trait CredentialRepositoryProviderTrait { /** * @param StoreInterface $store * @param RegisteredMethod|null $registeredMethod * @return CredentialRepository */ protected function getCredentialRepository( StoreInterface $store, RegisteredMethod $registeredMethod = null ): CredentialRepository { $state = $store->getState(); // Check state from the store (session) if (isset($state['repository']) && $state['repository'] instanceof CredentialRepository) { return $state['repository']; } // Check if the member has an existing webauthn registered method to add to $member = $store->getMember(); if (!$registeredMethod) { $registeredMethod = RegisteredMethodManager::singleton()->getFromMember( $member, new Method() ); } if ($registeredMethod) { $credentialRepository = CredentialRepository::fromArray( (array) json_decode($registeredMethod->Data, true), (string) $member->ID ); } else { $credentialRepository = new CredentialRepository((string) $member->ID); } // Persist the credential repository in the store $store->addState(['repository' => $credentialRepository]); return $credentialRepository; } /** * @param Member $member * @return PublicKeyCredentialUserEntity */ protected function getUserEntity(Member $member): PublicKeyCredentialUserEntity { return new PublicKeyCredentialUserEntity( $member->getName(), (string) $member->ID, $member->getName() ); } } |