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


11

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.


mettere il tuo sito offline nella configurazione globale?
web-tiki,

Funzionerebbe un po ', ma quella funzionalità non è pensata per questo, quindi dovrei fare confusione con gruppi di utenti e simili, quindi poiché sto usando OAuth rigoroso per l'accesso (nessun utente), i gruppi di utenti non sono facili da aggiungere.
Jordan Ramstad,

Risposte:


14

Uno di questi funzionerebbe?

Solo membri (dal JED)

Tieni gli occhi indiscreti lontano da parte o da tutto il tuo 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.

registratoSolo (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.


1
Registrato sembra funzionare solo come un fascino :)
Jordan Ramstad

5

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 integrato 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.

Esiste 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 assegnare un nome alle 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 ribadisco, 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.


3

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 Global Configuration , quindi ho modificato l'ACL per dare a 1 gruppo di utenti personalizzato che ho creato l' autorizzazione di accesso offline .

Ho notato nei commenti che menzioni che stai usando OAuth per l'accesso: 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 come da sopra le istruzioni.

Ho quindi sovrascritto il offline.phpfile 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

Ho intenzione di dare la mia risposta per questo sulla base della risposta di @ Bryan.

Il plug-in Solo membri sembra molto promettente, quindi nessun commento al riguardo.

Il plugin registratoSolo è gratuito, tuttavia non sono rimasto colpito dal codice, quindi mi sono preso la libertà di biforcarlo, riscriverlo e rimuovere il codice deprecato.

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


0

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


1
Poiché nessuna voce di menu diversa da quella di accesso verrà visualizzata senza che l'utente abbia effettuato l'accesso, preferirei evitare il passaggio aggiuntivo, se possibile, come ho detto nella domanda.
Jordan Ramstad,

1
È possibile impostare automaticamente la pagina di accesso quando i membri colpiscono l'indirizzo del sito. Accedono: vengono visualizzate le voci di menu. Dov'è il passaggio extra? ACL è impostato magnificamente per questo.
NivF007,

@ NivF007 Il passaggio aggiuntivo consiste nel impostare l'accesso al menu su "Registrato" ogni volta che si effettua una voce di menu. La soluzione più semplice sarebbe quella di poter impostare un livello di accesso al menu predefinito, invece di impostarlo come "Pubblico". Se potessi impostarlo come predefinito su "Registrato", non sarebbe necessaria alcuna estensione.
David Fritsch,

1
@DavidFritsch L'impostazione di un parametro per la creazione di un collegamento di menu non è esattamente un duro lavoro. Non è come aggiungere nuovi collegamenti di menu ogni giorno.
Adam B,

1
@AdamB Funzionerebbe! E quindi impostare il modulo menu per iniziare al livello due. Se volevi solo un livello. Una strana soluzione nella mia mente, ma dovrebbe essere possibile
David Fritsch,

-2
$haystack= JURI::current();
$needle = '/login';
$is_login_page = $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== FALSE);
if(JFactory::getUser()->guest && !$is_login_page && $_SERVER['HTTP_HOST'] != 'vauler.com' && $_SERVER['HTTP_HOST'] != '127.0.0.1:92')
    $app->redirect('index.php/login');

incolla questo codice nel file index.php del tuo modello attuale

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.