Acces Restreint 3.0

Le plugin accès restreint permet de définir et de gérer des zones de l’espace public en accès restreint. Cette version du plugin a été redévelopée et optimisée tout spécialement pour SPIP 2.0. Il en découle une amélioration des performances sur les gros sites.
L’interface a été remaniée pour une meilleure ergonomie, mais le fonctionnement des boucles et des squelettes reste identique à la version précedente du plugin

Utilité et fonctionnalités du plugin

Le plugin accès restreint vous permet de protéger et de restreindre l’accès à certaines rubriques uniquement aux visiteurs authentifiés et autorisés.

Si un visiteur n’est pas identifié ou s’il n’est pas autorisé, alors l’intégralité de la rubrique (ce qui inclut les sous-rubriques, les articles, les liens ...) ne sera pas visible par ce visiteur.

Si le visiteur est identifié, alors ce visiteur pourra accéder aux rubriques pour lesquelles il a reçu une autorisation d’accès.

Ainsi, ce plugin vous permet de masquer du contenu aux visiteurs non identifiés, et de créer des droits d’accès aux visiteurs identifiés.

Le plugin vous permet également de filtrer l’espace privé.

En résumé, le plugin Accès restreint permet de définir et de gérer des zones de l’espace public et de l’espace privé en accès restreint.
Chaque zone contient des rubriques, et les auteurs peuvent être associés à des zones pour avoir le droit d’y accéder.
Toutes les boucles natives de SPIP sont modifiées pour en filtrer les résultats en fonction des droits du visiteur.

I. Installation du plugin accès restreint

Le plugin s’installe comme tous les autres, en ajoutant le dossier dans plugins/ et en l’activant dans l’espace privé.


Attention : en activant ou en désactivant ce plugin, il faut penser à vider le cache de SPIP pour que les droits d’accès soient modifiés.
En particulier, en cas de désactivation, si le cache n’est pas vidé, des erreurs vont apparaître sur le site public. Ce n’est pas un bug, mais une sécurité, pour éviter une divulgation de contenu en cas de désactivation involontaire du plugin.

Le plugin pourrait gérer automatiquement le changement de cache lors de son activation/désactivation, mais dans ce cas, en cas de désactivation involontaire, le contenu protégé serait immédiatement visible, ce qui peut être considéré comme une faille de sécurité.

II. Définir les zones en accès restreint

Les étapes précédentes ont pour effet de faire apparaître un nouvel onglet dans Configuration / Accès restreint, avec une petite icone de cadenas : ecrire/?exec=acces_restreint

C’est cette page qui va vous permettre de gérer les zones d’accès restreint de votre site, créer de nouvelles zones ou modifier les zones existantes. Pour créer votre première zone, cliquez sur le raccourci Créer une nouvelle zone.

L’administrateur qui crée la zone peut s’octroyer immédiatement les droits d’accès. Seul un administrateur général du site peut créer, modifier ou supprimer une zone.

Renseignez le titre, le descriptif, la portée (publique et/ou privée) de la zone.
Par défaut, l’option “m’ajouter les droits d’accès à cette zone” est cochée car cela correspond à l’usage le plus fréquent.

Il faut ensuite définir les rubriques qui en font partie. Si on coche la racine du site, il n’y a plus aucun affichage sur l’espace public pour ceux qui ne sont pas identifiés. C’est pratique, par exemple, pour mettre un site en ligne pour les administrateurs et les auteurs sans qu’il soit visible pour le simple visiteur.

Les rubriques qui sont cochées sont explicitement restreintes. Si elles sont déplacées dans le site, elle le resteront. Les rubriques qui ne sont pas cochées mais dépendent d’une rubrique restreinte sont elles aussi restreintes, par héritage. Mais si elles sont déplacées dans l’arborescence dans une zone non restreinte elles seront visibles.

Il faut imaginer la restriction d’accès des rubriques comme une restriction d’accès dans un immeuble : lorsqu’il faut une autorisation pour franchir une porte, tout ce qui est derrière se retrouve en accès restreint.

Cliquez sur “Enregistrer” pour créer la zone. Vous revenez alors à la liste des zones, ou apparaît votre nouvelle zone :

Pour chaque zone, un résumé apparaît indiquant le titre et le descriptif de la zone, le nombre de rubriques restreintes, le nombre d’auteurs autorisés, et si la zone et publique et/ou privée.

Le pictogramme en haut à droite de la zone vous indique si vous avez personnellement accès à la zone. Dans le cas où vous n’avez pas accès, il indique un sens interdit sur fond rouge, et sinon une coche sur fond vert, comme ici.

III. Ajouter des auteurs à une zone

Depuis la zone

