Classes

Bubble size = executable lines. Hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 10 20 30 Line Coverage (%) Cyclomatic Complexity App\Identity\Domain\User — Coverage: 100.0% | Lines: 52 | Complexity: 26 App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier — Coverage: 100.0% | Lines: 37 | Complexity: 18 App\Identity\Application\Query\CurrentUserView — Coverage: 100.0% | Lines: 26 | Complexity: 3 App\Identity\Infrastructure\Console\GrantAdminCommand — Coverage: 92.3% | Lines: 26 | Complexity: 8 App\Identity\Application\Command\AdminUpdateUserHandler — Coverage: 100.0% | Lines: 23 | Complexity: 10 App\Identity\Application\Query\AdminUserView — Coverage: 100.0% | Lines: 23 | Complexity: 3 App\Identity\Infrastructure\Controllers\Admin\UpdateUserController — Coverage: 95.7% | Lines: 23 | Complexity: 7 App\Identity\Application\Command\SignInWithGoogleHandler — Coverage: 100.0% | Lines: 20 | Complexity: 5 App\Identity\Infrastructure\Trip\MemberDirectoryAdapter — Coverage: 100.0% | Lines: 19 | Complexity: 8 App\Identity\Infrastructure\Controllers\UpdateUserController — Coverage: 100.0% | Lines: 18 | Complexity: 5 App\Identity\Infrastructure\Security\SecurityUser — Coverage: 100.0% | Lines: 18 | Complexity: 11 App\Identity\Application\Command\RegisterUserHandler — Coverage: 100.0% | Lines: 16 | Complexity: 3 App\Identity\Infrastructure\Controllers\RegisterUserController — Coverage: 100.0% | Lines: 15 | Complexity: 4 App\Identity\Application\Command\UpdateUserHandler — Coverage: 100.0% | Lines: 14 | Complexity: 4 App\Identity\Infrastructure\Security\GoogleAuthenticator — Coverage: 100.0% | Lines: 14 | Complexity: 9 App\Identity\Infrastructure\Security\SymfonyValidatorPasswordPolicy — Coverage: 100.0% | Lines: 14 | Complexity: 4 App\Identity\Domain\ValueObject\BirthDate — Coverage: 100.0% | Lines: 13 | Complexity: 10 App\Identity\Infrastructure\Controllers\ChangePasswordController — Coverage: 100.0% | Lines: 13 | Complexity: 4 App\Identity\Application\Query\ListUsersHandler — Coverage: 100.0% | Lines: 12 | Complexity: 2 App\Identity\Infrastructure\Controllers\Admin\DeleteUserController — Coverage: 91.7% | Lines: 12 | Complexity: 5 App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType — Coverage: 100.0% | Lines: 12 | Complexity: 6 App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType — Coverage: 100.0% | Lines: 12 | Complexity: 6 App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType — Coverage: 50.0% | Lines: 12 | Complexity: 6 App\Identity\Infrastructure\Security\UserProvider — Coverage: 100.0% | Lines: 12 | Complexity: 8 App\Identity\Infrastructure\Controllers\SetMyAvatarController — Coverage: 100.0% | Lines: 11 | Complexity: 5 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository — Coverage: 100.0% | Lines: 11 | Complexity: 8 App\Identity\Application\Port\GoogleIdentity — Coverage: 100.0% | Lines: 9 | Complexity: 7 App\Identity\Application\Command\ChangePasswordHandler — Coverage: 100.0% | Lines: 8 | Complexity: 4 App\Identity\Application\Command\ChangeMyAvatarHandler — Coverage: 100.0% | Lines: 7 | Complexity: 3 App\Identity\Application\Command\DeleteUserByAdminHandler — Coverage: 100.0% | Lines: 7 | Complexity: 4 App\Identity\Domain\UserIdentity — Coverage: 100.0% | Lines: 6 | Complexity: 6 App\Identity\Infrastructure\Controllers\DeleteMyAvatarController — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Identity\Infrastructure\Controllers\DeleteUserController — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Identity\Infrastructure\Controllers\MeController — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Identity\Infrastructure\Security\SymfonyPasswordHasher — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Identity\Application\AuthenticatedUserFinder — Coverage: 100.0% | Lines: 5 | Complexity: 3 App\Identity\Application\Command\DeleteUserHandler — Coverage: 100.0% | Lines: 5 | Complexity: 3 App\Identity\Application\Query\GetCurrentUserHandler — Coverage: 100.0% | Lines: 5 | Complexity: 3 App\Identity\Domain\ValueObject\Email — Coverage: 100.0% | Lines: 5 | Complexity: 5 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository — Coverage: 100.0% | Lines: 5 | Complexity: 3 App\Identity\Domain\ValueObject\HashedPassword — Coverage: 100.0% | Lines: 4 | Complexity: 4 App\Identity\Infrastructure\Controllers\Admin\ListUsersController — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Identity\Application\AvatarCleanupOnUserDeletion — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Identity\Domain\Exceptions\AdminSelfAction — Coverage: 100.0% | Lines: 3 | Complexity: 3 App\Identity\Infrastructure\Security\UserChecker — Coverage: 100.0% | Lines: 3 | Complexity: 4 App\Identity\Infrastructure\Http\ResolvesAuthenticatedUser — Coverage: 100.0% | Lines: 3 | Complexity: 1 App\Identity\Infrastructure\Http\ValidatesUserId — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Identity\Infrastructure\Controllers\GoogleSignInConfigController — Coverage: 100.0% | Lines: 2 | Complexity: 2 App\Identity\Application\Command\AdminUpdateUserCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\ChangeMyAvatarCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\ChangePasswordCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\DeleteUserByAdminCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\DeleteUserCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\RegisterUserCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\SignInWithGoogleCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\UpdateUserCommand — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Query\GetCurrentUserQuery — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Query\ListUsersQuery — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\EmailAlreadyInUse — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\InvalidCurrentPassword — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\UserNotFound — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\WeakPassword — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\Type\UserIdType — Coverage: 100.0% | Lines: 1 | Complexity: 1

 

