discutea/ccdn-user-security-bundle
Installation Add the bundle via Composer (if still needed for legacy projects):
composer require codeconsortium/ccdn-user-security-bundle
Register the bundle in config/bundles.php:
return [
// ...
CodeConsortium\CCDNUserSecurityBundle\CCDNUserSecurityBundle::class => ['all' => true],
];
Configuration
Override default settings in config/packages/ccdn_user_security.yaml (if the file exists). Example:
ccdn_user_security:
security_level: 'high' # or 'medium', 'low'
password_policy:
min_length: 12
require_uppercase: true
First Use Case Use the bundle’s security listener to enforce password policies during registration/login:
use CodeConsortium\CCDNUserSecurityBundle\EventListener\SecurityListener;
// Triggered automatically if configured in services.yaml:
// services:
// CodeConsortium\CCDNUserSecurityBundle\EventListener\SecurityListener:
// tags: ['kernel.event_listener', { event: 'security.user.register', method: 'onRegister' }]
Password Validation
Integrate with Symfony’s form validation by extending the PasswordConstraint:
use CodeConsortium\CCDNUserSecurityBundle\Validator\Constraints\Password as CCDNPassword;
$builder->add('plainPassword', CCDNPassword::class, [
'security_level' => 'high',
]);
Event-Driven Security
Listen to built-in events (e.g., security.user.login.failed) to log or block suspicious activity:
// services.yaml
App\EventListener\SecurityEventListener:
tags:
- { name: 'kernel.event_listener', event: 'security.user.login.failed', method: 'onLoginFailed' }
Custom Security Levels
Extend the SecurityLevel enum (if the bundle exposes it) to add project-specific rules:
namespace App\Security;
use CodeConsortium\CCDNUserSecurityBundle\Model\SecurityLevel as BaseSecurityLevel;
class CustomSecurityLevel extends BaseSecurityLevel {
public const EXTRA_STRICT = 'extra_strict';
// ...
}
CCDNUserType for user registration forms.Security component to validate tokens/passwords via SecurityListener.User entity implements CodeConsortium\CCDNUserSecurityBundle\Model\UserInterface.No Longer Supported
Configuration Overrides
services.yaml:
services:
CodeConsortium\CCDNUserSecurityBundle\:
resource: '../vendor/codeconsortium/ccdn-user-security-bundle/*'
exclude: '../vendor/codeconsortium/ccdn-user-security-bundle/{Tests,DependencyInjection,Resources}/*'
Event Naming Conflicts
security.user.register might clash with other bundles. Prefix custom listeners:
// Use 'app.security.user.register' instead of 'security.user.register'
config/packages/dev/ccdn_user_security.yaml:
ccdn_user_security:
debug: true
var/log/dev.log (Symfony’s default).Custom Validators
Extend CodeConsortium\CCDNUserSecurityBundle\Validator\Constraints\PasswordValidator:
namespace App\Validator;
use CodeConsortium\CCDNUserSecurityBundle\Validator\Constraints\PasswordValidator as BaseValidator;
class CustomPasswordValidator extends BaseValidator {
public function isValid($value, Constraint $constraint) {
// Add custom logic
return parent::isValid($value, $constraint);
}
}
Override Templates
Copy templates from vendor/codeconsortium/ccdn-user-security-bundle/Resources/views/ to templates/bundles/ccdnusersecurity/ to customize error messages.
Database Schema
If the bundle adds fields (e.g., failed_login_attempts), ensure your migrations include them:
// Example migration
$table->integer('failed_login_attempts')->default(0);
README.How can I help you explore Laravel packages today?