Bonsoir à tous,

Pour ceux qui ne connaissent pas acts_as_tenant, cette gem permet de
scope facilement des models pour chaque pseudo-instance de notre
application (https://en.wikipedia.org/wiki/Multitenancy). Dans mon
cas, je scope tout mon site par le domaine : http://www.rubybb.com et
http://test.rubybb.com tapent au même endroit mais sont isolés l'un de
l'autre par un « default_scope généralisé ».

J'ai des difficultés à résoudre cela : mes users sont égalements
scopés, chaque site a sa propre liste d'utilisateur, il faut donc
s'inscrire sur chaque domaine sur lequel on souhaite être présent. Je
ne souhaite pas de SSO.

Avec acts_as_tenant, la seule chose que j'ai à faire est d'ajouter un
before filter dans mon application_controller «
set_current_tenant(@domain) ». Mais dans un cas, ce before_filter
arrive « trop tard » :

http://stackoverflow.com/questions/14664708/multitenancy-with-devise-users-default-scoped-by-subdomain-breaks-sessions

Pour résumer, si l'utilisateur (current_user) n'est pas trouvé, Devise
invalide la session (ce n'est pas sûr à 100 % mais ça y ressemble
beaucoup). Hors, cette invalidation semble se faire avant le
before_filter set_current_tenant. C'est à dire que si le
current_tenant a changé depuis la dernière page (on visite un autre
domaine que celui où l'on est actuellement connecté), Devise ne
trouvera pas l'utilisateur (default_scope incorrect) et invalidera la
session.

Les étapes pour assister au bug sont décrites en tête du lien
précédent, il est très facile à reproduire. De même avec les sources
du projet.

Si quelqu'un a une piste (ou une autre gem ?), je lui en serai
grandement reconnaissant.

Merci à vous !

-- 
-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
--- 
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes 
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .


Répondre à