Bonjour,
Cela fait des semaines... mois.. que je me retourne le cerveau afin de rendre piwigo compatible avec mon besoin. FAIL.
Je souhaite pouvoir fournir a ma famille et a mes amis un site d'hebergement et de partage de photo. Je souhaite que chacun puisse déposer ses photos, gérer ses albums, gérer ses droits d’accès, inviter des amis qui possedent un compte sur le site.
J'ai essayé le plugin Community mais il ne permet rien de tres evolué. Il ne permet pas de déléguer aux utilisateurs des droits de gestion d'acces dans un album qui leur serait dedié. C'est l'admin qui doit définir pour eux les droits... l'utilisateur n'est donc pas autonome.
-> piwigo, en install classique, est orienté mono utilisateur = l'admin. Les autres comptes n'ont pour seul raison d'etre que de demander une authentification pour acceder en lecture a un contenu.
-> piwigo peut etre installé en mode multi-site, partageant une seul base de donnée (facilitant la sauvegarde...), dont les tables comportent un préfixe par install. La bases Mysql est 1, mais le sites restent isolés et independants - le TOP pour l'offre d'hebergement PIWIGO.
Mon souhaite serait un piwigo communautaire, qui reposerait sur 1 install par utilisateur, 1 base Mysql par utilisateur, MAIS avec un point commun entre toutes ses install : la base des compte utilisateurs.
Ainsi chaque utilisateurs serait ADMIN de son piwigo:
https://album.mondomaine.org/user1
https://album.mondomaine.org/user2
https://album.mondomaine.org/user3
Sur mon serveur web:
/var/www/piwigo/piwigo_user1/
/var/www/piwigo/piwigo_user2/
/var/www/piwigo/piwigo_user3/
Base mysql:
1 base dédié par site
Point commun => un lien entre les tables contenant les comptes utilisateurs permettant de les fusionner, de constituer un annuaire et de permettre a user1, admin de son site, de donner droits en lecture a user2. de permettre a user3 de donner acces en lecture a user1. Tout cela sans que chaque USER soit obligé de creer un compte dans chacune des instances.
Cela serait il possible avec un simple script qui synchroniserait les tables des comptes utilisateurs entre plusieurs BDD PIWIGO?
On pourrait imaginer qu'a l'installation d'un site piwigo on selectionne un mode de fonctionnement : classique ou communautaire. Puis on devrait definir si le site que l'on install en mode "communautaire est le "maitre" ou un "satellite" (si satellite, specifier la BDD "maitre" qui se chargera de centraliser les comptes utilisateurs). On pourrait imaginer qu'un site puisse "quitter" la communauté et se baser sur sa propre table de comptes utilisateurs (l'admin devrait donc creer/recrer des comptes ou laisser les utilisateurs se réinscrire).
Merci de m'avoir lu.
Dernière modification par FOUINE95 (2012-11-27 11:36:26)
Hors ligne
Bonjour
Je crois que vous pouvez gérer ça simplement avec le multi site et $conf['users_table'] = $prefixeTable.'users'; à paramétrer
Hors ligne
flop25 a écrit:
Bonjour
Je crois que vous pouvez gérer ça simplement avec le multi site et $conf['users_table'] = $prefixeTable.'users'; à paramétrer
Merci pour ta réponse.
J'ai installé 4 sites (1 maitre et 3 satellites), 4 install de piwigo dans 1 seule bases Mysql.
prefixe pour le site 1 dit "base" = pwgbase_
prefixe pour le site 2 = pwg2_
prefixe pour le site 3 = pwg3_
prefixe pour le site 4 = pwg4_
Le fichier a modifier est le "/local/config/database.inc.php" de chaque instance satellite?
J'ai rajouté:
$conf['users_table'] = 'pwgbase_users';
Je peux me logguer dans chacune des instances, mais un compté créé dans l'instance pwg2_ ne se retrouve pas dans les autres instance. Si je tente de me connecter dans l'instance 2 avec un compte créé depuis l'instance 1, j'ai un bug:
Warning: array_merge(): Argument #2 is not an array in /var/www/TEST/piwigo_test/piwigo_base/include/functions_user.inc.php on line 354 Warning: Invalid argument supplied for foreach() in /var/www/TEST/piwigo_test/piwigo_base/include/functions_user.inc.php on line 356 Notice: Undefined index: id in /var/www/TEST/piwigo_test/piwigo_base/include/functions_user.inc.php on line 385 Notice: Undefined index: status in /var/www/TEST/piwigo_test/piwigo_base/include/functions_user.inc.php on line 385
Warning: [mysql error 1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
SELECT cat_id
FROM pwgbase_user_access
WHERE user_id =
; in /var/www/TEST/piwigo_test/piwigo_base/include/dblayer/functions_mysql.inc.php on line 770
ce n'est qu'un extrait...
Si je créé un utilisateur dans l'instance 2, utilisateur qui a une adresse mail deja utilisé par un autre compte dans instance 3, j'ai un message "propre" d'erreur. Il y a bien interaction entre mes instances.... Idem pour un nom d'utilisateur deja existant.
PS : je n'y connais rien en mysql... mais je suis motivé :-D
PS2 : je vous donne l'url de la gallerie :
http://admin.underworld.fr/piwigo_user1/
essayez de vous y connecter avec le user/password = user4/user4
Merci.
Dernière modification par FOUINE95 (2012-11-27 16:40:12)
Hors ligne
Bonjour,
Tu as expliqué aux piwigo que tu utilisais une table externe ?
Si je me rappelle bien
$conf['external_authentification'] = true;
Tu as purgé les sessions en cours ?
Hors ligne
ddtddt a écrit:
Bonjour,
Tu as expliqué aux piwigo que tu utilisais une table externe ?
Si je me rappelle bien
$conf['external_authentification'] = true;
Tu as purgé les sessions en cours ?
Merci!
Il me manquait cette derniere ligne :)
mon fichier /piwigo_user1/local/config/config.inc.php contient a présent ceci:
<?php
$conf['external_authentification'] = true;
$conf['users_table'] = 'pwgbase_users';
?>
j'arrive a me loguer sans probleme sur une instance satellite, mais pas sur l'instance de BASE.
sur l'instance satellite, je peux me loguer avec les comptes créé depuis le satellite, ou depuis la base.
sur la base, je ne peux me loger qu'avec les comptes créé sur la base, mais pas créé depuis satellite.
"Tu as purgé les sessions en cours ?" c'est peut etre ca le probleme? comment proceder?
pour constater le problème, j'ai créé un compte pipo/pipo sur l'instance1.
http://admin.underworld.fr/piwigo_base/ = KO
http://admin.underworld.fr/piwigo_user1/ = OK
j'ai créé un compte pipo2/pipo2 sur la base.
http://admin.underworld.fr/piwigo_base/ = OK
http://admin.underworld.fr/piwigo_user1/ = OK
Merci!
Dernière modification par FOUINE95 (2012-11-27 17:18:28)
Hors ligne
outils -> Maintenance ->
(perso je ne laisserais les inscriptions ouverte que sur le site principal)
Hors ligne
Nickel, ca fonctionne!
Par contre, c'est une evidence, tout le monde partage la meme base de compte. Du coup, un admin de l'instance2 peut agir sur des comptes qui ne le concerne pas, qu'il n'a pas a gerer. user1 peux creer/supprimer des album, agir sur les photos de l'instance3 alors que je souhaiterai reserver ce droit a user3.
C'est un probleme...
Je peux donner le STATUS "administrateur" a certains compte, mais ce droit est valables pour l'ensemble des install piwigo, et non relatif a une install specifique.
serait il possible de rajouter un parametre liant le STATUS et l'instance? Permettre de definir que user1 a le status ADMINISTRATEUR uniquement dans les bases explicitement spécifiées?
Dernière modification par FOUINE95 (2012-11-28 00:06:17)
Hors ligne
Bonjour,
Ce que je serais à ta place.
Je cacherais l'onglet sur la gestion des utilisateurs.
Dans la base de données, je passerais admin (ou webmaster si tu veux qu'il puisse installer des plugins) le user qui va bien [ou ajouter le code qui va bien en fichier local)
$conf['webmaster_id'] = 1;
(je rajouterais un liens enregistrement sur toutes les galeries qui envoie sur une page d'enregistrement)
Hors ligne