Sorted by descending CRAP (Change Risk Anti-Patterns) index.

Class CRAP Coverage
App\Identity\Domain\User26100.0%
App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier18100.0%
App\Identity\Infrastructure\Security\SecurityUser11100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType10.5050.0%
App\Identity\Application\Command\AdminUpdateUserHandler10100.0%
App\Identity\Domain\ValueObject\BirthDate10100.0%
App\Identity\Infrastructure\Security\GoogleAuthenticator9100.0%
App\Identity\Infrastructure\Console\GrantAdminCommand8.0392.3%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository8100.0%
App\Identity\Infrastructure\Security\UserProvider8100.0%
App\Identity\Infrastructure\Trip\MemberDirectoryAdapter8100.0%
App\Identity\Application\Port\GoogleIdentity7100.0%
App\Identity\Infrastructure\Controllers\Admin\UpdateUserController795.7%
App\Identity\Domain\UserIdentity6100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType6100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType6100.0%
App\Identity\Infrastructure\Controllers\Admin\DeleteUserController5.0191.7%
App\Identity\Application\Command\SignInWithGoogleHandler5100.0%
App\Identity\Domain\ValueObject\Email5100.0%
App\Identity\Infrastructure\Controllers\SetMyAvatarController5100.0%
App\Identity\Infrastructure\Controllers\UpdateUserController5100.0%
App\Identity\Application\Command\ChangePasswordHandler4100.0%
App\Identity\Application\Command\DeleteUserByAdminHandler4100.0%
App\Identity\Application\Command\UpdateUserHandler4100.0%
App\Identity\Domain\ValueObject\HashedPassword4100.0%
App\Identity\Infrastructure\Controllers\ChangePasswordController4100.0%
App\Identity\Infrastructure\Controllers\RegisterUserController4100.0%
App\Identity\Infrastructure\Security\SymfonyValidatorPasswordPolicy4100.0%
App\Identity\Infrastructure\Security\UserChecker4100.0%
App\Identity\Application\AuthenticatedUserFinder3100.0%
App\Identity\Application\Command\ChangeMyAvatarHandler3100.0%
App\Identity\Application\Command\DeleteUserHandler3100.0%
App\Identity\Application\Command\RegisterUserHandler3100.0%
App\Identity\Application\Query\AdminUserView3100.0%
App\Identity\Application\Query\CurrentUserView3100.0%
App\Identity\Application\Query\GetCurrentUserHandler3100.0%
App\Identity\Domain\Exceptions\AdminSelfAction3100.0%
App\Identity\Infrastructure\Controllers\DeleteMyAvatarController3100.0%
App\Identity\Infrastructure\Controllers\DeleteUserController3100.0%
App\Identity\Infrastructure\Controllers\MeController3100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository3100.0%
App\Identity\Infrastructure\Security\SymfonyPasswordHasher3100.0%
App\Identity\Application\AvatarCleanupOnUserDeletion2100.0%
App\Identity\Application\Query\ListUsersHandler2100.0%
App\Identity\Infrastructure\Controllers\Admin\ListUsersController2100.0%
App\Identity\Infrastructure\Controllers\GoogleSignInConfigController2100.0%
App\Identity\Infrastructure\Http\ValidatesUserId2100.0%
App\Identity\Application\Command\AdminUpdateUserCommand1100.0%
App\Identity\Application\Command\ChangeMyAvatarCommand1100.0%
App\Identity\Application\Command\ChangePasswordCommand1100.0%
App\Identity\Application\Command\DeleteUserByAdminCommand1100.0%
App\Identity\Application\Command\DeleteUserCommand1100.0%
App\Identity\Application\Command\RegisterUserCommand1100.0%
App\Identity\Application\Command\SignInWithGoogleCommand1100.0%
App\Identity\Application\Command\UpdateUserCommand1100.0%
App\Identity\Application\Query\GetCurrentUserQuery1100.0%
App\Identity\Application\Query\ListUsersQuery1100.0%
App\Identity\Domain\Exceptions\EmailAlreadyInUse1100.0%
App\Identity\Domain\Exceptions\InvalidCurrentPassword1100.0%
App\Identity\Domain\Exceptions\UserNotFound1100.0%
App\Identity\Domain\Exceptions\WeakPassword1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\UserIdType1100.0%
App\Identity\Infrastructure\Http\ResolvesAuthenticatedUser1100.0%
App\Identity\Domain\ValueObject\IdentityProvider0100.0%
App\Identity\Domain\ValueObject\UserId0100.0%
App\Identity\Domain\ValueObject\UserStatus0100.0%
App\Identity\Infrastructure\Security\RefreshToken0100.0%

