🛡️Roles and Row Owners DEMYSTIFIED

That sounds right.

I’d say it depends on a couple of things.

  • Whether or not you have Row Owners enabled
  • What you actually do with those users that have an Admin role (assuming it’s a “real” role in the sense of what you get with a Private Pro app)

If you don’t have Row Owners enabled, then yes all 100 users will download all data.
If you do have Row Owners enabled, then each user will only download that data that they “own”.

With your Admin users, it’s completely up to you how much data they see. If you add “Admin” as a secondary Row Owner on your User Profiles table (and apply it to all rows), then yes they’ll see all data. If you don’t - then they won’t.

2 Likes

Well said.

1 Like

Can you please elaborate on this? I have an app which is kind of like Tinder, so here one user sees other users profile. I currently have no row owners enabled, but I’m worried about the security of the user’s private data.

Should I have row owners? If so, my understanding is I can’t use the same table for viewing of other users. Then all the updation has to happen to both tables every time?

Correct… Anytime you’re planning on building out a social media type app, you should have one sheet for users and another for their public profile. The users sheet should have row owners turned on.

1 Like

Alright got it. Got to figure out how to import in the public data now since I’m using Glide tables only. Thanks!

You can probably just duplicate the table:

1 Like

Yes that works perfectly! Began with Glide just a week back for a MVP haha

1 Like

Due to computed columns not being able to be set to a Row Owner, any tips on solving this issue?

App has list of Restaurants stored in a Glide Restaurant Table
Each Restaurant has an Owner and can have a Manager.
Owners are required and Managers are optional.
Row Owners are on both Owners and Managers so they can only download data for their Restaurant.

Each Restaurant has Food items stored in a Glide Food Table.
Each Food has an Owner and can have a Manager when added.
Row Owners are on both Owners and Managers so they can only download data for Food related to their Restaurant.

However, there is the possibility of a Food item being added when a Manager did not exist yet, thus the Manager column is blank. Later on when a Manager is added, they cannot see any food items previously added.

Any way to give Managers access to these previously added items without having to manually edit each Food item and add the Manager’s email?

Nothing security wise would be at risk if I did not have Row Owners on Food items, it was more to prevent unnecessary data from being downloaded in order to speed up the user experience.

I assume in that case, the owner already existed when the food item was added? So the row is at least owned by the owner before a manager is added?

Since security is not an issue, you could rely on relations only, but understandable that you are trying to reduce the amount of downloaded data.

Another thought is to rely on Roles. Assign the same role to the owner and manager (maybe restaurant name or ID). But then everyone is considered a Private user.

One last thought if you use an external database, such as Google Sheets, is to use an array formula in the google sheet to add the appropriate owner and manager to each food item. Then assign Row owners to both of those array formula columns. If you are only using glide tables, then you would probably have to do something with the API to retrieve the rows, figure out the owner and manager, then update the rows. I guess in this case I would probably go the route of using a google sheet and array formulas.

2 Likes

Thanks Jeff

Yes Owners always exist, but managers might or might not. I am also not using Private users nor Google Sheets, so sounds like I might be out of luck.

Is there anyway to make Row Owners a Restaurant name so anybody related to that Restaurant can access that data?

Only if you use Role functionality. With roles you could use a restaurant name or ID.

Create a restaurant column in the user table and fill it with the restaurant name or ID. Then change the user profile configuration Role setting to point to that restaurant column in the user table. Then make the Restaurant the row owner column in the Food table.

Otherwise, you are stuck with emails only for row owners. In that case, maybe you could use a shared email for both the owner and manager.

3 Likes

Question, if I am displaying data through a relation, would that reduce the amount of data downloaded to a users device as they would only be seeing related items? Or would all rows be downloaded from the related table? That could help resolve the speed issue without having Row Owners if thats the case.

Or is it that when a user opens the App, it downloads all Tables and Data at once that do not have Row Owners applied?

All rows that the user has access to in all tables will be downloaded.

(assuming of course, that those rows are referenced by the App)

3 Likes

Yeah, relations are computed columns. As with all computed columns, they are computed directly on the user device, so the data needs to be there before they compute.

3 Likes