🛡️Roles and Row Owners DEMYSTIFIED

Nice job!

Minor nitpick - slight slip of the tongue at 3:22 - “You can only make columns that live in your Google Sheet Row Owners”

I think what you meant to say there is you can only use basic columns as Row Owners (ie. not computed columns). Those columns can be in a Google Sheet or in a Glide Table.

For part 2, you need to cover using multiple columns for Row Owners and/or Roles :grin:

1 Like

That’s exactly what I meant. When you create a Basic Column—does it not live in your Google Sheet though? (I did reference that it can be a basic column in a Glide table).

I had planned on showing how you can create an arrayformula to populate an admin email for multiple row owner columns, but thought it best to keep it simple…def a part 2!

Thanks for the feedback!

3 Likes

User profiles sheets need also to set email as row owners or it is not necessary? Thanks

It’s not NECESSARY, but it’s good practice for data security. Again, setting “row owners” is very unforgiving. The moment you apply a row owners to a user profile sheet, no other user can view another’s information. So if you want to create any sort of sense of community within your app where users are viewing other users profiles etc., you would need to create a second sheet.

3 Likes

I assumed that with roles you could make certain information only visible to certain people. So give groups different rights. ‘This article should only be visible to management’. Is that the case too?

Great information. I also will be referring people to this post…probably often.

I just want to add the reason WHY row owners can only be applied to basic columns in a google sheet or glide table. I think what many people don’t realize is that any computed columns are actually computed on a user’s device. It may seem like it’s done on the glide server, but it’s not. This includes relations, lookups, template, math, etc. Anything that’s not a basic column.

Because of that, for example, the reason you can’t use a lookup as a row owner, is because all of the data needs to be downloaded to the user’s device before the lookup function can run. At that point you have already defeated the purpose of row owners, which is to secure data by preventing it from being downloaded to a user’s device in the first place.

Only basic column data is synced between the glide servers and each user device. All of the calculations and computed column values are only determined on the user device.

7 Likes

Correct. If you have a sheet called “Documents”, you could create a column called Role and place the approp role within that sheet and set it as a row owner.

2 Likes

I’d never really thought about why you can’t use computed columns, but it’s so obvious when you lay it out like that.

3 Likes

Yes roles work and function exactly the same as row owners, except instead of using an email, you can use a group name which has to match a group name defined in a Role column in the user profile sheet. Just like how the signed in user’s email has to match the email in a sheet column designated as a row owner column…a role in a sheet column designated as a row owner column will need to match to role column in the user profile sheet for the signed in user.

I believe you can intermix emails and roles in the same column and glide will check against the signed in user’s email and role from the user profile sheet.

2 Likes

This is correct.

3 Likes

That’s why everything computes so fast. It doesn’t need to send everything to the server first and wait for new calculations before returning the results to the app. It’s all done in app. Of course, basic column data is still synchronized, but speed isn’t such a high priority.

4 Likes

Great tutorial @Robert_Petitto !

4 Likes

Thanks George!

If you still want/need to lookup row owners, use the VLOOKUP-function in google sheets.

@Jeff_Hager thank you for this insight what data is loaded to the device.

I thought I can limit data traffic by filtering the data through a relation which is using a template column on both sheets.

But obviously all rows and columns from both sheets are loaded to the device if not secured separately.

Could there be a speed problem if one has many many rows and columns in those sheets?

Thanks.

Yes, if those rows and columns include data then the user’s device has to load that package of data. It will increase loading time.

2 Likes

Please help
If you have two roles i.e Admin and User
If you have 100 users.
100 users data will be downloaded in to each user device than filter specific user data?

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