Vous pouvez maintenant ajouter d’autres auteurs à la zone qui auront le droit de voir son contenu.
Pour cela, cliquez sur modifier

Vous retrouvez le formulaire d’édition de la zone avec :

  • les rubriques concernées reperées visuellement par un fond coloré
  • la liste des auteurs autorisés dans la colonne de gauche

Vous pouvez cliquer sur “Ajouter des auteurs” pour visualiser la liste des auteurs du site, triés par nom et paginés :

Le picto “+” situé à droite de chaque auteur vous permet de l’ajouter à la liste des auteurs autorisés. La croix rouge située à droite de chaque auteur autorisé vous permet de le retirer de cette liste.

Vous pouvez ainsi administrer la liste des auteurs autorisés en la complétant comme par exemple ici :

Les mises à jour de la liste des auteurs autorisés sont appliquées immédiatement, sans qu’il soit nécessaire d’enregistrer la zone.

Lorsque vous avez fini, revenez à la liste des zones (par le bouton retour donc, ou le bouton enregistrer si vous avez fait d’autres modifications). Vous pouvez voir que le nombre d’auteurs a été mis à jour.

Depuis une fiche auteur

Vous pouvez aussi gérer les droits d’un auteur depuis sa page personelle dans l’interface privée :

Vous pouvez sélectionner une zone et cliquer sur “Ajouter” :

La liste des zones autorisées est alors mise à jour :

Le lien “Enlever de la zone” vous permet de retirer les droits d’accès à une zone pour cet auteur.

IV. Fonctionnement et boucles du plugin

Tout le fonctionnement des squelettes et des boucles est inchangé par rapport à la version précedente du plugin. On se reportera donc à la partie concernée de sa documentation.

V. Protéger les documents de SPIP

La protection des documents de SPIP associé aux articles protégés est une fonctionnalité souvent demandée.

Le plugin accès restreint permet cela, si votre hébergement remplit deux conditions :
-  qu’il accepte les fichiers .htaccess permettant de donner des directives au serveur
-  qu’il soit suffisamment bien dimensionné, car les accès aux images et documents du site vont tous générer un accès à la base de données (pour savoir si les documents concernés peuvent être vus), ce qui ralentit fortement le site.

Si vous êtes dans ces conditions, ou que vous voulez tout de même essayer (mais on vous aura prévenu), voici comment faire :

Allez sur la page d’accueil du plugin Accès Restreint en cliquant sur son icône dans le menu “Configuration”

Menu icone Accès Restreint

Vous arriverez sur cette page :

Page d’accueil du plugin Accès Restreint

Cliquez sur le raccourci “Configuration des accès .htaccess” :

Raccourcis “Configuration des accès .htaccess”

Vous arriverez sur cette page :

“Ne pas créer ces fichiers” coché par défaut

Il suffit de cocher “Interdire la lecture”, dans le premier cadre “Accès aux documents joints par leur URL”, et “Créer les fichiers .htpasswd” dans le second cadre.

Vider ensuite votre cache. Tous les urls vers des images et documents de SPIP seront alors remplacés par un url de la forme spip.php?action=acceder_document&file=xxx, qui provoquera la lecture de l’autorisation d’accès au document [1].

Si votre site devient très lent ou plante sans arrêt sur une erreur du type “Accès impossible à mySQL”, alors votre hébergement n’est pas suffisant pour ce fonctionnement. Désactiver la fonction pour revenir à un fonctionnement normal.

En complément, si après la mise en place du fichier .htaccess certaines pages de l’interface privée vous sont inaccessibles et que vous obtenez des messages “Accès interdit”, vous pouvez désactiver la vérification htaccess de l’interface privée, dans les options du site.

VI. Paramétrage plus fin des restrictions

AR_TYPE_RESTRICTION définit le type de restriction pour traiter les élements communs à plusieurs zones :

  • Une restriction exclusive (ou forte) donne l’acces aux rubriques restreintes par plusieurs zones aux seuls membres de toutes les zones concernées.
  • Une restriction faible donne acces à une rubrique, même restreinte par plusieurs zones, aux membres de chaque zone concernée.
  • Valeurs possibles : ’faible’ (par défaut), ’forte, ou ’exclusive’

Autrement dit, si une rubrique 2 est enfant d’une rubrique 1, et qu’il existe une zone 1 (rubrique 1) et une zone 2 (rubrique 2) :

  • un auteur présent dans la zone 1 (uniquement) ne pourra pas voir la rubrique 2 lorsque la restriction est “forte”. Il le pourra avec une restriction “faible”
  • À l’inverse, un auteur présent uniquement dans la zone 2 ne pourra pas voir la rubrique 1 même si la restriction est “faible” car la parentée n’est pas concernée. Il faut (si souhaité) dans ce cas définir en plus AR_TYPE_RESTRICTION_PARENTEE à “faible” pour l’autoriser.

