I have 3 types of users and we want to maintain the same code base for the project instead of having 3-4 code bases when most views are just subjective to the kind of users.
Admin > admin.example.com
Moderator > moderator.example.com
Brands > brands.example.com
My structure of the React App
src
-BaseRoutes.js <--- Should handle by subdomain logic
- modules
-- admin
---- AdminRoutes.js <---- handles all Admin route logic
---- components
---- pages
-- moderator
---- ModeratorRoutes.js <---- handles all Moderator route logic
---- components
---- pages
-- brands
---- BrandsRoutes.js <---- handles all Brands route logic
---- components
---- pages
- components
- pages
Each type of user will have its own authentication to allow access to inner routes. I found a function to split the domain and do the routing using the following:
let host = window.location.host;
let protocol = window.location.protocol;
let parts = host.split(".");
let subdomain = "";
// If we get more than 3 parts, then we have a subdomain
// INFO: This could be 4, if you have a co.uk TLD or something like that.
if (parts.length >= 3) {
subdomain = parts[0];
// Remove the subdomain from the parts list
parts.splice(0, 1);
// Set the location to the new url
window.location = protocol + "//" + parts.join(".") + "/" + subdomain;
}
Is this the right way to handle subdomain based routing in React? I have never used a single code base for multiple user types. So confused about the right implementation.
client/react-routerbut rather by your server that your SPA is served on. Assuming all three sub-domains serve the sameReactcodebase I suggest you figure out what the subdomain is from the code you posted above and render different components conditionally, i.e. if it'sadminshow render onlyadmin-specific routes/links/navigation, etc...