ti-enxame.com

Desativar site para todos, exceto usuários conectados

Eu sei que existem muitas maneiras de fazer isso, no entanto, quando penso profundamente, uma desabilitação global do site pode ser difícil.

O que eu quero é que quando um usuário acessa o site, ele é redirecionado para a página de login, não importa onde esteja. Eu preferiria não precisar de configurações especiais em cada item de menu ou outra área da página.

Existe uma maneira simples de fazer isso? Ou um plugin super impressionante que faz isso? Minhas pesquisas até agora foram em vão. No entanto, essa pode ser a minha escolha de palavras-chave no JED/Google.

11
Jordan Ramstad

Um desses funcionaria?

somente membros (do JED)

Mantenha os olhos curiosos afastados de parte ou de todo o site, enquanto eles permanecem anônimos. Opcionalmente, você pode permitir que os visitantes se registrem diretamente no seu site com ou sem a necessidade de um código de convite.

RegisteredOnly (Do JED)

o plugin RegisteredOnly restringe o acesso ao site Joomla apenas para usuários registrados.

Quando um convidado tenta acessar qualquer conteúdo do Joomla, ele é redirecionado para a página de login.

14
Brian Peat

1) Use a ACL incorporada do Joomla!

Eu recomendo colocar os visitantes em uma página de login e usar a ACL interna do Joomla! Usando usuários registrados.

Defina um item de menu de nível superior com permissões para usuários registrados - e cada item de menu nessa árvore ficará visível e disponível apenas para usuários registrados.

Existe um excelente tutorial sobre ACL no Joomla! Docs.

No entanto, arquivos e documentos ainda podem ser baixados por usuários não registrados (ou seja, se eles tiverem o link direto).

Nesse caso, você precisará usar uma extensão de terceiros, se desejar proteger esses documentos, como Akeeba Release Systems ou SobiPro.

2) Diretórios protegidos por senha

A maneira 'mais simples' de proteger seu site é Proteger com senha o seu diretório via .htaccess /

É deselegante, mas se você usar o cPanel, por exemplo, vá para Segurança -> Diretórios Protegidos por Senha e use o assistente para nomear diretórios, adicionar ou remover usuários e atribuir esses usuários ao Diretório Protegido por Senha - você pode dar a cada usuário um nome exclusivo e senha.

É deselegante, mas simples e usado com bastante frequência na prática - no entanto, reitero, provavelmente é melhor usar o ACL e, se proteger os documentos do download, uma extensão de terceiros.

Se você mantiver seus arquivos/documentos no diretório protegido por senha, eles também serão protegidos - exigindo que um usuário com permissões tentando acessar esse diretório faça login primeiro.

5
NivF007

Vou dar minha resposta para isso com base na resposta de @ Bryan.

O Somente membros parece muito promissor, portanto, não há comentários sobre isso.

O plug-in RegisteredOnly é gratuito, no entanto, não fiquei impressionado com o código, então tomei a liberdade de bifurcar e reescrevê-lo e remover o código obsoleto .

Além disso, removi o suporte do Community Builder porque ... bem ... eu odeio o 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');
    }
}

Coloque-o também no Github: https://github.com/Joomla-StackExchange/registeredOnly

Espero que isso ajude alguns de vocês

3
Lodder

Eu tinha um pedido do cliente para fazer uma extranet para eles usando o Joomla, que tinha que ser 'bloqueado' o mais estritamente possível. Fiz isso definindo o site como offline em configuração global e editei a ACL para fornecer um grupo de usuários personalizado. Criei a permissão acesso offline .

Percebo nos comentários que você menciona que você está usando OAuth para login - algumas extensões que ajudam nisso podem ser configuradas para adicionar automaticamente usuários a um grupo de usuários), para que você possa usar essa funcionalidade para adicione-os ao grupo configurado conforme as instruções acima.

Substituí o offline.php no meu modelo para parecer mais uma página de login no estilo extranet, em vez da página padrão 'Este site está offline'.

3
codinghands

Você pode definir a permissão de todos os links de menu como registrados, forçando o usuário a fazer login.

0
Adam B