0

Suite à ce tutoriel ici.Configuration personnalisée OmniAuth Ruby on Rails

J'ai un problème à trouver des informations sur ce que j'essaie d'accomplir.

Mon application rails est actuellement configurée avec une authentification utilisateur personnalisée. Les utilisateurs ont également une chaîne de rôle dans la base de données qui est utilisée pour déterminer ce qu'ils voient et peuvent faire dans l'application. Dans le formulaire d'inscription régulier, l'utilisateur peut entrer, nom, adresse e-mail, nom d'utilisateur et mot de passe. Et doivent également sélectionner leur rôle d'utilisateur.

Signup.html.erb 
       <h3>Choose Account Type      </h3> 
    <%= f.input :role, :collection => User::ROLES.map { |s| [s.humanize, s] }, required: true, label: false, input_html: { class: 'input-md' } %> 

Mon but est d'avoir mon formulaire d'inscription avec twitter et facebook omniauth. Quand ils cliquent créer un compte avec twitter ou facebook, je voudrais que l'utilisateur puisse choisir leur rôle. La configuration omniauth actuelle Je suis un peu confus sur la façon d'ajouter une sélection personnalisée. Y at-il de toute façon pour s'assurer qu'un utilisateur sélectionne un rôle avant que leur compte soit créé en reliant des comptes Twitter ou Facebook.

Toute aide serait incroyable merci.

Répondre

0

Regardons le flux oauth - dans cet exemple nous utilisons facebook mais il peut s'agir de n'importe quel fournisseur.

  1. L'utilisateur clique sur le lien de connexion qui pointe vers /auth/facebook.
  2. OmniAuth redirige la boîte de dialogue d'authentification https://www.facebook.com/dialog/oauth...
  3. L'utilisateur sera invité à accorder des autorisations à l'application. Ils peuvent choisir d'accepter ou de refuser. L'utilisateur est redirigé vers votre application.
  4. Le retour "callback" est géré par votre application. Habituellement, ce serait à /auth/callbacks/facebook. Vous obtenez un hachage contenant les crédits et les informations de l'utilisateur. Exactement ce que vous en faites et comment rediriger l'utilisateur après la connexion est à vous.

Si vous souhaitez que l'utilisateur vous fournir des détails supplémentaires vous y parvenir en redirigeant l'utilisateur après une session. Vous devez toutefois créer le compte utilisateur en premier et ensuite permettre à l'utilisateur de fournir des détails supplémentaires. Bien qu'il soit techniquement possible de stocker les informations d'identification quelque part, OAuth est assez compliqué à lui seul, de sorte que vous ne voulez pas lancer un tas d'étapes supplémentaires dans le flux d'authentification.