Methods

Bubble size = executable lines. Hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 5 10 15 20 Line Coverage (%) Cyclomatic Complexity App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::verify — Coverage: 100.0% | Lines: 34 | Complexity: 15 App\Identity\Application\Command\AdminUpdateUserHandler::handle — Coverage: 100.0% | Lines: 22 | Complexity: 9 App\Identity\Infrastructure\Console\GrantAdminCommand::execute — Coverage: 90.9% | Lines: 22 | Complexity: 6 App\Identity\Infrastructure\Controllers\Admin\UpdateUserController::update — Coverage: 95.5% | Lines: 22 | Complexity: 6 App\Identity\Application\Command\SignInWithGoogleHandler::handle — Coverage: 100.0% | Lines: 19 | Complexity: 4 App\Identity\Infrastructure\Controllers\UpdateUserController::update — Coverage: 100.0% | Lines: 17 | Complexity: 4 App\Identity\Application\Command\RegisterUserHandler::handle — Coverage: 100.0% | Lines: 15 | Complexity: 2 App\Identity\Infrastructure\Controllers\RegisterUserController::register — Coverage: 100.0% | Lines: 14 | Complexity: 3 App\Identity\Application\Command\UpdateUserHandler::handle — Coverage: 100.0% | Lines: 13 | Complexity: 3 App\Identity\Application\Query\CurrentUserView::fromUser — Coverage: 100.0% | Lines: 13 | Complexity: 1 App\Identity\Infrastructure\Security\SymfonyValidatorPasswordPolicy::assert — Coverage: 100.0% | Lines: 13 | Complexity: 3 App\Identity\Application\Query\CurrentUserView::toArray — Coverage: 100.0% | Lines: 12 | Complexity: 1 App\Identity\Infrastructure\Controllers\ChangePasswordController::changePassword — Coverage: 100.0% | Lines: 12 | Complexity: 3 App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::summariesOf — Coverage: 100.0% | Lines: 12 | Complexity: 3 App\Identity\Application\Query\AdminUserView::fromUser — Coverage: 100.0% | Lines: 11 | Complexity: 1 App\Identity\Application\Query\AdminUserView::toArray — Coverage: 100.0% | Lines: 11 | Complexity: 1 App\Identity\Application\Query\ListUsersHandler::handle — Coverage: 100.0% | Lines: 11 | Complexity: 1 App\Identity\Domain\User::register — Coverage: 100.0% | Lines: 11 | Complexity: 1 App\Identity\Domain\User::registerWithoutPassword — Coverage: 100.0% | Lines: 11 | Complexity: 1 App\Identity\Infrastructure\Controllers\Admin\DeleteUserController::delete — Coverage: 90.9% | Lines: 11 | Complexity: 4 App\Identity\Infrastructure\Controllers\SetMyAvatarController::set — Coverage: 100.0% | Lines: 10 | Complexity: 4 App\Identity\Infrastructure\Security\GoogleAuthenticator::authenticate — Coverage: 100.0% | Lines: 10 | Complexity: 4 App\Identity\Application\Port\GoogleIdentity::nameParts — Coverage: 100.0% | Lines: 8 | Complexity: 6 App\Identity\Infrastructure\Security\SecurityUser::fromDomain — Coverage: 100.0% | Lines: 8 | Complexity: 1 App\Identity\Application\Command\ChangePasswordHandler::handle — Coverage: 100.0% | Lines: 7 | Complexity: 3 App\Identity\Domain\ValueObject\BirthDate::__construct — Coverage: 100.0% | Lines: 7 | Complexity: 3 App\Identity\Infrastructure\Security\UserProvider::loadUserByIdentifier — Coverage: 100.0% | Lines: 7 | Complexity: 3 App\Identity\Application\Command\ChangeMyAvatarHandler::handle — Coverage: 100.0% | Lines: 6 | Complexity: 2 App\Identity\Application\Command\DeleteUserByAdminHandler::handle — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Identity\Domain\User::update — Coverage: 100.0% | Lines: 6 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::convertToDatabaseValue — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::convertToDatabaseValue — Coverage: 100.0% | Lines: 6 | Complexity: 3 App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::convertToDatabaseValue — Coverage: 50.0% | Lines: 6 | Complexity: 3 App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::findIdByEmail — Coverage: 100.0% | Lines: 6 | Complexity: 4 App\Identity\Domain\User::sanitizeName — Coverage: 100.0% | Lines: 5 | Complexity: 3 App\Identity\Infrastructure\Controllers\DeleteMyAvatarController::delete — Coverage: 100.0% | Lines: 5 | Complexity: 2 App\Identity\Infrastructure\Controllers\DeleteUserController::delete — Coverage: 100.0% | Lines: 5 | Complexity: 2 App\Identity\Infrastructure\Controllers\MeController::me — Coverage: 100.0% | Lines: 5 | Complexity: 2 App\Identity\Application\AuthenticatedUserFinder::getOrFail — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Identity\Application\Command\DeleteUserHandler::handle — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Identity\Application\Query\GetCurrentUserHandler::handle — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::convertToPHPValue — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::convertToPHPValue — Coverage: 100.0% | Lines: 4 | Complexity: 2 App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::convertToPHPValue — Coverage: 75.0% | Lines: 4 | Complexity: 2 App\Identity\Infrastructure\Console\GrantAdminCommand::configure — Coverage: 100.0% | Lines: 3 | Complexity: 1 App\Identity\Infrastructure\Controllers\Admin\ListUsersController::list — Coverage: 100.0% | Lines: 3 | Complexity: 1 App\Identity\Infrastructure\Security\SymfonyPasswordHasher::verify — Coverage: 100.0% | Lines: 3 | Complexity: 1 App\Identity\Infrastructure\Security\UserProvider::refreshUser — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Identity\Infrastructure\Http\ResolvesAuthenticatedUser::securityUser — Coverage: 100.0% | Lines: 3 | Complexity: 1 App\Identity\Infrastructure\Http\ValidatesUserId::parseUserId — Coverage: 100.0% | Lines: 3 | Complexity: 2 App\Identity\Application\AvatarCleanupOnUserDeletion::onUserDeletion — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Domain\UserIdentity::__construct — Coverage: 100.0% | Lines: 2 | Complexity: 2 App\Identity\Domain\ValueObject\BirthDate::age — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Domain\ValueObject\Email::__construct — Coverage: 100.0% | Lines: 2 | Complexity: 2 App\Identity\Domain\ValueObject\HashedPassword::__construct — Coverage: 100.0% | Lines: 2 | Complexity: 2 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::save — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::ofProviderSubject — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::save — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::remove — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::paginate — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::getSQLDeclaration — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::getSQLDeclaration — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::getSQLDeclaration — Coverage: 0.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::claim — Coverage: 100.0% | Lines: 2 | Complexity: 2 App\Identity\Infrastructure\Security\SecurityUser::getUserIdentifier — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Security\SymfonyPasswordHasher::hash — Coverage: 100.0% | Lines: 2 | Complexity: 1 App\Identity\Infrastructure\Security\UserChecker::checkPreAuth — Coverage: 100.0% | Lines: 2 | Complexity: 3 App\Identity\Application\AuthenticatedUserFinder::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\AvatarCleanupOnUserDeletion::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\AdminUpdateUserCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\AdminUpdateUserHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\ChangeMyAvatarCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\ChangeMyAvatarHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\ChangePasswordCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\ChangePasswordHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\DeleteUserByAdminCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\DeleteUserByAdminHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\DeleteUserCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\DeleteUserHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\RegisterUserCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\RegisterUserHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\SignInWithGoogleCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\SignInWithGoogleHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\UpdateUserCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Command\UpdateUserHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Port\GoogleIdentity::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Query\AdminUserView::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Query\CurrentUserView::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Query\GetCurrentUserHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Query\GetCurrentUserQuery::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Query\ListUsersHandler::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Application\Query\ListUsersQuery::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\AdminSelfAction::cannotRevokeSelf — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\AdminSelfAction::cannotDeleteSelf — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\AdminSelfAction::cannotSuspendSelf — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\EmailAlreadyInUse::of — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\InvalidCurrentPassword::create — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\UserNotFound::of — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\Exceptions\WeakPassword::of — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::changePassword — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::grantAdmin — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::revokeAdmin — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::isAdmin — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::suspend — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::activate — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::status — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::id — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::email — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::password — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::hasPassword — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::preferredCurrency — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::name — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::surnames — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::birthDate — Coverage: 100.0% | Lines: 1 | Complexity: 2 App\Identity\Domain\User::createdAt — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::avatarName — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\User::changeAvatar — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\UserIdentity::provider — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\UserIdentity::subject — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\UserIdentity::userId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\UserIdentity::createdAt — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\ValueObject\BirthDate::fromDate — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\ValueObject\BirthDate::fromNullable — Coverage: 100.0% | Lines: 1 | Complexity: 3 App\Identity\Domain\ValueObject\BirthDate::toDateTimeImmutable — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\ValueObject\BirthDate::value — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\ValueObject\Email::__toString — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\ValueObject\Email::value — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\ValueObject\Email::equals — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\ValueObject\HashedPassword::__toString — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Domain\ValueObject\HashedPassword::value — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Console\GrantAdminCommand::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\Admin\DeleteUserController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\Admin\ListUsersController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\Admin\UpdateUserController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\ChangePasswordController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\DeleteMyAvatarController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\DeleteUserController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\GoogleSignInConfigController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\GoogleSignInConfigController::config — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\MeController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\RegisterUserController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\SetMyAvatarController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Controllers\UpdateUserController::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::ofId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::ofEmail — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::existsByEmail — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::count — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Persistence\Doctrine\Type\UserIdType::className — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\GoogleAuthenticator::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\GoogleAuthenticator::supports — Coverage: 100.0% | Lines: 1 | Complexity: 2 App\Identity\Infrastructure\Security\GoogleAuthenticator::onAuthenticationSuccess — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\GoogleAuthenticator::onAuthenticationFailure — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SecurityUser::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SecurityUser::userId — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SecurityUser::preferredCurrency — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SecurityUser::getPassword — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SecurityUser::isAdmin — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SecurityUser::isSuspended — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SecurityUser::getRoles — Coverage: 100.0% | Lines: 1 | Complexity: 2 App\Identity\Infrastructure\Security\SecurityUser::eraseCredentials — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SymfonyPasswordHasher::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\SymfonyValidatorPasswordPolicy::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\UserChecker::checkPostAuth — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\UserProvider::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 App\Identity\Infrastructure\Security\UserProvider::supportsClass — Coverage: 100.0% | Lines: 1 | Complexity: 2 App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1

 

