Cómo restringir el registro de usuarios en phpBB a un dominio de correo específico
Si gestionas un foro phpBB y quieres que solo usuarios con correos de un dominio específico puedan registrarse, este tutorial te enseñará cómo crear una extensión personalizada que lo haga sin tocar el núcleo de phpBB. Ideal para foros corporativos o comunidades privadas.
Paso 1: Crear la estructura de la extensión
Dentro de la carpeta ext/ de tu instalación de phpBB, crea la siguiente estructura:
ext/tu_nombre/allow_email_domain/
├── composer.json
├── ext.php
├── event/
│   └── listener.php
└── language/
    └── es/
        └── info_acp.php
- tu_nombre: reemplázalo por tu alias o el nombre de tu proyecto.
 - allow_email_domain: nombre de la extensión.
 
💡 Tip: Mantén los nombres en minúsculas y sin espacios para evitar problemas al activar la extensión.
Paso 2: Crear los archivos de la extensión
1️⃣ composer.json
Define los metadatos de la extensión:
{
    "name": "tu_nombre/allow_email_domain",
    "type": "phpbb-extension",
    "description": "Permite el registro solo con un dominio de correo específico.",
    "version": "1.0.0",
    "author": "Tu Nombre",
    "license": "GPL-2.0-or-later",
    "require": {
        "phpbb/phpbb": ">=3.3.0"
    }
}
2️⃣ ext.php
Archivo mínimo para registrar la extensión:
<?php
namespace tu_nombre\allow_email_domain;
class ext extends \phpbb\extension\base
{
}
3️⃣ event/listener.php
Aquí se valida que el correo pertenezca al dominio permitido:
<?php
namespace tu_nombre\allow_email_domain\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
    protected $user;
    public function __construct(\phpbb\user $user)
    {
        $this->user = $user;
    }
    public static function getSubscribedEvents()
    {
        return [
            'core.ucp_register_validate_data' => 'check_email_domain'
        ];
    }
    public function check_email_domain($event)
    {
        $data = $event['data'];
        // Cambia este valor por tu dominio autorizado
        $allowed_domain = 'dominioautorizado.es';
        if (!preg_match('/@' . preg_quote($allowed_domain, '/') . '$/i', $data['email']))
        {
            $event['error'][] = 'SOLO_DOMINIO_AUTORIZADO';
        }
    }
}
💡 Tip: Cambia 'dominioautorizado.es' por tu dominio real.
4️⃣ language/es/info_acp.php
Mensaje de error para mostrar al usuario:
<?php
$lang = array_merge($lang, array(
    'SOLO_DOMINIO_AUTORIZADO' => 'Solo se permiten registros con correos del dominio autorizado (@dominioautorizado.es).',
));
Paso 3: Instalar y activar la extensión
- Sube la carpeta 
allow_email_domainaext/tu_nombre/. - Entra al ACP → Extensiones → Gestionar extensiones.
 - Activa la extensión Allow Email Domain.
 
✅ Ahora, cualquier intento de registro con un correo que no termine en @dominioautorizado.es será bloqueado automáticamente con un mensaje de error.
Paso 4 (Opcional): Hacer el dominio configurable desde el ACP
Si quieres mayor flexibilidad, puedes modificar la extensión para que el dominio permitido se configure directamente desde el Panel de Administración, sin necesidad de tocar el código cada vez que quieras cambiarlo.
💡 Esto es ideal para foros con varios dominios autorizados o cuando el dominio puede cambiar en el futuro.
Conclusión
Con esta extensión podrás controlar quién puede registrarse en tu foro phpBB sin tocar el núcleo del sistema, manteniendo tu foro seguro y actualizado.
Ventajas de esta solución:
- No modifica archivos centrales de phpBB.
 - Fácil de instalar y activar.
 - Bloquea automáticamente registros de correos no autorizados.