web-dev-qa-db-fra.com

Désactiver le site Web pour tous les utilisateurs sauf les utilisateurs connectés

Je sais qu'il existe de nombreuses façons de le faire, mais quand je pense en profondeur, une désactivation globale du site peut être difficile.

Ce que je veux, c'est lorsqu'un utilisateur accède au site Web, il est redirigé vers la page de connexion, où qu'il se trouve. Je préférerais ne pas avoir besoin de réglages spéciaux dans chaque élément de menu ou autre zone de la page.

Y a-t-il un moyen simple de faire cela? Ou un plugin super génial qui fait ça? Mes recherches jusqu'à présent ont été vaines. Cependant, cela pourrait bien être mon choix de mots-clés dans JED/Google.

11
Jordan Ramstad

Est-ce que l'un d'entre eux fonctionnerait?

membres seulement (du JED)

Gardez les yeux indiscrets de tout ou partie de votre site web, tant qu'ils restent anonymes. Vous pouvez éventuellement autoriser les visiteurs à s’inscrire directement sur votre site Web avec ou sans code d’invitation.

registeredOnly (du JED)

le plug-in registeredOnly limite l'accès au site Joomla aux utilisateurs enregistrés.

Lorsqu'un invité tente d'accéder à un contenu Joomla, il est redirigé vers la page de connexion.

14
Brian Peat

1) Utilisez la liste de contrôle d'accès intégrée de Joomla!

Je recommande de définir par défaut vos visiteurs sur une page de connexion et d'utiliser la liste de contrôle d'accès intégrée de Joomla! À l'aide d'utilisateurs enregistrés.

Définissez un élément de menu de niveau supérieur avec des autorisations pour les utilisateurs enregistrés. Chaque élément de menu de cette arborescence ne sera visible et disponible que pour les utilisateurs enregistrés.

Il existe un excellent tutoriel sur les ACL dans Joomla! Docs.

Toutefois, les fichiers et les documents peuvent toujours être téléchargés par des utilisateurs non enregistrés (c’est-à-dire s’ils disposent du lien direct).

Dans ce cas, vous devrez utiliser une extension tierce si vous souhaitez protéger ces documents, tels que Akeeba Release Systems ou SobiPro.

2) Répertoires protégés par mot de passe

Le moyen le plus simple de protéger votre site consiste à protéger votre répertoire par un mot de passe via .htaccess /

C'est inélégant, mais si vous utilisez cPanel, par exemple, allez dans Sécurité -> Répertoires protégés par mot de passe et utilisez l'assistant pour nommer des répertoires, ajouter ou supprimer des utilisateurs et affecter ces utilisateurs au répertoire protégé par mot de passe - vous pouvez attribuer un nom unique à chaque utilisateur. et mot de passe.

C'est peu élégant, mais simple et utilisé assez souvent dans la pratique - cependant, je le répète, il vaut probablement mieux utiliser ACL et, si vous protégez les documents contre le téléchargement, une extension tierce.

Si vous conservez vos fichiers/documents dans le répertoire Protégé par mot de passe, ceux-ci seront également protégés, ce qui nécessitera qu'un utilisateur disposant d'autorisations tente d'accéder à ce répertoire pour se connecter en premier.

5
NivF007

Je vais vous donner ma réponse en fonction de la réponse de @ Bryan.

Le plugin réservé aux membres semble très prometteur, donc pas de commentaire à ce sujet.

Le plug-in registeredOnly est gratuit, mais je n'ai pas été impressionné par le code. .

En plus de cela, j'ai supprimé le support de Community Builder parce que ... eh bien ... je déteste 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');
    }
}

Mettez-le aussi sur Github: https://github.com/Joomla-StackExchange/registeredOnly

J'espère que cela aide quelques-uns d'entre vous

3
Lodder

Un client m'a demandé de créer un extranet à l'aide de Joomla, qui devait être "verrouillé" aussi strictement que possible. Je l'ai fait en définissant le site sur Hors ligne dans Configuration globale, puis j'ai modifié la liste de contrôle d'accès pour donner à 1 groupe d'utilisateurs personnalisé que j'ai créé l'autorisation Accès hors connexion .

Je remarque dans les commentaires que vous mentionnez que vous utilisez OAuth pour la connexion. Certaines extensions facilitant cette opération peuvent être configurées pour ajouter automatiquement des utilisateurs à un groupe d'utilisateurs. Vous pourrez alors utiliser cette fonctionnalité pour: ajoutez-les au groupe configuré conformément aux instructions ci-dessus.

J'ai ensuite remplacé le offline.php fichier dans mon modèle pour lui donner l’apparence d’une page de connexion de type extranet, plutôt que de la page par défaut "Ce site est hors connexion".

3
codinghands

Vous pouvez définir l'autorisation de tous les liens de menu sur enregistré, ce qui obligera l'utilisateur à se connecter.

0
Adam B