Sorted by descending CRAP (Change Risk Anti-Patterns) index.

Method CRAP Coverage
App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::verify15100.0%
App\Identity\Application\Command\AdminUpdateUserHandler::handle9100.0%
App\Identity\Infrastructure\Console\GrantAdminCommand::execute6.0390.9%
App\Identity\Application\Port\GoogleIdentity::nameParts6100.0%
App\Identity\Infrastructure\Controllers\Admin\UpdateUserController::update695.5%
App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::convertToDatabaseValue4.1250.0%
App\Identity\Infrastructure\Controllers\Admin\DeleteUserController::delete4.0190.9%
App\Identity\Application\Command\SignInWithGoogleHandler::handle4100.0%
App\Identity\Infrastructure\Controllers\SetMyAvatarController::set4100.0%
App\Identity\Infrastructure\Controllers\UpdateUserController::update4100.0%
App\Identity\Infrastructure\Security\GoogleAuthenticator::authenticate4100.0%
App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::findIdByEmail4100.0%
App\Identity\Application\Command\ChangePasswordHandler::handle3100.0%
App\Identity\Application\Command\DeleteUserByAdminHandler::handle3100.0%
App\Identity\Application\Command\UpdateUserHandler::handle3100.0%
App\Identity\Domain\User::sanitizeName3100.0%
App\Identity\Domain\ValueObject\BirthDate::__construct3100.0%
App\Identity\Domain\ValueObject\BirthDate::fromNullable3100.0%
App\Identity\Infrastructure\Controllers\ChangePasswordController::changePassword3100.0%
App\Identity\Infrastructure\Controllers\RegisterUserController::register3100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::convertToDatabaseValue3100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::convertToDatabaseValue3100.0%
App\Identity\Infrastructure\Security\SymfonyValidatorPasswordPolicy::assert3100.0%
App\Identity\Infrastructure\Security\UserChecker::checkPreAuth3100.0%
App\Identity\Infrastructure\Security\UserProvider::loadUserByIdentifier3100.0%
App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::summariesOf3100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::convertToPHPValue2.0675.0%
App\Identity\Application\AuthenticatedUserFinder::getOrFail2100.0%
App\Identity\Application\Command\ChangeMyAvatarHandler::handle2100.0%
App\Identity\Application\Command\DeleteUserHandler::handle2100.0%
App\Identity\Application\Command\RegisterUserHandler::handle2100.0%
App\Identity\Application\Query\GetCurrentUserHandler::handle2100.0%
App\Identity\Domain\User::birthDate2100.0%
App\Identity\Domain\UserIdentity::__construct2100.0%
App\Identity\Domain\ValueObject\Email::__construct2100.0%
App\Identity\Domain\ValueObject\HashedPassword::__construct2100.0%
App\Identity\Infrastructure\Controllers\DeleteMyAvatarController::delete2100.0%
App\Identity\Infrastructure\Controllers\DeleteUserController::delete2100.0%
App\Identity\Infrastructure\Controllers\MeController::me2100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::convertToPHPValue2100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::convertToPHPValue2100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\UserStatusType::getSQLDeclaration20.0%
App\Identity\Infrastructure\Security\GoogleAuthenticator::supports2100.0%
App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::claim2100.0%
App\Identity\Infrastructure\Security\SecurityUser::getRoles2100.0%
App\Identity\Infrastructure\Security\UserProvider::refreshUser2100.0%
App\Identity\Infrastructure\Security\UserProvider::supportsClass2100.0%
App\Identity\Infrastructure\Http\ValidatesUserId::parseUserId2100.0%
App\Identity\Application\AuthenticatedUserFinder::__construct1100.0%
App\Identity\Application\AvatarCleanupOnUserDeletion::__construct1100.0%
App\Identity\Application\AvatarCleanupOnUserDeletion::onUserDeletion1100.0%
App\Identity\Application\Command\AdminUpdateUserCommand::__construct1100.0%
App\Identity\Application\Command\AdminUpdateUserHandler::__construct1100.0%
App\Identity\Application\Command\ChangeMyAvatarCommand::__construct1100.0%
App\Identity\Application\Command\ChangeMyAvatarHandler::__construct1100.0%
App\Identity\Application\Command\ChangePasswordCommand::__construct1100.0%
App\Identity\Application\Command\ChangePasswordHandler::__construct1100.0%
App\Identity\Application\Command\DeleteUserByAdminCommand::__construct1100.0%
App\Identity\Application\Command\DeleteUserByAdminHandler::__construct1100.0%
App\Identity\Application\Command\DeleteUserCommand::__construct1100.0%
App\Identity\Application\Command\DeleteUserHandler::__construct1100.0%
App\Identity\Application\Command\RegisterUserCommand::__construct1100.0%
App\Identity\Application\Command\RegisterUserHandler::__construct1100.0%
App\Identity\Application\Command\SignInWithGoogleCommand::__construct1100.0%
App\Identity\Application\Command\SignInWithGoogleHandler::__construct1100.0%
App\Identity\Application\Command\UpdateUserCommand::__construct1100.0%
App\Identity\Application\Command\UpdateUserHandler::__construct1100.0%
App\Identity\Application\Port\GoogleIdentity::__construct1100.0%
App\Identity\Application\Query\AdminUserView::__construct1100.0%
App\Identity\Application\Query\AdminUserView::fromUser1100.0%
App\Identity\Application\Query\AdminUserView::toArray1100.0%
App\Identity\Application\Query\CurrentUserView::__construct1100.0%
App\Identity\Application\Query\CurrentUserView::fromUser1100.0%
App\Identity\Application\Query\CurrentUserView::toArray1100.0%
App\Identity\Application\Query\GetCurrentUserHandler::__construct1100.0%
App\Identity\Application\Query\GetCurrentUserQuery::__construct1100.0%
App\Identity\Application\Query\ListUsersHandler::__construct1100.0%
App\Identity\Application\Query\ListUsersHandler::handle1100.0%
App\Identity\Application\Query\ListUsersQuery::__construct1100.0%
App\Identity\Domain\Exceptions\AdminSelfAction::cannotRevokeSelf1100.0%
App\Identity\Domain\Exceptions\AdminSelfAction::cannotDeleteSelf1100.0%
App\Identity\Domain\Exceptions\AdminSelfAction::cannotSuspendSelf1100.0%
App\Identity\Domain\Exceptions\EmailAlreadyInUse::of1100.0%
App\Identity\Domain\Exceptions\InvalidCurrentPassword::create1100.0%
App\Identity\Domain\Exceptions\UserNotFound::of1100.0%
App\Identity\Domain\Exceptions\WeakPassword::of1100.0%
App\Identity\Domain\User::__construct1100.0%
App\Identity\Domain\User::register1100.0%
App\Identity\Domain\User::registerWithoutPassword1100.0%
App\Identity\Domain\User::update1100.0%
App\Identity\Domain\User::changePassword1100.0%
App\Identity\Domain\User::grantAdmin1100.0%
App\Identity\Domain\User::revokeAdmin1100.0%
App\Identity\Domain\User::isAdmin1100.0%
App\Identity\Domain\User::suspend1100.0%
App\Identity\Domain\User::activate1100.0%
App\Identity\Domain\User::status1100.0%
App\Identity\Domain\User::id1100.0%
App\Identity\Domain\User::email1100.0%
App\Identity\Domain\User::password1100.0%
App\Identity\Domain\User::hasPassword1100.0%
App\Identity\Domain\User::preferredCurrency1100.0%
App\Identity\Domain\User::name1100.0%
App\Identity\Domain\User::surnames1100.0%
App\Identity\Domain\User::createdAt1100.0%
App\Identity\Domain\User::avatarName1100.0%
App\Identity\Domain\User::changeAvatar1100.0%
App\Identity\Domain\UserIdentity::provider1100.0%
App\Identity\Domain\UserIdentity::subject1100.0%
App\Identity\Domain\UserIdentity::userId1100.0%
App\Identity\Domain\UserIdentity::createdAt1100.0%
App\Identity\Domain\ValueObject\BirthDate::fromDate1100.0%
App\Identity\Domain\ValueObject\BirthDate::age1100.0%
App\Identity\Domain\ValueObject\BirthDate::toDateTimeImmutable1100.0%
App\Identity\Domain\ValueObject\BirthDate::value1100.0%
App\Identity\Domain\ValueObject\Email::__toString1100.0%
App\Identity\Domain\ValueObject\Email::value1100.0%
App\Identity\Domain\ValueObject\Email::equals1100.0%
App\Identity\Domain\ValueObject\HashedPassword::__toString1100.0%
App\Identity\Domain\ValueObject\HashedPassword::value1100.0%
App\Identity\Infrastructure\Console\GrantAdminCommand::__construct1100.0%
App\Identity\Infrastructure\Console\GrantAdminCommand::configure1100.0%
App\Identity\Infrastructure\Controllers\Admin\DeleteUserController::__construct1100.0%
App\Identity\Infrastructure\Controllers\Admin\ListUsersController::__construct1100.0%
App\Identity\Infrastructure\Controllers\Admin\ListUsersController::list1100.0%
App\Identity\Infrastructure\Controllers\Admin\UpdateUserController::__construct1100.0%
App\Identity\Infrastructure\Controllers\ChangePasswordController::__construct1100.0%
App\Identity\Infrastructure\Controllers\DeleteMyAvatarController::__construct1100.0%
App\Identity\Infrastructure\Controllers\DeleteUserController::__construct1100.0%
App\Identity\Infrastructure\Controllers\GoogleSignInConfigController::__construct1100.0%
App\Identity\Infrastructure\Controllers\GoogleSignInConfigController::config1100.0%
App\Identity\Infrastructure\Controllers\MeController::__construct1100.0%
App\Identity\Infrastructure\Controllers\RegisterUserController::__construct1100.0%
App\Identity\Infrastructure\Controllers\SetMyAvatarController::__construct1100.0%
App\Identity\Infrastructure\Controllers\UpdateUserController::__construct1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::__construct1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::save1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserIdentityRepository::ofProviderSubject1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::__construct1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::save1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::remove1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::ofId1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::ofEmail1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::existsByEmail1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::paginate1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\DoctrineUserRepository::count1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\EmailType::getSQLDeclaration1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\HashedPasswordType::getSQLDeclaration1100.0%
App\Identity\Infrastructure\Persistence\Doctrine\Type\UserIdType::className1100.0%
App\Identity\Infrastructure\Security\GoogleAuthenticator::__construct1100.0%
App\Identity\Infrastructure\Security\GoogleAuthenticator::onAuthenticationSuccess1100.0%
App\Identity\Infrastructure\Security\GoogleAuthenticator::onAuthenticationFailure1100.0%
App\Identity\Infrastructure\Security\GoogleTokenInfoVerifier::__construct1100.0%
App\Identity\Infrastructure\Security\SecurityUser::__construct1100.0%
App\Identity\Infrastructure\Security\SecurityUser::fromDomain1100.0%
App\Identity\Infrastructure\Security\SecurityUser::userId1100.0%
App\Identity\Infrastructure\Security\SecurityUser::preferredCurrency1100.0%
App\Identity\Infrastructure\Security\SecurityUser::getUserIdentifier1100.0%
App\Identity\Infrastructure\Security\SecurityUser::getPassword1100.0%
App\Identity\Infrastructure\Security\SecurityUser::isAdmin1100.0%
App\Identity\Infrastructure\Security\SecurityUser::isSuspended1100.0%
App\Identity\Infrastructure\Security\SecurityUser::eraseCredentials1100.0%
App\Identity\Infrastructure\Security\SymfonyPasswordHasher::__construct1100.0%
App\Identity\Infrastructure\Security\SymfonyPasswordHasher::hash1100.0%
App\Identity\Infrastructure\Security\SymfonyPasswordHasher::verify1100.0%
App\Identity\Infrastructure\Security\SymfonyValidatorPasswordPolicy::__construct1100.0%
App\Identity\Infrastructure\Security\UserChecker::checkPostAuth1100.0%
App\Identity\Infrastructure\Security\UserProvider::__construct1100.0%
App\Identity\Infrastructure\Trip\MemberDirectoryAdapter::__construct1100.0%
App\Identity\Infrastructure\Http\ResolvesAuthenticatedUser::securityUser1100.0%