guillaumek guillaumek - 1 month ago 5
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

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: "cool@example.com", verified: true },
    { address: "another@different.com", verified: false }
  ],
  createdAt: Wed Aug 21 2013 15:16:52 GMT-0700 (PDT),
  profile: {
        //profile data
       },
passportNo:'PASSPORT',
ssn:'SSSN',
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

Comments