I am currently structuring a new project for a client, but my team members have different opinions on how to proceed.
The main goal of the project is drop shipping.
If the client requires a system for users,
there will be four types of users:
admin (who can create multiple users with different roles, such as "call center"),
seller,
marketer,
and moderator (a sub-role of marketer who can only create orders).
One solution could be to use a roles-based approach with a single users table. This would involve adding a "role" column to the users table and using a package like Laravel's built-in Authorization system or Spatie's Laravel Permission package to manage permissions and roles.
Alternatively, you could use separate tables for each user type (e.g. admins, sellers, marketers, moderators) and manage permissions and roles within each table. This approach may be more complex to set up and maintain, but could provide more flexibility in the long run.
Ultimately, the best approach will depend on the specific needs and requirements of the project.
There are several ways to achieve this and it depends on the complexity of project.
Method 1 (simplest way if each user can only have one role ): On your users table, create a new column named role which you can store in it the name of the role (Admin, Seller, Marketer or Moderator).
Method 2 (if you need to separate your roles in another table) : create a table roles and then define the relationship between users table and roles table.
Method 3 (complex project) : In the case of a complex project that may require roles and permissions, etc. You can take a look at the Spatie/laravel-permssions package, they have a great documentation.
I don't have any further information regarding your project to tell you which method is the most appropriate.