Row Owners & Filter & Visibility

I need help understanding use of row owner & filter & visibility. I’ve read many great support articles yet I am still missing something.

I am using row owner to filter for one user group yet I want a different user group, ‘Admin’, to see all rows. I am struggling with the ‘Admin’, ‘see all rows’ portion. I thought I could do this by creating a tab with visibility for Admin only and then use the source sheet that would show ALL rows, but it appears the only rows showing are the ones the ‘Admin’ or logged in user is the row owner for.


Details-
I am rolling out a ‘time sheet’ app (already subscribed as Pro app, sign-in method = ‘Public’) in our construction company. There are 10 field managers that submit hours worked for each field employee that is working on their crew for the week. We have 70 field employees, so an average 350 rows are added to the ‘Entry’ sheet each week (70 employees * 5 days).

The information is not sensitive, each row has employee name, hours worked and some public job data.

Each manager can review & edit their entries through the week (adjust or correct hours or job data). They review and edit via tabs that filter rows based on (1) ‘row owner is signed-in user’ and (2) ‘Locked’ is not TRUE (boolean). At the end of the work week each field manager emails the office that they’ve completed the time for their crew. Then the office ‘Administrator’ role ‘Locks’ the row(s), resulting in these rows being hidden from the field manager for further editing.

The ‘Locked’ rows also become the basis for ‘google data studio’ reports.

The wall I’ve hit is how to grant ‘Administrator’ access to all rows? This will allow them to see what entries are being made through the week and also ‘lock’ the rows.

I thought I could do this by creating a tab with Visibility set to ‘show tab when role is admin’ and then having the source = ‘Entry’ sheet. I thought that this would show ALL rows, but it does not. It appears that the ‘Entry’ sheet is still being filtered by ‘row owner’. Since the ‘Admin’ office row is not an owner on all rows they don’t see any rows.

Aside - amazing community support, IMHO Glide success is 90% product and 60% support.

Hello! We created Role-based permission for exactly this use case: https://docs.glideapps.com/all/reference/security-and-per-user-data/user-profiles/roles

It is available on Private app plans.

You can also make admin@mycompany.com an owner of every row using an array of row owners if you do not want to use Roles.

Thank you David.

My app is not Private. Many attempts and failures, perhaps not possible.

Desired is behaviour is to have the ‘row owner’ column dynamically update with ‘logged in user’ email and ‘admin email addresses’. Any resulting ‘joined column’ of the email addresses appears to not allow for it to be a row owner column.

Alt is to change the app to Private I guess

I think that if you insert your admin emails into the same sheet as your Owner 1 column (as opposed to pulling it in as a single value), you could create an array that could be used as the row owner. Just rename the admin email columns to Owner 2, Owner 3, etc.

I think that would work too; however I do not think I can insert the emails into my ‘Entry’ sheet. User add rows via a form and all the row cells need to be empty. So what I need is to have the added email addresses to be added dynamically.

Once user adds a row then the row owner value = user_email + admin_email_1 + admin_email_2.

You can add the single value to the sheet where you’re creating the form. Then, take that as a special value.

This will allow you to have both email addresses one next to the other.

Make sure:

  1. Your log sheet is on GSheets. Last time I checked, Glide wasn’t able to create array columns from Glide Tables. IDK if it has changed.
  2. You need to have something like email 1 email 2. Be very careful with spelling.

The make that array column a Row Owner column.

You can use an arrayformula in the sheet to autopopulate the other ‘Owner’ columns in the sheet if you have set up an array of Owner columns. I think for row owners to work, the email value has to physically be on the google sheet.

Yes, ARRAYFORMULAs in GSheets is what would be needed to accomplish this when new rows are added.

got it, thank you, so I am not pursuing, =arrayformula(if(isblank("",logged_in_user_email&'column_with_other_emails))), trying it without success so far, but I’ll keep at it, many thanks Jeff & shchc.

Set up multiple columns for each individual that needs access. So “Email 1” column is the logged in user (no ARRAYFORMULA; “Email 2” is the arrayformula that inserts the Admin email in each non-empty row.

Something like:
={“Email 2”; ARRAYFORMULA(IF(A2:A="","","admin@email.com"))}

Then in Glide, those two columns should get combined into an array that can be set as the Row Owner.

2 Likes

right on! thank you, implemented and ‘in production’ many thanks

1 Like

thank you Santiago, hope it’s a good week for you

1 Like

Regarding security, should we apply Row Owners to tabs that share relations?

My initial setup (using multiple row owners) is filtering as expected.

Short answer for me is if you want those rows to be seen by anyone other than the email listed in that row, then it’s a no.

1 Like

Thank you @ThinhDinh. I went ahead and applied the same row owner scheme to other tabs that share relations.

If this is unnecessary I’d prefer to save the columns.

1 Like

Apply row owners to every table where you want per-user privacy. You don’t need to think about relations.

Users will download all rows they have access to when they use your app.

5 Likes

Looking for some advice on role based row owners.

I’ve been using email as a method of row owners and it’s working great. I added roles to the array column and everything looks correct but the app returns blank screen when previewing roles. (Still working for email based row owners though)

Am I missing something?

My UserAccess tab with AccessLevel column is working for other role based visibility filters in-app.

Is the Role column defined in the User Profiles sheet setting?

1 Like

Hmmm I’m gonna guess no becuase I don’t even know where User Profiles is :stuck_out_tongue_winking_eye:

https://docs.glideapps.com/all/reference/security-and-per-user-data/user-profiles#setting-the-user-profiles-table

But, Roles are only available if you have a paid private app. If it’s pro or free, then you’re out of luck.
You can still implement a “quasi-role”, but it won’t be secure, and row owners will almost certainly trip it up - which is probably what you are seeing.

1 Like