Exemple, dans config/mes_options.php :

# Pour qu'une rubrique placée dans une Zone puisse 
# être accédée en étant une sous rubrique d'une autre Zone
define('AR_TYPE_RESTRICTION','forte');
define('AR_TYPE_RESTRICTION_PARENTEE','faible');

AR_TOUJOURS_TOUT_VOIR est une constante qui, si elle est définie dans le fichier mes_options.php de votre site (ou le fichier d’options de votre plugin qui utilise acces_restreint) modifie le comportement des boucles afin qu’elles affichent tous les résultats, sans aucune restriction. Pour restreindre un affichage, le squelette doit donc tester à la main, par exemple avec le filtre accesrestreint_article_restreint.

Exemple :
-  dans mes_options :

define (AR_TOUJOURS_TOUT_VOIR, 1);


-  dans un fichier squelette :

<BOUCLE_a(ARTICLES)>
[(#ID_ARTICLE|accesrestreint_article_restreint|oui)  <INCLURE{fond=intro_article}{id_article}> ]
[(#ID_ARTICLE|accesrestreint_article_restreint|non) Pas accés à cette page]
</BOUCLE_a>

Footnotes

[1A partir de la version 3.8 du plugin, les URLs des documents protégés sont soit sous la forme plus perenne /IMG/xxxxxx.xxx?nn/hash si les réécritures d’URLs sont possible sur votre hébergement, soit de la forme docrestreint.api/nn/hash/xxxxxxx.xxx

Avec SPIP 2.1 le plugin nécessite l’installation du plugin SPIP Bonux.

Discussion

468 discussions

  • 2

    Bonjour,
    J’ai quelques soucis avec le pluging Accès restreint lorsque je passe mon site en php 8.0
    Je suis en SPIP 4.0.5 et la version de Accès Restreint est 4.2.4
    J’ai comme message d’erreur :
    -  en haut du site public et privé, répété 3 fois :
    «Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /homepages/28/d329270983/htdocs/plugins/acces_restreint/inc/accesrestreint.php on line 149»

    -  dans le corps de la page de l’espace privé, il y a également des messages répétés plusieurs fois :
    «Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /homepages/28/d329270983/htdocs/plugins/acces_restreint/inc/accesrestreint.php on line 73

    Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /homepages/28/d329270983/htdocs/plugins/acces_restreint/inc/accesrestreint.php on line 190»

    Lorsque je repasse le site en php 7.4 tout redevient normal...

    Merci de votre aide

    • Même soucis avec un Spip en version 4.1.1 et PHP 8.1.

      Message d’erreur de l’admin :

      Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /var/www/html/plugins/auto/acces_restreint-2a15c-v4.2.4/inc/accesrestreint.php on line 149
      
      Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/plugins/auto/acces_restreint-2a15c-v4.2.4/inc/accesrestreint.php:149) in /var/www/html/ecrire/public/evaluer_page.php(53) : eval()'d code on line 44

      Message d’erreur sur le site publique:

      _ Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /var/www/html/plugins/auto/acces_restreint-2a15c-v4.2.4/inc/accesrestreint.php on line 149
    • C’est un changement de la fonction array_map + reset et array_map + array_shift comme indiqué ici :
      https://git.spip.net/spip/plan/commit/09d6a08d21b897b4b1f9130646f3fc5bae0e100b

      Pour la ligne 149 du fichier inc/accesrestreint.php

      $liste_zones[$id_auteur] = array_map('reset', $liste_zones[$id_auteur]);

      devient :

      $liste_zones[$id_auteur] = array_column($liste_zones[$id_auteur], 'id_zone');

      Et il faut modifier les 7 autres occurences “array_map” utilisées dans le plugin par les fichiers suivants :
      -  accesrestreint_fonctions.php
      -  affecter_zone.php
      -  inc/accesrestreint.php

    Reply to this message

  • des précisions :Numéro Message squelette boucle Ligne
    1 Erreur SQL 1146
    Table ’ieofed2019.spip_zones_liens’ doesn’t exist
    SELECT id_zone FROM spip_zones_liens WHERE objet=’auteur’ AND id_objet=3914
    /srv/data/web/vhosts/ieo-oc.org/htdocs/plugins/auto/acces_restreint/inc/accesrestreint.php accesrestreint_liste_zones_appartenance_auteur() sql_allfetsel(); 148

    Reply to this message

  • impossible d’installer acces_restreint
    Voilà ce que j’ai :
    L’activation du plugin « Accès Restreint » (version : 4.2.4) s’est correctement déroulée
    L’installation du plugin « Accès Restreint » (version : 4.2.4) a échoué

    puis :
    squelette ../prive/squelettes/head/dist.html : squelette résultat code calcul
    Temps de calcul : 68.279 ms
    #ENV
    titre
    : ’[IEO Institut d’Estudis Occitans] Gestion des plugins’
    minipres
    : ’’
    lang
    : ’fr’
    squelette ../prive/squelettes/inclure/head.html : squelette résultat code calcul
    Temps de calcul : 31.655 ms
    #ENV
    titre
    : ’[IEO Institut d’Estudis Occitans] Gestion des plugins’
    minipres
    : ’’
    paramcss
    : ’v=20210708&p=ca4b&themes=spip&ltr=left&md5b=e9ee6cf0cd925b512df02fcb95f7a5f2&couleur_theme=9a6ef2&couleur_claire=cdb7f9&couleur_foncee=9a6ef2’
    espace_prive
    :
    lang
    : ’fr’
    squelette ../plugins-dist/porte_plume/css/barre_outils_icones.css.html : squelette résultat code calcul
    Temps de calcul : 0.382 ms
    #ENV
    hash
    : ’b35f20845057f43d969c94d0028126a5’
    lang
    : ’fr’
    squelette ../plugins-dist/bigup/css/vignettes.css.html : squelette résultat code calcul
    Temps de calcul : 5.667 ms
    #ENV
    lang
    : ’fr’
    1 boucle résultat code calcul _vignettes DATA source table,(#VALprive/vignettes/|find_all_in_path[.]svg$)
    squelette ../plugins-dist/filtres_images/prive/squelettes/inclure/favicon-head.html : squelette résultat code calcul
    Temps de calcul : 3.591 ms
    #ENV
    couleur
    : ’9a6ef2’
    lang
    : ’fr’
    squelette ../plugins-dist/bigup/javascript/bigup.trads.js.html : squelette résultat code calcul
    Temps de calcul : 0.776 ms
    #ENV
    lang
    : ’fr’
    squelette ../plugins-dist/porte_plume/javascript/porte_plume_start.js.html : squelette résultat code calcul
    Temps de calcul : 0.874 ms
    #ENV
    lang
    : ’fr’
    hash
    : ’abee368b33e7ddd5993206a303eea5c7’
    inserer_auto_name_texte
    : 1
    squelette ../prive/squelettes/inclure/barre-nav.html : squelette résultat code calcul
    Temps de calcul : 61.989 ms
    #ENV
    exec
    : ’admin_plugin’
    var_mode
    : ’debug’
    lang
    : ’fr’
    1 boucle résultat code calcul _sous DATA source table,#SOUSMENU
    2 boucle résultat code calcul _boutons DATA source tableau,#GETboutonscle!=outils_rapidescle!=outils_collaboratifs
    3 boucle résultat code calcul _creersous DATA source table,#SOUSMENUpar position
    4 boucle résultat code calcul _creer DATA source table,#GETboutonscle=outils_rapides
    5 boucle résultat code calcul _collaborersous DATA source table,#SOUSMENU
    6 boucle résultat code calcul _collaborer DATA source table,#GETboutonscle=outils_collaboratifs
    squelette ../prive/formulaires/recherche_ecrire.html : squelette résultat code calcul
    Temps de calcul : 2.588 ms
    #ENV
    action
    : ’https://ieo-oc.org/ecrire/?exec=recherche
    recherche
    :
    lang
    : ’’
    class
    : ’’
    _id_champ
    : ’rechercher_d41d’
    _pipelines
    : [array:3]
    formulaire_args
    : ’lxOuj5HNis1+cKX8rSIesm+wNnYMWrozoiajT6yyGmaCPBo3fhpyVEGJRgNaELJ5OR/HMpLt6NK0WQ==’
    erreurs
    : []
    form
    : ’recherche_ecrire’
    id
    : ’new’
    editable
    : ’ ’
    squelette ../prive/objets/liste/auteurs_enligne.html : squelette résultat code calcul
    Temps de calcul : 0.634 ms
    #ENV
    lang
    : ’fr’
    1 boucle résultat code calcul _enligne auteurs id_auteur!=#SESSIONid_auteurstatut IN 1comite,0minirezoimessage!=nonen_ligne>(#VAL’Y-m-d H:i:s’|date(#VAL’-15 minutes’)!par en_lignepagination 10’, ’
    squelette ../plugins-dist/svp/prive/squelettes/navigation/svp_admin_plugin.html : squelette résultat code calcul
    Temps de calcul : 12.335 ms
    #ENV
    lang
    : ’fr’
    1 boucle résultat code calcul _libs DATA source table,(#REM|svp_lister_librairies)par cle
    squelette ../prive/squelettes/navigation/configurer.html : squelette résultat code calcul
    Temps de calcul : 6.227 ms
    #ENV
    exec
    : ’admin_plugin’
    lang
    : ’fr’
    squelette ../prive/squelettes/inclure/menu-navigation.html : squelette résultat code calcul
    Temps de calcul : 2.456 ms
    #ENV
    exec
    : ’admin_plugin’
    lang
    : ’fr’
    date
    : ’2022-02-17 17:02:16’
    date_default
    : 1
    date_redac
    : ’2022-02-17 17:02:16’
    date_redac_default
    : 1
    menu
    : ’menu_configuration’
    bloc
    : ’navigation’
    1 boucle résultat code calcul _menusous DATA source table,#SOUSMENU
    2 boucle résultat code calcul _menu DATA source table,#GETboutonscle=#ENVmenu
    squelette ../plugins-dist/svp/prive/squelettes/contenu/svp_admin_plugin.html : squelette résultat code calcul
    Temps de calcul : 1.052 ms
    #ENV
    exec
    : ’admin_plugin’
    lang
    : ’fr’
    squelette ../plugins-dist/svp/prive/squelettes/inclure/svp_onglets.html : squelette résultat code calcul
    Temps de calcul : 0.196 ms
    #ENV
    exec
    : ’admin_plugin’
    lang
    : ’fr’
    date
    : ’2022-02-17 17:02:16’
    date_default
    : 1
    date_redac
    : ’2022-02-17 17:02:16’
    date_redac_default
    : 1
    squelette ../plugins-dist/svp/formulaires/admin_plugin.html : squelette résultat code calcul
    Temps de calcul : 0.501 ms
    #ENV
    _erreurs_xml
    : []
    actif
    : ’oui’
    constante
    : [’_DIR_PLUGINS’, ’_DIR_PLUGINS_SUPPL’]
    verrouille
    : ’’
    id_paquet
    : ’’
    actions
    : []
    ids_paquet
    :
    afficher_incompatibles
    :
    _todo
    :
    _notices
    :
    _libelles_actions
    :
    _pipelines
    : [array:3]
    formulaire_args
    : ’1xWmj5HdisgecAc91SKzJgMKYhFHcRb15J06cKnnQdQeVJK4qftOyIWbuyp9G6CEbb+IpQeHErlJP5ONM5y3EZkNFLLgMjCm’
    erreurs
    : []
    action
    : ’/ecrire/?exec=admin_plugin’
    form
    : ’admin_plugin’
    id
    : ’new’
    editable
    : ’ ’
    lang
    : ’fr’
    1 boucle résultat code calcul _erreurs_xml DATA source table,#ENV_erreurs_xml
    squelette ../plugins-dist/svp/formulaires/inc-confirmer_actions.html : squelette résultat code calcul
    Temps de calcul : 0.085 ms
    #ENV
    _erreurs_xml
    : []
    actif
    : ’oui’
    constante
    : [’_DIR_PLUGINS’, ’_DIR_PLUGINS_SUPPL’]
    verrouille
    : ’’
    id_paquet
    : ’’
    actions
    : []
    ids_paquet
    :
    afficher_incompatibles
    :
    _todo
    :
    _notices
    :
    _libelles_actions
    :
    _pipelines
    : [array:3]
    formulaire_args
    : ’1xWmj5HdisgecAc91SKzJgMKYhFHcRb15J06cKnnQdQeVJK4qftOyIWbuyp9G6CEbb+IpQeHErlJP5ONM5y3EZkNFLLgMjCm’
    erreurs
    : []
    action
    : ’/ecrire/?exec=admin_plugin’
    form
    : ’admin_plugin’
    id
    : ’new’
    editable
    : ’ ’
    lang
    : ’fr’
    date
    : ’2022-02-17 17:02:16’
    date_default
    : 1
    date_redac
    : ’2022-02-17 17:02:16’
    date_redac_default
    : 1
    1 boucle résultat code calcul _erreurs DATA source table,#ENV**erreurs/decideur_erreurs
    2 boucle résultat code calcul _demandes DATA source table,#ENV**_libelles_actions/decideur_demandes
    3 boucle résultat code calcul _propositions DATA source table,#ENV**_libelles_actions/decideur_propositions
    squelette ../plugins-dist/svp/formulaires/inc-admin_plugin.html : squelette résultat code calcul
    Temps de calcul : 22.337 ms
    #ENV
    _erreurs_xml
    : []
    actif
    : ’oui’
    constante
    : [’_DIR_PLUGINS’, ’_DIR_PLUGINS_SUPPL’]
    verrouille
    : ’’
    id_paquet
    : ’’
    actions
    : []
    ids_paquet
    :
    afficher_incompatibles
    :
    _todo
    :
    _notices
    :
    _libelles_actions
    :
    _pipelines
    : [array:3]
    formulaire_args
    : ’1xWmj5HdisgecAc91SKzJgMKYhFHcRb15J06cKnnQdQeVJK4qftOyIWbuyp9G6CEbb+IpQeHErlJP5ONM5y3EZkNFLLgMjCm’
    erreurs
    : []
    action
    : ’/ecrire/?exec=admin_plugin’
    form
    : ’admin_plugin’
    id
    : ’new’
    editable
    : ’ ’
    lang
    : ’fr’
    date
    : ’2022-02-17 17:02:16’
    date_default
    : 1
    date_redac
    : ’2022-02-17 17:02:16’
    date_redac_default
    : 1
    1 boucle résultat code calcul _afficher CONDITION si #GETafficher
    2 boucle résultat code calcul _plugins paquets toutpar multi nom,paquets.prefixe!par constante,actifid_depot=0actif ?constante ?IN #ENVconstante
    squelette ../prive/squelettes/inclure/pied.html : squelette résultat code calcul
    Temps de calcul : 4.180 ms
    #ENV
    lang
    : ’fr’

    Reply to this message

  • 5

    Bonsoir,
    Je viens d’activer ce plugin 4.2.3 sur un Spip4.0.0.
    Dès lors, plein de messages d’erreur sont apparus mentionnant notamment des pb de boucles avec les brèves.
    Dans la partie privée, l’ajout de d’image ne semble plus fonctionner en apparence car elles ne sont pas visualisées une fois l’ajout finalisé.
    Dès que je l’ai désactivé, tous les pbs disparus.
    Idem, là j’ai vu également que l’ajout des images était bien pris en compte, car j’ai vu 4 fois les mêmes images.
    Les messages sur le forum n’apparaissaient pas, par contre ils sont apparus après désactivation du plugin.
    Sauriez-vous d’où peut provenir le pb ?
    Merci d’avance,
    ChB.

    • Merci beaucoup ! ça semble résoudre les soucis.
      Super (y)

    • Bonjour

      J’ai le même problème malgré l’absence de la table spip_breves. Mais les messages semblent plutôt parler de la table forum :

      ```
      SELECT forum.id_forum FROM spip_forum AS `forum` WHERE (forum.statut = ’publie’) AND (forum.id_objet = 40) AND (forum.objet = ’article’) AND (forum.id_forum IN (SELECT * FROM( SELECT zzzf.id_forum FROM spip_forum as zzzf WHERE ((((zzzf.objet=’rubrique’ AND 0=0) OR (zzzf.objet=’article’ AND ((zzzf.id_objet NOT IN (SELECT * FROM( SELECT zzza.id_article FROM spip_articles as zzza WHERE 0=1) AS subquery)) AND 0=0))) OR (zzzf.objet=’breve’ AND ((zzzf.id_objet NOT IN (SELECT * FROM( SELECT zzzb.id_breve FROM spip_breves as zzzb WHERE 0=1) AS subquery)) AND 0=0))) OR (zzzf.objet NOT IN (’rubrique’,’article’,’breve’)))) AS subquery))
      ```

      Est-ce que je tente de supprimer ma table spip_forum ? (qui est vide)

    • Bonsoir meme probleme…
      le lien vers la solution 🔧 ne marche pas
      merci

    • Maintenant ça marche ! Pb de réseau ?

    Reply to this message

  • Bonjour

    Je souhaite utiliser Accès restreint pour filtrer tout un site

    le site est public mais les visiteurs doivent s’inscrire pour naviguer dans le site.

    J’ai mis tout le site dans un zone avec accès restreint (à partir de la racine) et ajouter un lien vers le formulaire d’’inscription des visiteurs.
    j’ai bien l’affichage du formulaire sur la page d’accueil par défaut.
    Je reçois bien un mail de confirmation.
    mais le site renvoi une page 404, au plutot que de renvoyer vers une page de connexion
    Comment modifier ce pb
    Un lien: https://sofia2.medicalistes.fr/# (c’est pas très beau, c’est en test)

    Reply to this message

  • 1

    Bonjour
    Avec Accès restreint 4.2.4 sous Spip 3.2.12

    Je souhaiterais modifier la page qui s’affiche quand un visiteur non connecté arrive sur un article d’une rubrique protégée.
    Cette page affiche actuellement :
    Erreur 401
    L’accès à cette page est restreint. Identifiez vous pour y accéder

    Je voudrais y insérer un bouton de connexion.
    Mais je n’arrive pas à trouver le fichier à surcharger...

    Merci

    Reply to this message

  • 4

    Bonjour

    Je rencontre un problème avec la version 4.2.4 sur un spip 4.0.0 GIT [4.0: c81458a6] , PHP 7.3.31 et mysql Ver 15.1 Distrib 10.3.31-MariaDB

    Dès l’activation du plugin, je me retrouve avec les erreurs suivantes :

    Erreur SQL 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 8
    SELECT forum.id_forum FROM spip_forum AS `forum`  WHERE (forum.statut = 'publie') AND (forum.id_objet = 59) AND (forum.objet = 'article') AND (forum.id_forum IN (SELECT * FROM( SELECT zzzf.id_forum FROM spip_forum as zzzf WHERE (((zzzf.objet='rubrique' AND 0=0) OR (zzzf.objet='article' AND ((zzzf.id_objet NOT IN (SELECT * FROM( SELECT zzza.id_article FROM spip_articles as zzza WHERE 0=1) AS subquery)) AND 0=0))) OR (zzzf.objet NOT IN ('rubrique','article','breve')))) AS subquery))
    	/var/www/spip/ecrire/public/composer.php	calculer_select(){ sql_select(); }	954
    
    2 	Erreur SQL 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB
    server version for the right syntax to use near '' at line 6
    SELECT id_document FROM spip_documents WHERE id_document=57 AND ((id_document IN (SELECT * FROM( SELECT zzzd.id_document FROM spip_documents_liens as zzzd WHERE ((((zzzd.objet='rubrique' AND 0=0) OR (zzzd.objet='article' AND ((zzzd.id_objet NOT IN (SELECT * FROM( SELECT zzza.id_article FROM spip_articles as zzza WHERE 0=1) AS subquery)) AND 0=0))) OR (zzzd.objet='forum' AND (zzzd.id_objet IN (SELECT * FROM( SELECT zzzf.id_forum FROM spip_forum as zzzf WHERE (((zzzf.objet='rubrique' AND 0=0) OR (zzzf.objet='article' AND ((zzzf.id_objet NOT IN (SELECT * FROM( SELECT zzza.id_article FROM spip_articles as zzza WHERE 0=1) AS subquery)) AND 0=0))) OR (zzzf.objet NOT IN ('rubrique','article','breve')))) AS subquery)))) OR (zzzd.objet NOT IN ('rubrique','article','breve','forum')))) AS subquery)) OR (id_document NOT IN (SELECT * FROM( SELECT zzzd.id_document FROM spip_documents_liens 
    as zzzd) AS subquery)))
    	/var/www/spip/plugins/auto/accesrestreint/v4.2.4/inc/accesrestreint_autoriser.php	autoriser_document_voir(){ sql_getfetsel(); }	269
    
    3 	Erreur SQL 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 6
    SELECT id_document FROM spip_documents WHERE id_document=58 AND ((id_document IN (SELECT * FROM( SELECT zzzd.id_document FROM spip_documents_liens as zzzd WHERE ((((zzzd.objet='rubrique' AND 0=0) OR (zzzd.objet='article' AND ((zzzd.id_objet NOT IN (SELECT * FROM( SELECT zzza.id_article FROM spip_articles as zzza WHERE 0=1) AS subquery)) AND 0=0))) OR (zzzd.objet='forum' AND (zzzd.id_objet IN (SELECT * FROM( SELECT zzzf.id_forum FROM spip_forum as zzzf WHERE (((zzzf.objet='rubrique' AND 0=0) OR (zzzf.objet='article' AND ((zzzf.id_objet NOT IN (SELECT * FROM( SELECT zzza.id_article FROM spip_articles as zzza WHERE 0=1) AS subquery)) AND 0=0))) OR (zzzf.objet NOT IN ('rubrique','article','breve')))) AS subquery)))) OR (zzzd.objet NOT IN ('rubrique','article','breve','forum')))) AS subquery)) OR (id_document NOT IN (SELECT * FROM( SELECT zzzd.id_document FROM spip_documents_liens as zzzd) AS subquery)))
    	/var/www/spip/plugins/auto/accesrestreint/v4.2.4/inc/accesrestreint_autoriser.php
    

    Ce qui est étrange, c’est que les requêtes SQL rapportées en erreur semblent tout à fait correctes : dans la console mysql, elles me renvoient bien un résultat.

    Par contre dans les logs (`tmp/spip.log`); je trouve ça :

    2021-11-12 11:35:52 145.238.153.26 (pid 151554) :Pub:ERREUR: Erreur 1064 de mysql: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 8
    in /var/www/spip/ecrire/public/composer.php L954 [sql_select(),calculer_select(),select(),__construct(),create(),BOUCLE_nb_commentaireshtml_ea83de0d52595f95541f720a279d8527(),BOUCLE_resume_articlehtml_ea83de0d52595f95541f720a279d8527(),html_ea83de0d52595f95541f720a279d8527(),public_parametrer_dist(),public_produire_page_dist(),inclure_page(),evaluer_fond(),recuperer_fond(),BOUCLE_articles2html_eff246a85bca6da881a667837f26ffff(),html_eff246a85bca6da881a667837f26ffff(),public_parametrer_dist(),public_produire_page_dist(),inclure_page(),evaluer_fond(),recuperer_fond(),eval(),include(),evaluer_fond(),recuperer_fond(),eval(),include(),evaluer_fond(),recuperer_fond(),eval(),include(),evaluer_fond(),recuperer_fond(),eval(),include(),include(),include()]
    SELECT forum.id_forum
    FROM `spip`.spip_forum AS `forum`
    WHERE (forum.statut = 'publie')
    	AND (forum.id_objet = 59)
    	AND (forum.objet = 'article')
    	AND (forum.id_forum IN (SELECT * FROM(
    SELECT zzzf.id_forum
    FROM `spip`.spip_forum as zzzf
    

    La requête est tronquée par rapport à ce qui est affiché. Et en effet si j’exécute la commande telle quelle, j’obtiens bien l’erreur 1064 dans ma console mysql.

    J’ai tenté de vider le cache mais sans effet.

    Sur une autre machine (mais en PHP 7.4) je n’ai pas ce problème.

    • Et précision : si je désactive le plugin, tout refonctionne sans erreur

    • Bonjour

      Je me permet de relancer car je suis vraiment toujours coincée.

      Je viens de passer mon site en php 7.4 et j’ai toujours le même problème.

      Je ne sais pas du tout par où prendre le problème. J’ai la même version de php (7.4.25) sur mes 2 machines, les mêmes squelettes, les même plugins avec les mêmes versions. L’un fonctionne et pas l’autre.

      D’où pourrait venir le problème ?

    • Bonjour,
      c’est étrange, je ne reproduis pas le problème. Pour tenter de comprendre, j’essayerais de faire une installation neuve de SPIP sur le même serveur, juste à côté dans un sous dossier par exemple.
      Il faudrait voir si en réimportant la base ça reproduit l’erreur...

    • Bonjour

      Je viens de refaire une installation depuis 0 sur un répertoire à côté, et cela semble avoir résolu le problème.

      J’avais d’abord exporté le site depuis la machine qui fonctionnait bien et importé la sauvegarde, mais cela n’avait pas fonctionné.

      Bref, c’est un peu retombé en marche sans que je comprenne le pourquoi du comment.

      merci en tout cas

    Reply to this message

  • Bonjour,

    Merci pour le plug-in :-)

    Juste pour info, si les warnings sont autorisés, en PHP 8 et SPIP 4, ce message s’affiche :

    Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /home/clients/b292ffee5cda953d5b1dfadcf99de260/dev/plugins/auto/acces_restreint/inc/accesrestreint.php on line 149

    En front, 1 fois.
    En back : 2 fois au-dessus de la barre d’icônes du menu.

    Reply to this message

  • Bonjour,

    Je viens d’installer SPIP 4 sur un serveur PHP 8. Pour informations, j’ai noté les soucis suivants qui disparaissent en php 7.4 :

    Les plugins suivants sont installés : bonux, couteau suisse, champs extras interface et champs extras API, Verifer, YAML, saisies

    -  Le message apparait partout dans le backoffice :

    Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /home/clients/b292ffee5cda953d5b1dfadcf99de260/dev/plugins/auto/acces_restreint/inc/accesrestreint.php on line 149

    Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /home/clients/b292ffee5cda953d5b1dfadcf99de260/dev/plugins/auto/acces_restreint/inc/accesrestreint.php on line 149

    Reply to this message

  • Bonjour,

    Problème de droits d’accès avec SPIP 4.0.0 + Accès Restreint v4.2.3.

    Sur une page mot.html ( domaine.com/spip.php?motXX) qui se trouve dans une zone privé, les SITES restent visibles aux visiteurs non identifiés alors que les ARTICLES et DOCUMENTS sont eux invisibles comme attendu.

    De plus il n’y a pas d’affichage de l’ERREUR 401 comme pour les pages rubrique.html ou article.html, le titre du mot, le logo et le descriptif restent visible.

    Boucle dans le squelette mot.html :

    <ul>
    <BOUCLE_links(SITES) {id_mot}>
      <li>
        <a rel="nofollow" href="#URL_SITE">#NOM_SITE</a> 
      </li>
    </BOUCLE_links>
    </ul>

    Reply to this message

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