user = $user; } /** * Find a single hardware security token for a user by uzing the credential ID. */ public function findOneByCredentialId(string $id): ?PublicKeyCredentialSource { /** @var \Pterodactyl\Models\SecurityKey $key */ $key = $this->user->securityKeys() ->where('public_key_id', base64_encode($id)) ->first(); return optional($key)->getPublicKeyCredentialSource(); } /** * Find all of the hardware tokens that exist for the user using the given * entity handle. */ public function findAllForUserEntity(PublicKeyCredentialUserEntity $entity): array { $results = $this->user->securityKeys() ->where('user_handle', $entity->getId()) ->get(); return $results->map(function (SecurityKey $key) { return $key->getPublicKeyCredentialSource(); })->values()->toArray(); } /** * Save a credential to the database and link it with the user. * * @throws \Throwable */ public function saveCredentialSource(PublicKeyCredentialSource $source): void { // no-op — we handle creation of the keys in StoreSecurityKeyService // // If you put logic in here it is triggered on each login. } /** * Returns a new instance of the repository with the provided user attached. */ public static function factory(User $user): self { return Container::getInstance()->make(static::class, ['user' => $user]); } }