# 🛡️Roles and Row Owners DEMYSTIFIED

**URL:** <https://community.glideapps.com/t/roles-and-row-owners-demystified/22956>\
**Category:** Community Resources\
**Tags:** tutorial\
**Created:** [February 18, 2021, 1:37am UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956 "2021-02-18T01:37:01Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [February 18, 2021, 1:37am UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/1 "2021-02-18T01:37:01Z")

</div>

# 👋 Hey all,

I meant to share this earlier today—I spent some time last night playing around with Row Owners and Roles (two Glide features I don’t often get the chance to use) and ended up learning quite a bit.

The result? Another tutorial video for you all about how and when to use Row Owners and Roles, their benefits and limitations. Enjoy!

[![](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/c/c/cc5bc22c1cf4493a04d0a5b9c9d427898fe6bf68.jpeg "Glide: Row Owners and Roles DEMYSTIFIED") ](https://www.youtube.com/watch?v=RmMLZINOwjQ)

Wondering WHY you can’t assign row owners to a computed column (If then else, lookup, template, etc.)? [🛡️Roles and Row Owners DEMYSTIFIED - #9 by Jeff\_Hager](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/9)

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [February 18, 2021, 2:24am UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/2 "2021-02-18T02:24:32Z")

</div>

I wish you wouldn’t post these at the start of my working day. Now I have to wait 10-12 hours before I can watch this… grrr!

Very inconsiderate!!

🤣 🤣 🤣 🤣

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [February 18, 2021, 2:31am UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/3 "2021-02-18T02:31:10Z")

</div>

Now this will be my reference thread everytime people ask about row owners or roles. Thanks as always Bob!

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [February 18, 2021, 1:44pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/4 "2021-02-18T13:44:45Z")

</div>

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 😁

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [February 18, 2021, 1:58pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/5 "2021-02-18T13:58:33Z")

</div>

> [@Darren\_Murphy](#):
>
> 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.

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!

---

<div class="post-metadata">

**Author:** ![Gerard\_Fernandez](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/gerard_fernandez/32/1183_2.png) [@Gerard\_Fernandez](https://community.glideapps.com/u/Gerard_Fernandez)\
**Post date:** [February 18, 2021, 2:04pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/6 "2021-02-18T14:04:50Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [February 18, 2021, 2:07pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/7 "2021-02-18T14:07:13Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![erwblo](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/erwblo/32/75_2.png) [@erwblo](https://community.glideapps.com/u/erwblo)\
**Post date:** [February 18, 2021, 2:48pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/8 "2021-02-18T14:48:50Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![Jeff\_Hager](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/jeff_hager/32/43_2.png) [@Jeff\_Hager](https://community.glideapps.com/u/Jeff_Hager)\
**Post date:** [February 18, 2021, 3:08pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/9 "2021-02-18T15:08:37Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [February 18, 2021, 3:10pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/10 "2021-02-18T15:10:24Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [February 18, 2021, 3:13pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/11 "2021-02-18T15:13:09Z")

</div>

> [@Jeff\_Hager](#):
>
> 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.

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.

---

<div class="post-metadata">

**Author:** ![Jeff\_Hager](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/jeff_hager/32/43_2.png) [@Jeff\_Hager](https://community.glideapps.com/u/Jeff_Hager)\
**Post date:** [February 18, 2021, 3:14pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/12 "2021-02-18T15:14:25Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [February 18, 2021, 3:17pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/13 "2021-02-18T15:17:24Z")

</div>

> [@Jeff\_Hager](#):
>
> 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.

This is correct.

---

<div class="post-metadata">

**Author:** ![Jeff\_Hager](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/jeff_hager/32/43_2.png) [@Jeff\_Hager](https://community.glideapps.com/u/Jeff_Hager)\
**Post date:** [February 18, 2021, 3:18pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/14 "2021-02-18T15:18:43Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![George\_B](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/george_b/32/534_2.png) [@George\_B](https://community.glideapps.com/u/George_B)\
**Post date:** [February 20, 2021, 6:42pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/15 "2021-02-20T18:42:14Z")

</div>

Great tutorial @Robert_Petitto !

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [February 20, 2021, 8:03pm UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/16 "2021-02-20T20:03:39Z")

</div>

Thanks George!

---

<div class="post-metadata">

**Author:** ![Gregory](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/gregory/32/21180_2.png) [@Gregory](https://community.glideapps.com/u/Gregory)\
**Post date:** [February 25, 2021, 9:00am UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/17 "2021-02-25T09:00:30Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![christoph](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/christoph/32/22794_2.png) [@christoph](https://community.glideapps.com/u/christoph)\
**Post date:** [March 8, 2021, 10:23am UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/18 "2021-03-08T10:23:00Z")

</div>

@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.

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [March 9, 2021, 12:08am UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/19 "2021-03-09T00:08:36Z")

</div>

> [@christoph](#):
>
> Could there be a speed problem if one has many many rows and columns in those sheets?

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.

---

<div class="post-metadata">

**Author:** ![M\_T\_Amjad](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/m_t_amjad/32/530_2.png) [@M\_T\_Amjad](https://community.glideapps.com/u/M_T_Amjad)\
**Post date:** [May 15, 2021, 10:43am UTC](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956/20 "2021-05-15T10:43:52Z")

</div>

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?

[Next page](https://community.glideapps.com/t/roles-and-row-owners-demystified/22956.md?page=2)
