Changeset 68801 in spip-zone for _plugins_/acces_restreint


Ignore:
Timestamp:
Jan 7, 2013, 10:44:48 AM (8 years ago)
Author:
cedric@…
Message:

Appeler la page 401 sur un contenu protégé : cela ne fonctionne à nouveau sous SPIP 3.0 depuis http://core.spip.org/projects/spip/repository/revisions/20070 et on étend pour que cela fonctionne aussi avec la dist ou tout autre squelette, ce qui est encore mieux.

Il suffit donc de creer un squelette 401 et d'y gerer le filtrage d'accès (formulaire de login par exemple) pour qu'il soit appelé sur tout contenu restreint. A defaut de squelette 401, c'est le 404 qui sera appelé.

Location:
_plugins_/acces_restreint/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/acces_restreint/trunk/accesrestreint_pipelines.php

    r55275 r68801  
    5858 */
    5959function accesrestreint_page_indisponible($contexte){
    60         if ($contexte['status']=='404' AND isset($contexte['type'])){
    61                 $objet = $contexte['type'];
    62                 $table_sql = table_objet_sql($objet);
    63                 $id_table_objet = id_table_objet($objet);
    64                 if ($id = intval($contexte[$id_table_objet])){
     60        if ($contexte['status']=='404'){
     61                $objet = "";
     62                if (isset($contexte['type'])) $objet = $contexte['type'];
     63                elseif (isset($contexte['type-page'])) $objet = $contexte['type-page'];
     64                elseif(isset($contexte['fond_erreur'])) {
     65                        define('_DEFINIR_CONTEXTE_TYPE_PAGE',true);
     66                        $c2 = $contexte;
     67                        list($fond2,$c2,$url_redirect) = urls_decoder_url(nettoyer_uri(),$contexte['fond_erreur'],$c2,true);
     68                        $objet = $c2['type-page'];
     69                }
     70                if ($objet){
     71                        $table_sql = table_objet_sql($objet);
     72                        $id_table_objet = id_table_objet($objet);
     73                        if ($id = intval($contexte[$id_table_objet])){
    6574
    66                         $publie = true;
    67                         $restreint = false;
     75                                $publie = true;
     76                                $restreint = false;
    6877
    69                         $trouver_table = charger_fonction('trouver_table','base');
    70                         $desc = $trouver_table($table_sql);
    71                         if (isset($desc['field']['statut'])){
    72                                 $statut = sql_getfetsel('statut', $table_sql, "$id_table_objet=".intval($id));
    73                                 if ($statut!='publie')
    74                                         $publie = false;
    75                         }
    76                        
    77                         include_spip('inc/autoriser');
    78                         if ($publie AND !autoriser('voir',$objet,$id)){
    79                                 // c'est un contenu restreint
    80                                 $contexte['status'] = '401';
    81                                 $contexte['code'] = '401 Unauthorized';
    82                                 $contexte['fond'] = '401';
    83                                 $contexte['erreur'] = _T('accesrestreint:info_acces_restreint');
    84                                 $contexte['cible'] = self();
     78                                $trouver_table = charger_fonction('trouver_table','base');
     79                                $desc = $trouver_table($table_sql);
     80                                if (isset($desc['field']['statut'])){
     81                                        $statut = sql_getfetsel('statut', $table_sql, "$id_table_objet=".intval($id));
     82                                        if ($statut!='publie')
     83                                                $publie = false;
     84                                }
     85
     86                                include_spip('inc/autoriser');
     87                                if ($publie AND !autoriser('voir',$objet,$id)){
     88                                        // c'est un contenu restreint
     89                                        $contexte['status'] = '401';
     90                                        $contexte['code'] = '401 Unauthorized';
     91                                        $contexte['fond'] = '401';
     92                                        $contexte['erreur'] = _T('accesrestreint:info_acces_restreint');
     93                                        $contexte['cible'] = self();
     94                                }
    8595                        }
    8696                }
  • _plugins_/acces_restreint/trunk/paquet.xml

    r67731 r68801  
    22        prefix="accesrestreint"
    33        categorie="auteur"
    4         version="3.8.0"
     4        version="3.8.1"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.