
Recherche avancée
Autres articles (54)
-
La file d’attente de SPIPmotion
28 novembre 2010, parUne file d’attente stockée dans la base de donnée
Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...) -
Les vidéos
21 avril 2011, parComme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...) -
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
Sur d’autres sites (7054)
-
fate : Explicitly specify the rgb555le pixel format for the mss2 rgb555 tests
10 janvier 2014, par Martin Storsjö -
Anomalie #4129 (En cours) : Echec de la première connexion des utilisateurs LDAP et non création d...
11 avril 2018, par Franck Rversion de SPIP : 3.2.1 [23954]
version de PHP : 5.6.33
version de MySQL : 14.14Jusqu’à il n’y a pas si longtemps (désolé pour l’imprécision, on ajoute pas des utilisateurs si fréquemment), les utilisateurs LDAP pouvaient s’authentifier sur SPIP et l’utilisateur SPIP était créé dans la base de donnée. J’ai remarqué récemment que les nouveaux arrivants ne pouvaient plus s’authentifier, et donc créer leur compte, de cette manière.
Problème¶
Ce problème a été remarqué sur le site en production mis à jour en 3.2.1, ainsi que sur une installation de test 3.2.1 propre (attention au bug de config LDAP ).
- Le site SPIP est configuré pour utiliser l’authentification LDAP ;
- Un nouvel utilisateur est créé dans le LDAP ;
- Il se connecte au site SPIP avec ses identifiants LDAP ;
- La connexion échoue systématiquement.
La demande #3824 offre une solution avec
_AUTORISER_AUTH_FAIBLE
mais elle ne me semble pas satisfaisante sachant que LDAP est configurable à l’installation de SPIP, le mode par défaut devrait assurer que l’on puisse se connecter.Workaround¶
Il y a au moins deux solutions qui fonctionnent :
- La création de l’utilisateur à la main dans la base de donnée permet à l’utilisateur de se connecter (
insert into spip_auteurs ...
) - Mettre
define ('_AUTORISER_AUTH_FAIBLE', true);
Analyse¶
Lors de la toute première authentification d’un utilisateur inconnu de SPIP, le mot de passe est envoyé sécurisé par défaut (hachage réalisé par le javascript avec les aleas actuel/futur). Seulement l’authentification LDAP requiert le mot de passe en clair. Lorsque l’utilisateur existe déjà et que la source est
ldap
, alors la sécurisation du mot de passe est désactivée (login.js
,login-sha-min.js
, le cadenas à côté du champ mot de passe disparait), d’où le fonctionnement du workaround 1. Si on désactive la sécurisation du mot de passe, workaround 2, alors cela fonctionne lors de la première authentification, et l’utilisateur est bien créé dans SPIP.Remarque¶
L’envoi en clair n’est pas un gros problème dans notre cas, le site est forcé en HTTPS.
-
Anomalie #3894 (Nouveau) : Jointures (erronées ?) avec les boucles documents et leurs critères
26 janvier 2017, par marcimat ☺☮☯♫Soit le cas suivant :
- une document A, attaché à une rubrique R1 et R2
-<doca></doca>
mis dans le texte de R1 (il est donc "vu" dans R1, mais pas dans R2)
- une boucle documents simplifiée (issue de squelettes-dist/inclure/documents.html) dans le squelette test.html :Test
- #FICHIER
Constats¶
Paramètre id_rubrique :¶
Si on appelle
?page=test&id_rubrique=1
le document A sera retourné, malgré le critère{vu=non}
.
Effectivement la boucle effectue 2 jointures différentes sur spip_documents_liens, une pour lier le champ "vu" et l’autre pour lier objet/id_objet.
Du coup, la requête SQL trouve effectivement un document A non vu (dans la rubrique 2) et le retourne (vu qu’il est lié aussi à la rubrique 1).On obtient la requête suivante :
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L2 ON ( L2.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L2.id_objet = 1) AND (L2.objet = ’rubrique’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Paramètres objet / id_objet :¶
Si on appelle
page=test&objet=rubrique&id_objet=1
, soit logiquement la même chose, on obtient 3 jointures sur spip_documents_liens.
Là, les documents retournés ne soient pas forcément ceux de l’objet demandé ! La jointure cherche des documents liés à objet=rubrique, id_objet=1, mais pas forcément dans la même liaison !
Les documents retournés ici sont parfois un peu farfelus donc là.SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L4 ON ( L4.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L3 ON ( L3.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L3.objet = ’rubrique’) AND (L4.id_objet = 1) AND (L1.vu = ’non’) GROUP BY documents.id_document
Paramètre id_article¶
Si on appelle
page=test&id_article=1
, on obtient, ô magie, une seule jointure. La boucle est correcte cette fois-ci donc. Je n’ai pas encore cherché pourquoi ça marche avec id_article, et pas id_rubrique…SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L1.id_objet = 1) AND (L1.objet = ’article’) AND (L1.vu = ’non’) GROUP BY documents.id_document