Adding Row ID as Role From another Table?

Morning,
I’m new to Glideapps, but enjoying it. However, I’ve struggled for two days to figure out how to create a Role relationship between two tables. In the User table, I have a column called Company ID. This is the role for users so all users from one company can see the same information. The company table has a row ID, however, I cannot for the life of me figure out how to use an automation after the company is created to add the new company id to the User table as the Role.


Screenshot 2023-06-19 at 7.31.53 AM
What am I missing here?
Thanks for your help.

A user can only assign a role that he himself possesses. Adding dynamic roles is only possible with the use of a 3rd party tool like Make. If your plan permits you could use the Glide API to write the role back to Glide.

2 Likes

Ah. I see. That’s a big bummer. I guess I won’t use Roles. Instead, I’ll have to figure out how to add row owners to every row. That’s also a real mess… How can I add multiple email addresses to any row? I’m not sure how to do that either.
Thanks a ton for the quick answer, Eric. That clears up my struggles.

1 Like

If I understand correctly to add multiple email addresses to the same row it’s as simple as adding more columns to hold those emails. Then somewhere in your flow you need to set the values to those columns.

This only works well if there is a max limit to the number of emails that need access to any given row. Otherwise it won’t scale.

FYI you can make multiple columns in the same table row owners.

Just jumping in here, I think your original idea is the best approach. It requires a little extra work to setup with the Make/API configuration, but it is much more scalable and the extra work will pay dividends in the long term. Just one thing you should be aware of is there is an additional cost consideration, because every user that is assigned a role will be counted as a private user. That may or may not be an issue, but is something you should be aware of.

2 Likes

Thanks, So much! I’ll have to call the API whenever anything related to the Company ID is created. That seems like a heavy lift long term. Even after watching many videos and reading all the documentation, I’m so confused about Row Owners and Roles. The latency and return from the API also requires that I create a bunch of loading screens while everything is populated. It also feels like it’s a point of failure for the experience. I’m trying to build as much as possible inside Glideapps and Glide tables, but I feel like the use case I’m exploring isn’t future-proof. I don’t know exactly where to turn to figure out the setup for everything before I’m too deep and the entire app needs a rebuild.

Not exactly. You only need to use Make+Glide API when setting a NEW role to the users sheet. Once a user has an established role you can use it in any part of your app.

There’s almost no latency. It’s about 3-5 seconds and you’ll only use it when creating a new role…

1 Like

Oh, I see, Eric. So, for example: If a new user creates a new company, I only need to create that role once… then when another user is added for that company, I won’t need to call the API to add that user to a role? Is that correct? I’ll be able to automatically insert it?
I think I understand that, now.

Generally speaking when you assign a role to the users sheet you will want to use the Make+API combo.

For the rest of your app to work you won’t need the API whatsoever.

2 Likes

I see! Thank you for all the help. I’ll give it a shot.

1 Like

Eric, I now, can’t pass the CompanyID from the Users table to the API? It’s a lookup from the company table and it doesn’t send it to Make. I don’t understand why I can just create a relationship between the User’s table and the Company table and be finished with the Roles. Is there anyone who can talk me through this? I’m pretty frustrated. Sorry.

It needs to be a lookup via a SINGLE relation or a single value column to work in Make. Do you have any screenshots of your setup?

This is because in order to form a relation we have to download the necessary data first… at this point it’s too late to secure anything.

If we want the data to be secured that process needs to happen on the server level… before the user downloads any data… otherwise it’s just a filter.

2 Likes

Eric, Thanks again for your help. I do have a lookup from the company table that is a single value column.
Screenshot 2023-06-19 at 9.41.55 AM
Then, I have a company ID column that is the lookup for the Company ID for that company.


Here’s the trigger… But when the webhook is sent the value of the company id isn’t sent.
Screenshot 2023-06-19 at 9.43.37 AM

What am I missing? So sorry!

1 Like

I might be overlooking something so maybe a fresh pair of eyes could help but have you tried “Redetermine data structure” on the webhook module in Make?

Yeah, I tried that multiple times and still nothing is coming through for the Company ID

I would try checking the value of that lookup column immediately before triggering the webhook.
Also, try adding a text component to the same screen with that value - just to make sure it isn’t empty.

2 Likes

Do you have any row owners in Table G-Company that would prevent the data from coming through? If the CompanyID is the only row owner in G-Company then that wouldn’t work.

1 Like

Eric! Holy smokes! That’s it! I had the row owner as the Company ID in the Company table.
Let me see if I can get this now.
Thank you! Thank you!
Thanks, Darren for the help. I added a check to make sure the column is there. :slight_smile:

2 Likes

Glad we could help! If you want the CompanyID to be a row owner in that table just let us know and we’ll cook up something… if not you should be on your way :rocket:

1 Like

Thanks again for your help. I’m STILL struggling to make this work. I have a User table that includes the Company Name. The company name is set to ROLE in the USER PROFILE. However, when I look at a table called GOALS where the ROLE is set as the same as the Company name column I can’t see the data.
I’m beyond frustrated. Is there a simple resource that explains how this works? I’ve watched countless videos and read all the documentation and I seem to have followed all the instructions. I’m baffled.