guillaumek guillaumek - 10 months ago 38
React JSX Question

Meteor: Two types of user, the way to go with complexe UserAccounts?

I'm using Meteor/react and flowRouter and I would like to create an app with two kinds of users; let's say the stay simple:

  • Client

  • Provider

  • In fact Client has some "UserAccounts" fields (name, password, email ...) but I would like to add many of others: Idk like Passport Number, Social Security Number, Bank Account etc ...

  • The Provider could fill this fields if he wants too (so could have the same "role") but its main goal is to have other fields like idk: Job title, Category Job, Other Password etc ..

So Is some of you used the package UserAccounts to do this or you created a system by yourself ?
Of course I wish using email validation etc ... The application Ui would like to have a search component searching for Providers and only in Providers.

Also, I will use two Registration form (same page but two forms) but one Login modal for both types.

My question is, is it a good thing to use userAccount, and probably I will need roles for the two roles, but do UserAccount accept many others custom fields, do I have to set in in 'Profile' and won't it slow too much the application with only one user collection ?

Thanks guys for the mind blowing help :)

Answer Source

Yes, you can use userAccount for your case & No, it won't slow down to any noticeable amount.

To manage different roles you can use alaning:roles package. It helps you limit access to certain parts of code to roles and groups.

UPDATE: (Edit)

As Pointed out in comments, it is not advisable to use profile as it is automatically publishes. Instead try this: Regarding, second part of adding more fields in user account, you can add any number of fields in the profile section. The document will look something like this:


  _id: "bbca5d6a-2156-41c4-89da-0329e8c99a4f",  // Meteor.userId()
  username: "cool_kid_13", // unique name
  emails: [
    // each email address can only belong to one user.
    { address: "", verified: true },
    { address: "", verified: false }
  createdAt: Wed Aug 21 2013 15:16:52 GMT-0700 (PDT),
  profile: {
        //profile data
oneMoreField: 'OneMoreField',

By default, here only email, username and profile will be published and your other data will not be visible to client unless published and subscribed.

You can read more about accounts here