How to use Strapi to store user data - node.js

I am creating an eCommerce platform using strapi. Strapi only has option for user-email and password.
I want to store user's address, contact details, previous orders etc. Is there a way to do so?
I am using the quickstart template.
Strapi version 3.0.0-beta.17.7 (node v10.16.3)

IMO the best way would be to create a profile model with a one to one relation to the user. You will need to create your own isOwner policy on the findOne, create, update routes however. This way on that user can view/create/update their own profiles.

Off course there is a way to do so!
Go to your admin panel http://localhost:1337/admin
Click on Content Type Builder on your left sidebar
Select User
Click on Add Another Field
And add every field you need for your eCommerce platform!

Related

Update Mongoose update records with ejs templating

I have an web app with node.js and express with mongoose. I have a candidate profile that has a lot of inputs like user personal (name address etc.), info, parents info and next of kin. I view for the candidate profile.
My question is, what's the best approach to edit the user data?
Do I go the approach of rendering the whole candidate profile and making changes and updating, or I make the option to edit fields individually which will make me have a lot of code for each field, or are there better suggestions.

Liferay database table work flow?

I am new to Liferay. Now I need to create the flow chart which has the Liferay table work flow in following scenarios,
1) What are the list of table will reflect/update if we create the site admin?
2) What are the list of table will reflect/update if we create the site?
I tried by opening database tables and noticed that USER_, CONTACT_ will reflect, But I need list of all the related tables which will reflect when we create the site and siteadmin? I am using Liferay 6.2 version.
Thanks in advance.
When you want to know the internals of any system it is always best to check the relevant source-code. So in this case you can check the source-code for those classes which are used for CRUD operations on User and Site.
1) What are the list of table will reflect/update if we create the site admin?
Site-administrator is a Role, which can be applied to a User created in Liferay.
So if you want all the tables that are created from User-creation till User is assigned the Site-administrator role for a particular site, there here are some which I can recollect:
User_ (Obvious)
Contact_ (not so obvious :-) )
Group_ (Users are also created as a record in this table since Users have public and private pages)
Address (if you add an address)
Phone (if you add a Phone)
Users_Roles (Power user role is assigned by default)
UserGroupRole (user and site-role relationship, Site-administrator is a Site-role)
Users_Groups (user and site relationship)
For others you should refer the source-code for UserLocalServiceImpl, RoleLocalServiceImpl and GroupLocalServiceImpl, check the relevant methods prefixed add, update etc.
The corresponding service.xml for these module would reveal the database tables being used.
2) What are the list of table will reflect/update if we create the site?
Sites are nothing but Groups in Liferay. So its obvious Group_ table is playing a big role.
Other tables also depend upon what configuration you are doing while creating a Site.
Then there would be other tables like Layout when you start creating pages for a Site.
I would strongly encourage to go ahead and explore the source code for the classes and you would understand the flow - when and what tables are affected.
Here is some convention which might help you traverse the source-code, almost every *LocalServiceImpl is associated with a *Model like UserLocalServiceImpl with UserModel and almost every *Model has a corresponding database table with the same name.
Also the name of the functionality would in most cases hints at what service classes are being used to connect to database, like adding a User would hint at using UserLocalServiceImpl.
Hope I have understood your question and have been able to give some proper direction.
If you want to know this because you also want to write to these tables: Don't go there! You should purely use the API to change the data that Liferay stores. Otherwise you will run into disasters some time in the future - promised.
For just getting the SQL commands that Liferay actually uses, configure portal-ext.properties and change this default value:
hibernate.show_sql=false
Then go to "Server Administration/Log Levels" and add a new category "org.hibernate.SQL", configure it to the level DEBUG. Then the results show up in the logs. Note that this log configuration is transient and will be reverted on next server start. If you want the setting to be persistent, you'll need to go into Liferay's log4j configuration files.
Remember: You don't want to write to the tables ever. Promise!

Custom Contact Form on a Drupal CCK Node

What would be the best way to construct a contact form in Drupal 6 for each node of a particular type? I have some CCK nodes of type "profile" which have email address as a field. I want to have a view for each node with a contact form that users can fill out and send with their own email address as a return address (so that further contact is being done offsite).
Basically I just want that initial email contact to be done through my site, and when the recipient replies it just goes to the address that the sender entered when they filled out the contact form.
You might be asking yourself why I don't use the personal contact form that comes baked into Drupal. The issue is that the way my institution deploys their Drupal instances to use the local Kerberos logins, the user accounts it creates in Drupal do not have email addresses. They just get a basic skeleton account with username. I don't really want to force users to go through another hoop of editing their user account info, because they most likely just won't do it.
There is nothing to do particularly with node itself, all you need for this - is form with fields (from, to, subject, message) and custom submit handler for this form.
you can implement all this in custom module using forms API to create form and write custom submit for it. And in this submit you need to send email via drupal_mail() - take a look at this, it is provides examples as well. That topic can help you with forms.
Then, if you need to place this form within a node, you can do the following:
via hook_nodeapi, on "view" operation, add form you've created before, you can check for particular node_type and use existing field values (you mentioned cck field with email) to pre-fill form. So that every time user views node, he sees this form.
as logical continue of your task, I suggest it makes sense to take a look at menu system and create local task (tab) for the node, where you'll display email form.
In general, that's all. There are of course other ways of implementing this, however I think this one is the easiest for understanding.
Regards, Slava

Not allow user to delete document in library

I want to develop a solution,not allow any user to delete document in library.
Can I do this client side?
Thanks
One option is to setup permissions so the user cannot delete items. If you need to do something programatically, there is an ItemDeleting even that fires (server side) whenever an item is being deleted that you could then implement any kind of custom logic your application rules require. More info on ItemDeleting from Wrox
John
You also could define a retention policy on the document library - if you go to settings you'll find the Information management policy settings - however I agree with John and I think managing permissions is the correct way to go.

SharePoint - Adding users from Active Directory in a custom administration form

I have a project where I need to add users to a SharePoint portal, but when I add them, I also need to set addition parameters inside a separate database.
I want to add a custom administration screen where the administration can set these values when they add the user rather than forcing them to first add the user then go to a separate interface page where they set the values.
Does anyone know of any good articles that will explain how to accomplish this?
Thanks.
It would be easier to create a custom asp.net form that would get all the information required about the user.
the submit could then add the information to the database that is needed and use the object model to add the users.
SPRoleAssignment MyRoleAssign = new SPRoleAssignment(”domain/alias”, “email address”, “User Name”, “Description”);
SPRoleDefinition MyRoleDef = newSubWeb.RoleDefinitions["Contribute"];
MyRoleAssign.RoleDefinitionBindings.Add(MyRoleDef);
site.RoleAssignments.Add(MyRoleAssign);
Code from farhanfaiz.wordpress.com here
Otherwise the SharePoint webservices may do.
Examples here

Resources