- I’m currently developing a POS app for on physical stores as customers. Since I assume there will be multiple clients that will use my app I tried to group users according to the store name or company name by using Roles, set to their company/stores name. My problem is the role can’t be set automatically as they sign up because signing up just adds a row to the user’s table with only their emails and the user just edits their profile. But the role column can only be edited in the data editor and I want the user to do it themselves. Is there a way to edit the role in the app? Or is there another way to group users? I’m in the free plan as of now.
No way to do it on the free plan. If you upgrade to a paid plan, there would be options.
Are you using these roles as Row Owners?
If not, then you could use “pseudo-roles”. That is, create a “Role” column in your Users table, but don’t set it as the Role column in your User Profile configuration. Then it becomes just a regular column and the values in it can be changed at any time.
I could be subscribing to a paid plan soon and convert it to a production app. I just would like to design the app first and experience first-hand if i can make it work using Glide.
With pseudo-roles, can I group users? I want to group users into their companies then let them manage their companies.
Thank you.
If you want to do it securely, in such a way that it is impossible for one group of users to access the data that belongs to another group, then you need to use actual roles and apply those roles as row owners.
Pseudo-roles are more for controlling visibility conditions and CRUD actions. They can help to prevent or allow users to perform certain actions, but they do not help in keeping data secure.
Some of the paid plans come with a 30 day free trial.
I have sent a message to billing support for features to address this concern and for the meantime, I followed your advice to use pseudo-roles for now.
Thank you.
I just found another concern, how do I manage other users in the app without the role column?
What would those users be able to do?
You can just subscribe to the paid plans’ free trials and experience it yourself using the actual roles setup without waiting for support.
The app is to manage physical stores like their sales and inventory. I would like to group users according to their company and each group/company has users that act as their admin.
It comes back to your definition of “manage”, and how you want to apply it to these Admins.
Is it just about controlling what they can do? For example, should they have expanded permissions when it comes to adding and editing data? If that’s all it is, then you can use pseudo-roles and then use those in visibility conditions and/or controls on actions.
The process I shared is an actual process existing locally here which is what I plan to automate and improve and, in the process, provide solution. Thanks to you I was able to improvise and find workarounds. I followed your suggestion of using pseudo-roles so I was able to group users according to their companies. My concern with this work around is the latency of the app. In time, my customers will be adding transactions and products which means that my data volume will also grow. If they (all the data of all the customers) will be downloaded to the customer’s devise, will the loading speed be affected? There is also the issue of security.
If you expect the transactional table to grow quite large, then you might want to look at high scale data sources - Big Tables or one of the supported SQL sources.
If data security is important, then you should be using Row Owners. There is no other option or workaround.
I’m already using row owners on my user’s email column. If the customers back up their data, like downloading it in a csv file, would they also download the transactions/data that aren’t theirs?
If Row Owners are being used, there will be no way for the customer to gain access to anyone else’s data…even when creating a CSV.
Once you use row owners, Glide “scans” what a user can access upon them entering the app, and their device only downloads those. So when you create a CSV, there’s no way to access rows that they do not own, the rows are not on their devices.