class VerificationCodeManager implements SettingsDependent, HasCleanup {

    public boolean isVerificationRequired(Player player) {
        final String name = player.getName();
        return canSendMail
            && !isPlayerVerified(name)
            && permissionsManager.hasPermission(player, PlayerPermission.VERIFICATION_CODE)
            && hasEmail(name);
    }

    @Inject  VerificationCodeManager(Settings settings, DataSource dataSource, EmailService emailService,
                            PermissionsManager permissionsManager);

}