Row owner - I don't get it

I need to get 50 different people to see the content of an app - and only allow download of information to those people.

If I have public app (email login) and I want to use row owners to restrict peoples access to rows (and download of the rows) then I will need to create an array column (based on a google sheet) on all tables that I want to restrict access to?

Users sheet:

Name User (row owner) User1 User2 User3
my email a@email.com,b@email.com,c@email.com a@email.com b@email.com c@email.com

Data sheet

Data User (row owner) User1 User2 User3
my private data a@email.com,b@email.com,c@email.com a@email.com b@email.com c@email.com

So is that the way to do it?

And - that is why you would like be able to use roles - and therefore buy a private pro plan?

Yes that is all correct. Roles are only available in Private Pro apps.

An array column auto generated by glide from multiple google sheet columns would be the easiest. Then you should be able to apply row owners to the combined array column. Otherwise, without an array, you can apply row owners to multiple columns.

2 Likes

Your approach is what I currently use — I have 17 row owners columns. I do it this way because I don’t have a need for a Private Pro app beyond the roles feature (which, for me, isn’t enough to move to Private Pro — yet!).

2 Likes

@Jeff_Hager so what I have shown is the way to go?

The second paragraph I didn’t understand - was there an easier option?

I’m not sure what you are showing with the User(Row Owner) column. Is that a template or just a demonstration of what an array column would look like? If you are creating that first column yourself, that is not the correct way to approach it. Sequentially numbering columns in a google sheet will automatically create an array column in Glide. When you have that auto generated array column, then you only need to apply row owners to one column. If you don’t have the auto generated array column, then glide will still allow you to apply row owners to each individual user email column.

@Jeff_Hager the User (row owners) is the column that Glide create automatically - and will be called User. I just put row owners on the User column. I was just wondering whether there was another clever way to do it.

Got it. No, I think what you have is your best option.

Thanks for advice :+1:

1 Like

Something to keep in mind with your approach — since Row Owners doesn’t work on computed columns, new rows need to be manually given those email values — I do this through an action that sets the column values. It would be great if a Template column could be assigned as a Row Owner, but that’s not possible (likely due to the fact it could be exploited as a way around a Private Pro plan somehow — understandable!).

I’m also talking about a Glide Table-based app — I suppose an ARRAYFORMULA in sheets is taking care of yours now that I look back and see you’re using Sheets!

@shchc so you put row owners on all your 17 columns, right?
I used google sheets in order to use array column and thereby only setting row owners on one column

Exactly — since I use Glide Tables, I have to manually assign each column as a Row Owner.

The reason you can’t used computed columns for Row Owners is because computed columns are computed on the device. To compute, you would have to first download all of the data. At that point it defeats the purpose of row owners in the first place, which is to prevent the download of data that you don’t have ownership of. A google sheet array is actually quite a bit different from any other glide array, such as lookups or split text columns. So exploitation is not quite the reason it’s not allowed. It’s more of a technical issue. Google sheet base arrays are built on Glide’s server, rather than on the user’s device.

Roles are obviously an up-sale, so I don’t think there would be any other alternative way to exploit row owners due to technical reasons.

5 Likes

Very good point!

1 Like