it-swarm.dev

Disabilita il sito Web per tutti tranne gli utenti che hanno effettuato l'accesso

So che ci sono molti modi per farlo, tuttavia quando penso profondamente, una disabilitazione globale del sito potrebbe essere difficile.

Quello che voglio è quando un utente accede al sito Web, viene reindirizzato alla pagina di accesso, indipendentemente da dove si trova. Preferirei non aver bisogno di impostazioni speciali in ogni voce di menu o altra area della pagina.

C'è un modo semplice per fare questo? O un plugin super fantastico che fa questo? Le mie ricerche finora sono state vane. Tuttavia, potrebbe essere solo la mia scelta di parole chiave in JED/Google.

11
Jordan Ramstad

Uno di questi funzionerebbe?

Solo membri (Dal JED)

Tieni gli occhi indiscreti lontano da parte o dal tuo intero sito Web, mentre rimangono anonimi. Facoltativamente, puoi consentire ai visitatori di registrarsi direttamente al tuo sito Web con o senza richiedere un codice di invito.

registerOnly (Dal JED)

registerSolo plug-in limita l'accesso al sito Joomla solo agli utenti registrati.

Quando un ospite tenta di accedere a qualsiasi contenuto di Joomla, viene reindirizzato alla pagina di accesso.

14
Brian Peat

1) Usa l'ACL incorporato di Joomla!

Ti consiglio di impostare come impostazione predefinita i tuoi visitatori su una pagina di accesso e di utilizzare l'ACL incorporato di Joomla! Utilizzando Utenti registrati.

Imposta una voce di menu di livello superiore con autorizzazioni per gli utenti registrati, quindi ogni voce di menu su quell'albero sarà visibile e disponibile solo per gli utenti registrati.

C'è un eccellente tutorial su ACL in Joomla! Documenti.

Tuttavia, i file e i documenti possono ancora essere scaricati da utenti non registrati (ovvero se hanno il collegamento diretto).

In questo caso, dovrai utilizzare un'estensione di terze parti, se desideri proteggere quei documenti, come Akeeba Release Systems o SobiPro.

2) Directory protette da password

Il modo "più semplice" per proteggere il tuo sito è proteggere con password la tua directory tramite .htaccess /

È inelegante, ma se si utilizza cPanel, ad esempio, andare su Sicurezza -> Directory protette da password e utilizzare la procedura guidata per denominare le directory, aggiungere o rimuovere utenti e assegnare quegli utenti alla Directory protetta da password - è possibile assegnare a ciascun utente un nome univoco e password.

È inelegante, ma semplice e usato abbastanza spesso in pratica - tuttavia, lo ripeto, probabilmente è meglio usare ACL e se proteggere i documenti dal download, un'estensione di terze parti.

Se mantieni i tuoi file/documenti nella directory protetta da password, anche quelli saranno protetti - richiedendo un utente con autorizzazioni che provano ad accedere prima a quella directory per effettuare il login.

5
NivF007

Darò la mia risposta per questo sulla base della risposta di @ Bryan.

Il plug-in Solo membri sembra molto promettente, quindi nessun commento su questo.

Il plug-in registerOnly è gratuito, tuttavia non sono rimasto colpito dal codice, quindi mi sono preso la libertà di biforcarlo, riscriverlo e rimuovere il codice obsoleto .

Inoltre, ho rimosso il supporto di Community Builder perché ... beh ... odio 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');
    }
}

Mettilo anche su Github: https://github.com/Joomla-StackExchange/registeredOnly

Spero che questo aiuti alcuni di voi

3
Lodder

Avevo una richiesta da parte del cliente di creare una extranet per loro usando Joomla, che doveva essere "bloccato" il più rigorosamente possibile. L'ho fatto impostando il sito su Offline in Configurazione globale, quindi ho modificato l'ACL per dare a 1 gruppo di utenti personalizzato che ho creato l'autorizzazione Accesso offline .

Ho notato nei commenti che menzioni che stai usando OAuth per il login - alcune estensioni che aiutano con questo possono essere configurate per aggiungere automaticamente utenti a un gruppo di utenti, quindi puoi usare questa funzionalità per aggiungerli al gruppo configurato secondo le istruzioni sopra.

Ho quindi scavalcato il offline.php nel mio modello per renderlo più simile a una pagina di accesso in stile extranet, piuttosto che alla pagina predefinita "Questo sito non è in linea".

3
codinghands

È possibile impostare l'autorizzazione di tutti i collegamenti di menu su registrati, forzando l'utente ad accedere.

0
Adam B