2009-10-19 6 views
0

Ok, donc j'acl9 en place et le fonctionnement, et ma structure app jusqu'ici:conseils pour l'accès à la structure et l'utilisateur

Régions (qui ont) (emplacements qui ont des ventes). Les ventes ne sont pas importantes, fondamentalement juste les messages qui montreront sur chaque emplacement.

J'ai aussi des utilisateurs, qui intégré avec acl9 peut être restreint et autorisé en fonction du rôle.

Ce que je dois faire est de créer des sociétés et de faire en sorte que les utilisateurs créés pour une entreprise donnée ne puissent accéder qu'aux régions et emplacements de cette société. Je vais alors avoir besoin d'utilisateurs que chaque entreprise peut créer et qui n'ont accès qu'au lieu auquel ils ont accès.

Ma question est, je ne sais pas comment faire pour restreindre dynamiquement un utilisateur créé à une certaine section. C'est-à-dire, l'interface pour l'admin. Je peux imaginer quelques approches, mais en cherchant des conseils sur le meilleur.

Répondre

1

Vous pouvez remplacer le "has_role?" méthode pour l'utilisateur.

class User < ActiveRecord::Base 
    def has_role?(role_name, obj=nil) 
     # Your code 
    end 
end 

Si le type d'objet est « Région » ou « Lieu », vous vérifiez la compagnie de l'utilisateur et permettent l'accès si la région est appropriée. Sinon, vous appelez "super". Et laissez ACL9 récupérer sa valeur par défaut.

Ce serait vous donner quelque chose comme ceci:

class User < ActiveRecord::Base 
    def has_role?(role_name, obj=nil) 
     super unless obj.class == Region or obj.class == Location 
     return company.region == obj if obj.class == Region 
     return company.location == obj if obj.class == Location 
    end 
end 

Après c'est seulement une suggestion de mise en œuvre. Il y en a presque un nombre infini. Et je n'ai jamais dit que c'était le meilleur.

+0

Ok, j'ai une question, obj.class fait référence quoi, exactement? Ai-je besoin d'avoir une classe pour chaque rôle défini dans mon modèle? –

+0

Est-ce une mauvaise idée d'avoir deux types de modèles "utilisateur"? Il semble que la gestion de toutes les entreprises avec un administrateur devrait être différente de celle des autres niveaux d'utilisateurs ... –

Questions connexes