it-swarm-es.tech

Deshabilitar el sitio web para todos los usuarios que no hayan iniciado sesión

Sé que hay muchas maneras de hacer esto, sin embargo, cuando pienso profundamente, una desactivación global del sitio puede ser difícil.

Lo que quiero es que cuando un usuario vaya al sitio web, sea redirigido a la página de inicio de sesión sin importar dónde se encuentre. Preferiría no necesitar configuraciones especiales en cada elemento del menú u otra área de la página.

¿Hay una manera simple de hacer esto? ¿O un complemento súper increíble que hace esto? Mis búsquedas hasta ahora han sido en vano. Sin embargo, esa podría ser mi elección de palabras clave en JED/Google.

11
Jordan Ramstad

¿Funcionaría uno de estos?

Solo miembros (Del JED)

Mantenga las miradas indiscretas lejos de parte o de todo su sitio web, mientras permanecen en el anonimato. Opcionalmente, puede permitir que los visitantes se registren directamente en su sitio web con o sin requerir un código de invitación.

registrado solo (desde el JED)

solamente el complemento restringe el acceso al sitio de Joomla solo a usuarios registrados.

Cuando un invitado intenta acceder a cualquier contenido de Joomla, es redirigido a la página de inicio de sesión.

14
Brian Peat

1) Use la ACL incorporada de Joomla!

Recomiendo que sus visitantes ingresen de forma predeterminada a una página de inicio de sesión y utilicen la ACL integrada de Joomla! Utilizando usuarios registrados.

Establezca un elemento del menú de nivel superior con permisos para los usuarios registrados, y luego cada elemento del menú en ese árbol solo estará visible y disponible para los usuarios registrados.

Hay un excelente tutorial sobre ACL en Joomla! Doc.

Sin embargo, los archivos y documentos pueden ser descargados por usuarios no registrados (es decir, si tienen el enlace directo).

En este caso, tendrá que usar una extensión de terceros, si desea proteger esos documentos, como Akeeba Release Systems o SobiPro.

2) Directorios protegidos por contraseña

La forma "más simple" de proteger su sitio es proteger con contraseña su directorio a través de .htaccess /

No es elegante, pero si usa cPanel, por ejemplo, vaya a Seguridad -> Directorios protegidos por contraseña y use el asistente para nombrar directorios, agregar o eliminar usuarios y asignar a esos usuarios al Directorio protegido por contraseña - puede dar a cada usuario un nombre único y contraseña.

Es poco elegante, pero simple y se usa con bastante frecuencia en la práctica; sin embargo, reitero, probablemente sea mejor usar ACL y, si protege los documentos de la descarga, una extensión de terceros.

Si mantiene sus archivos/documentos bajo el directorio protegido por contraseña, también estarán protegidos, lo que requerirá que un usuario con permisos intente acceder a ese directorio para iniciar sesión primero.

5
NivF007

Voy a dar mi respuesta para esto en base a la respuesta de @ Bryan.

El complemento Solo miembros parece muy prometedor, por lo que no hay comentarios al respecto.

El complemento registrado solo es gratuito, sin embargo, no me impresionó el código, así que me tomé la libertad de bifurcarlo y volver a escribirlo y eliminar el código obsoleto .

Además de eso, eliminé el soporte de Community Builder porque ... bueno ... odio a Community Builder:

defined('_JEXEC') or die('Restricted access');

class plgSystemRegisteredonly extends JPlugin
{
    public function onAfterRoute() 
    {
        $app   = JFactory::getApplication('site');
        $input = $app->input;
        $user  = JFactory::getUser();

        // Do nothing if in backend or user is logged in
        if ($app->isAdmin() || !$user->guest)
        {
            return;
        }

        // Get the component, view and task
        $option = $input->get('option');
        $view   = $input->get('view');
        $task   = $input->get('task');

        // If user is logging, registering or requesting user/pass, dont redirect
        if (($option == 'com_users') && (($task == 'login') || ($task == 'register_save') || ($task = 'remindusername') || ($task == 'requestreset')))
        {
            return;
        }

        // If user is at login form, registering or recovering user/password, dont redirect
        if (($option == 'com_users') && (($view == 'login') || ($view == 'reset') || ($view == 'remind') || ($view == 'register')))
        {
            return;
        }

        $app->redirect(JUri::base() . 'index.php?option=com_users&view=login', 'You must be logged in to access this site');
    }
}

Póngalo también en Github: https://github.com/Joomla-StackExchange/registeredOnly

Espero que esto ayude a algunos de ustedes

3
Lodder

Tenía una solicitud del cliente para hacer una extranet para ellos usando Joomla, que tenía que ser 'bloqueada' lo más estrictamente posible. Hice esto configurando el sitio en Sin conexión en Configuración global, luego edité la ACL para dar 1 grupo de usuarios personalizado. Creé el permiso Acceso sin conexión .

Noto en los comentarios que menciona que está usando OAuth para iniciar sesión; algunas extensiones que ayudan con esto se pueden configurar para agregar automáticamente usuarios a un grupo de usuarios, para que luego pueda usar esta funcionalidad para agréguelos al grupo configurado según las instrucciones anteriores.

Luego anulé el offline.php archivo en mi plantilla para que parezca más una página de inicio de sesión de estilo extranet, en lugar de la página predeterminada "Este sitio está fuera de línea".

3
codinghands

Puede establecer el permiso de todos los enlaces del menú como registrados, lo que obliga al usuario a iniciar sesión.

0
Adam B