# Row owners - quick security question

**URL:** https://community.glideapps.com/t/row-owners-quick-security-question/75190
**Category:** Ask for Help
**Created:** [July 26, 2024, 4:27pm UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190 "2024-07-26T16:27:14Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![Andrew\_Davies](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/andrew_davies/32/41838_2.png) [@Andrew\_Davies](https://community.glideapps.com/u/Andrew_Davies)
#### Post date: [July 26, 2024, 4:27pm UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190/1 "2024-07-26T16:27:14Z")

</div>

Hi

I understand using Row Owners correctly means we can avoid downloading a lot of rows to a users browser - which inherently means it is very secure - but if I have a collection that has its source set to a relation from that table - can I assume that is equally secure?

Ie - if I had a Projects table with row owners applied - so I can control which projects are visible to which users - and a relation from that table to another table without row owners applied - and lots of rows pertaining to every single project - is it just as secure?

Thanks in advance  
Andrew

---

<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: [July 26, 2024, 4:45pm UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190/2 "2024-07-26T16:45:02Z")

</div>

Relation or not, if row owners are applied to a table, only the owned rows will be downloaded. If row owner are not applied to a table, then assume all rows will be downloaded. The relation happens on the user’s device after data has been downloaded and will check against the data that’s available.

> [@Andrew\_Davies](#):
>
> and a relation from that table to another table without row owners applied

In this scenario, since row owners are not applied to the related table, all data in that table will be downloaded, regardless if it’s visible in the front end of the app not. So, no, the data in that related table is not secure as all of the data in that table is downloaded to every user’s device.

---

<div class="post-metadata">

### Author: ![Andrew\_Davies](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/andrew_davies/32/41838_2.png) [@Andrew\_Davies](https://community.glideapps.com/u/Andrew_Davies)
#### Post date: [July 28, 2024, 10:32am UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190/3 "2024-07-28T10:32:27Z")

</div>

Thanks Jeff

Couple more quick question if I may

I’d like to have super admin, admin and user roles. Super admin (me) should see ALL users in the user table, group admins and users can only see users within their department. I can do the group admin and user roles, but can’t get the super user role working. Should a super user be managing users from within the glide builder? Or do I need to ditch row owners in this scenario? (I will then have a projects table with row owners applied to a “group ID” foreign key so that only the relevant projects are downloaded)

I assume it’s best practice to use the Row ID for departments. Any issue with this you know of? I’ve tested it and it seems ok. Only slight drawback is the group is displayed as a row Id in the builder as you’d expect.

Finally - and this is for my own sanity more than anything - if you’re not using Roles (which I am and I have access to roles on my plan), in the users table, row owners can only be applied to the email column. Is that right? Seems that email column gets some special treatment behind the scenes? Applying row owners to a non email column, without roles enabled, just removes all rows from view regardless.

Just seem to find this all a bit of a head scratcher

Thanks in advance as always.

Andrew

---

<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: [July 28, 2024, 10:48am UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190/4 "2024-07-28T10:48:01Z")

</div>

> [@Andrew\_Davies](#):
>
> I can do the group admin and user roles, but can’t get the super user role working.

Have a look at my second example in the below reply. I think it covers basically the same use case as you are describing.

> [@Row owners and roles in the same time?](https://community.glideapps.com/t/row-owners-and-roles-in-the-same-time/45691/5):
>
> No, the users being managed wouldn’t have any role at all. They would just have their own email address as an owner row, which means they would only see their own data. Only the Managers would be given the Manager role, and as a Manager would be set as a Row Owner for every user, they would have access to all data. This might be easier to explain with a picture. Consider the following example: In the example above, the first 3 users are Managers. Each…

> [@Andrew\_Davies](#):
>
> I assume it’s best practice to use the Row ID for departments. Any issue with this you know of? I’ve tested it and it seems ok. Only slight drawback is the group is displayed as a row Id in the builder as you’d expect.

Any text value is fine, as long as it is unique per department.

> [@Andrew\_Davies](#):
>
> Finally - and this is for my own sanity more than anything - if you’re not using Roles (which I am and I have access to roles on my plan), in the users table, row owners can only be applied to the email column. Is that right?

Row Owners can be applied to any email or non-computed text column in any table.  
Row Owners applied to email columns will always work.  
Row Owners applied to text columns will only work if you’re using Roles and at least one user has a Role that corresponds to the text value. For example, if you’re not using Roles and you create a text column, fill it with the word “Admin” and then apply Row Owners to it - then no user will see any rows in that table - unless you also have an email row owner column in the same table.

---

<div class="post-metadata">

### Author: ![Andrew\_Davies](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/andrew_davies/32/41838_2.png) [@Andrew\_Davies](https://community.glideapps.com/u/Andrew_Davies)
#### Post date: [July 28, 2024, 2:53pm UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190/6 "2024-07-28T14:53:00Z")

</div>

Thanks so much Darren and Jeff (and Bob’s videos!)

I’m sorted now. A bit of flaky holiday wifi didn’t help.

I find it a little counter intuitive, but I’ve basically got a role with the group ID they belong to for each user. Then another column also in the users table, with row owners applied, with the same group ID. I want people in the same group to be able to see each others email etc so that works for me.

Screenshots attached which works explain better.

Need to test it a little more but think I’m good. Thanks again.

Andrew

 ![IMG_0005](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/a/c/acab75d70b874e5170b48dad220acf8110bdacce.jpeg)  
 ![IMG_0006](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/0/4/04975fedf3c712bd698eb83607efdd54523b39e9.jpeg)  
 ![IMG_0007](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/c/7/c7665efcf35e49c9cc5675bb50e53e6b6a64e0cf.jpeg)

---

<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: [July 29, 2024, 2:37am UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190/7 "2024-07-29T02:37:52Z")

</div>

Yep, what you have there is correct.  
Personally, I’d probably use the Group names as Roles, but using the Group RowID is also fine. It does have the advantage that you can rename groups in the future without breaking anything. If you need the names for display purposes you can always use a relation + lookup to the groups table.

---

<div class="post-metadata">

### Author: ![Andrew\_Davies](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/andrew_davies/32/41838_2.png) [@Andrew\_Davies](https://community.glideapps.com/u/Andrew_Davies)
#### Post date: [July 29, 2024, 4:28am UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190/8 "2024-07-29T04:28:32Z")

</div>

Thanks Darren

Planning on doing exactly that (using group IDs) with relations etc.

This is my big idea I’ve been planning / thinking about for a while and want it to be bullet proof.

Thanks again for all your help

Andrew

---

<div class="post-metadata">

### Author: ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/system/32/53398_2.png) [@system](https://community.glideapps.com/u/system)
#### Post date: [August 5, 2024, 4:28am UTC](https://community.glideapps.com/t/row-owners-quick-security-question/75190/9 "2024-08-05T04:28:45Z")

</div>

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
