Well the real problem with the code backend for crm is that you cannot create your own login page. You can create your own register page but not a login page (not sure why but asking for this feature is a good idea).
If you do decide to use the wix-crm/wix-users apis for secure user access you really have to maintain your own member data collection, that duplicates the crm data, because there isn’t a way to get pre-existing data that might exist in the crm data collection for you to provide edit capabilities for.
So the only way to effectively manage crm data is keep a copy in your members data collection and whenever you change the data use the wix-crm.createContact() function to make the same changes.
Also note you can add new properties to the crm for your members using the Dashboard CRM page. You can update these properties using register() with crm properties mentioned here:
BUT note that you need to manage the custom field mappings because the keys are generated for you using the generic customField format. See my post here on this issue:
As I mentioned earlier, this is still a pretty complicated area due to several design issues with the crm api.
You might want to take a look at and participate in this thread: