Restriction des pages consultables hors connexion

Principe simpe d’un accès restreint où seuls une liste de pages prédeterminées sont autorisé à la consultation.

Existant

Il existe déjà un certains nombre de contribution permettant de limiter l’accès au contenu d’un site soit par Acces-restreint-par-adresse-ip soit par accès restreint.

Cette contrib est relativement simple, elle montre comment filtrer l’accès à un site via les paramétres d’url (GET)

Pré requis

Il faut qu’un format d’url propre soit activé.
Via les urls propre, le serveur apache va reecrire les noms des pages en sous la forme spip.php?page=...&id_....

Ainsi _request('page') nous indiquera à tout moment la page demandée par le visiteur.

Code

Dans un fichier personnel mes_fonctions.php, vous pouvez faire :

$pages = array('','login','spip_pass');

if ($GLOBALS['auteur_session'] OR in_array(_request('page'),$pages) ) {
    //autorisé
} else {    
    include_spip('inc/headers');
    redirige_par_entete(generer_url_public('login'));  
}

Dans cet exemple, nous autorisons

  • l’accès global au site si le visiteur est authentifié. ($GLOBALS['auteur_session'])
  • l’accès aux pages definies dans $pages à l’ensemble des visiteurs

Nous pouvons noté le cas particulier '', cette page correspond à la page d’accueil, la page associée au squelette sommaire.html

Les autres pages correspondent :

  • à la page d’authentification (login)
  • à la page mot de passe oublié (spip_pass)

Évolution

Vous pouvez par la suite complexifié les autorisations de visites en regardant les variables d’id de page tel que _request('id_article') ou bien _request('id_rubrique')

De même via $GLOBALS['auteur_session']['statut'] vous pouvez gérer plus finement l’accès au site en fonction du statut du visiteur authentifié.

Discussion

No discussion

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom