2011-09-17 3 views
1

J'ai quelque chose à l'esprit, j'ai quelques types d'utilisateurs, propriétaire du bâtiment, directeur de l'immeuble. Je veux créer un utilisateur en tant que gestionnaire de bâtiment, mais je ne veux pas qu'ils aient accès au système de connexion. cet utilisateur est seulement pour certaines selectbox sur mon site, mais je dois les montrer dans ma page d'index d'utilisateur. Ce que je pense que je peux faire est de créer un utilisateur normal et avec un before_save je crée une nouvelle donnée dans une autre table.rails 3 - concevoir un utilisateur de bloc pour se connecter

Dans une demande, je dois pouvoir installer dans mon bâtiment plus d'un gestionnaire de bâtiment. peut-être que les meilleurs sont avec forme imbriquée .. Je pense que je devrai ajouter l'identification de bâtiment à ma table d'utilisateur. peut-être qu'ils peuvent être assignés plus d'un bâtiment.

pour l'instant, ma structure db sont comme ceci:

table users with user data (username, password, email, first and last name, phone) 
table usertype have userid, typename and accesslvl 

Mais ce problème me donner un problème de gestion. Ils ne seront pas associés aux données utilisateur.

Comment puis-je résoudre ce problème? Est-ce que le périphérique peut bloquer certains utilisateurs? J'ai cherché dans les docs Devise, mais rien trouvé.

Merci pour votre aide.

Répondre

2

Il existe une approche permettant aux utilisateurs administrateurs d'approuver d'autres comptes d'utilisateur pour la connexion. Vous pouvez utiliser une approche similaire mais approuver par programme les comptes pour lesquels vous souhaitez réellement autoriser les connexions. Les détails sont ici:

https://github.com/plataformatec/devise/wiki/How-To:-Require-admin-to-activate-account-before-sign_in

+0

Merci, j'ai raté cette solution. Est-il possible de supprimer la validation du mot de passe si j'ai également sélectionné selectbox pour le gestionnaire de bâtiment? je le cache avec jquery, mais demande toujours à entrer le mot de passe, sur créer et éditer le formulaire .. merci! – neimad

+0

Si ces comptes seront inactifs de toute façon, alors la sécurité n'a pas d'importance. Il suffit peut-être de créer un champ caché avec un mot de passe par défaut pour cette situation (ou vous pouvez créer le mot de passe dans le contrôleur avant d'appeler create sur le modèle). –

+0

Penser plus loin, vous pouvez mettre le code pour définir un mot de passe par défaut dans un rappel "before_create" dans le modèle de l'utilisateur et utiliser une condition pour le faire seulement s'il s'agit d'un gestionnaire de bâtiment. Ce serait probablement l'approche la plus simple. –

Questions connexes