bruno modulix wrote:
Bon, j'ai mon MetaDirectory, mon StackingDirectory et mon
BackingDirectory... J'arrive à lire mes utilisateurs... et c'est tout.
Question suivante: comment je fais pour les roles et les groupes ?
D'après ce que j'ai vu dans d'autres posts ici, avec cet agencement, les
affectations user/roles et user/groups sont supposées être stockées dans
l'enregistrement user. Mais ça ne me dis pas où je stocke les groupes et
roles eux même, ni comment se fait la liaison dans le layout ???
Le schema members doit donc contenir un champs roles et un champs groups
qui sont des String Fields. Ces infos peuvent etre stockées dans un
backing différent, par exemple un ZODBBackingDirectory (pas la peine de
mettre en place une branche autre LDAP si cette liste n'est utilisée que
par CPS).
on aura donc :
members (Meta)
id
sn
givenName
dn
[...]
groups
roles
|
|
|---------------------------------------|
members_stacking (Stacking) members_zodb (ZODBBacking)
id groups
sn roles
givenName
dn
[...]
|
members_ldap (LDAPBacking)
dn
sn
givenName
id
[...]
Concernant les annuaires de groupes et de roles : il faut effectivement
les remplacer par autre choses car ils ne sont pas prévus pour
fonctionner avec CPSUserFolder.
Nous allons donc utiliser des annuaires croisées et effectivement, ils
ne stockent que la liste des roles et groupes et offre une interface
pour pouvoir faire des editions inversées : pour un groupe donné,
changer la liste des membres y appartenant. Le champs 'members' du
l'annuaire 'groups' est donc un champs calculé. Il faut faire un peu de
code pour obtenir ces editions croisées.
Dans la pratique, l'annuaire des roles est inutilisé. Donc autant s'en
passer (le supprimer completement) et juste utiliser un simple
vocabulaire pour stocker les deux roles globaux disponibles (Manager et
Member) pour le widget de selection. CPSUserFolder n'a pas besoin d'un
annuaire de roles a pour fonctionner. Pour l'annuaire des groupe, on
pourra utiliser un simple ZODBDirectory.
Donc voila : ca fait du pain sur la planche ! Mais heureusement, il y a
une bonne nouvelle : il existe dans le svn une branche qui permet de
configurer CPS pour utiliser CPSUserFolder avec un ZODBDirectory pour
les groupes avec des champs calculé pour faire l'edition croisée tout
pret. La methode pour faire ces editions croisé se trouve dans le tool
portal_directories et j'ai mis à jour les definition du schema de
l'annuaire des groupes pour utiliser ces methodes.
http://svn.nuxeo.org/trac/pub/browser/CPSDirectory/branches/ogrisel-switch_to_cpsuserfolder_ticket811/
Pour télécharger cette version :
svn co
http://svn.nuxeo.org/pub/CPSDirectory/branches/ogrisel-switch_to_cpsuserfolder_ticket811/
CPSDirectory
Il existe une branche equivalente qui change un peu l'installer de
CPSDefault pour installer CPSUserFolder par defaut.
Le but de ces deux branches est de mettre CPSUserFolder par defaut dans
un prochaine version de CPS. Tout est pres et fonctionne. Il manque
juste la mise à jour de certains vieux tests et d'ecrire un script pour
migrer les sites CPS existants vers CPSUserFolder. J'ai pas le temps de
finir ca pour l'instant mais j'espere le trouver le mois prochain.
Voila. Bon courage pour la suite :)
--
Olivier
PS: le howto sera le bienvenu, même si a priori CPSUserFolder sera
bientot (?) installé par defaut dans CPS :)
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>