1

Ceci est mon premier article sur Stack Overflow. J'essaie de créer un système qui authentifie trois types d'utilisateurs avec des expériences de site complètement différentes: les clients, les employeurs et les fournisseurs.Ruby on Rails: Comment puis-je authentifier différents types d'utilisateurs d'un endroit?

Je pense à utiliser une table 'User' polymorphe (en utilisant AuthLogic) avec un nom d'utilisateur, un mot de passe, et un user_type (+ les autres champs obligatoires d'AuthLogic). Si c'est un bon moyen d'y aller, comment puis-je configurer cela après l'authentification d'un user_id avec un user_type de la manière standard, je peux diriger l'utilisateur vers la page qui leur convient?

Merci.

+0

Je voudrais aussi envisager de vérifier le plugin cancan: http://github.com/ryanb/cancan –

+0

Je vais certainement Zachary, merci! – sscirrus

Répondre

1

Je considérerais STI dans ce cas. Ensuite, chacun peut s'authentifier en tant qu'utilisateur normal, mais se connecter facilement à son propre comportement en cas de besoin. Cependant, il se peut que vous deviez faire un peu de travail avec vos itinéraires pour que tout soit aligné.

+0

Merci beaucoup. Pouvez-vous me donner quelques détails sur la façon dont les routes fonctionneraient? – sscirrus

+0

Juste en configurant STI, on supposera que chaque type d'utilisateur est un type de ressource complètement différent, avec son propre contrôleur et tout, donc si vous ne voulez pas ça (par exemple vous voulez utiliser le contrôleur des utilisateurs pour tous les types d'utilisateur), vous feriez quelque chose comme: map.resources: clients,: employeurs,: fournisseurs,: controller =>: utilisateurs – x1a4

0

sscirrus, y a-t-il des relations entre eux (Clients, Employeurs et Fournisseurs)? J'ai un cas similaire mais avec une relation un-à-plusieurs.

+0

Salut Sergio, Oui, il existe des relations entre tous ces tableaux, comme suit (je vais seulement donner la moitié, évidemment l'autre direction de ces relations sont spécifiées dans les modèles): Employeur has_many: vendeurs, Employeur has_many: projets, Projet has_many: clients,: through =>: matching. – sscirrus