My problem is that I have an app that serves 2 groups of people (at our canoe club). One group only uses a subset of the functionality of the app. The app is public. And the only other difference is a name list for each group. I currently handle this situation by duplicating the app and then each group has their own link. This is messy because if I make a change in one app I have to manually do it in another. (A problem with any system that tightly couples data and “code”, which Glide does).
So…
What I want to do is automatically configure the app to serve each group by passing something in via the web address or using different web addresses. I could use a couple of buttons at the start to get the person to choose but that is not what the manager of the canoe club wants.
Related to this is that I need to be able to change which tabs show up at the bottom and in the menu list. That does not seem to be able to be done “programatically”.
I get this functionality might get around the app limit on plans - but if separate web addresses were used that could work by charging by web addresses configured on an app.
How are other people handling this situation. It must occur for anyone trying to commercialize an app for use by more than one identity. Maybe I missed something with attaching data tables.
If user’s a signing into the app, you should be able to place something in the user table to identify the group each user belongs to. You can use values from the user profile anywhere in your app to control tab visibility, component visibility, filters, different conditions in the tables, etc.
There are ways to do it through the url with url query parameters, but it’s not fool proof (can be altered by the user), and requires a little bit of setup to store those values so they stick when they navigate around the app.
1 Like
Public app so no sign-ins
Okay. So lets say one of my pages url is:
https://sam-was-here.glide.page/dl/d0a5f4
Does the portion at the end, in this case, dl/d0a5f4 ever change? What I am thinking is I can give them links that include the start page and have separate start pages. Which would then somehow configure the name list they use as a user specific column.
Generally no, but if you start making major changes in your app and start moving stuff around, then it can change. But why would you share that much of the url as opposed to just the root domain?
Again, why not utilize the user profile to control this stuff instead of the url? Are users not signing into the app?
No sign ins. Canoe club can not afford the $5.00 per user per month. They have had security issues explained to them
OK, then in that case you will have no control over tab visibility since it’s only based on values from a user’s row in the user profile table.
This post shows how to do it. Basically you will use the Get Part Of Url column to retrieve the query parameters. It’s recommended that you have some sort of action to move those values to user specific columns so that they stick while navigating throughout the app. You will need single value columns in all of your other tables to retrieve those user specific values so you can use them for various visibility conditions and filters.
Also just want to note that the Maker plan allows for unlimited personal users.
1 Like
Thank you. Will take a look.
I understood that about the Maker plan but then I have to force all the members to get something like a gmail account. Not going to happen, 20-30% of them cannot even install the shortcut to the app.
1 Like
Tried this out. It is pretty cool. One caveat …
If I just use the published address say
https://sam-was-here.glide.page/?name=gary
It redirects to, say
https://sam-was-here.glide.page/dl/d0a5f4
And the parameter gets lost. So one has to use
https://sam-was-here.glide.page/dl/d0a5f4?name=gary
There is no real good way to test this in the builder that I can see. I guess it would be easy enough to use an “if then” column to either choose the passed in parameter or a set parameter to be able to test though.
No big deal just letting you know. And for anyone that wants to try this. Here is the setup in the database.
Use this
And then fill this out to get the name
The column will get the name parameter in it. If you need a space in the name
https://sam-was-here.glide.page/dl/d0a5f4?name=gary%20b
Will give you “gary b”
Playing with @Darren_Murphy’s example, I really don’t think the full url is necessary. Sure you lose the parameters when Glide does the redirect, but I think the values are retained in the Get Part of Url column. That’s why I mentioned that it’s pretty vulnerable and you need a process to save those values into user specific columns. This is more or less a workaround and Glide does nothing to guarantee that query parameters are retained.
2 Likes
On the start up, I did some poor testing there, sorry. But now I realize what you mean by the processing. As soon as you go to another screen it will get overwritten - so I have to grab it and then keep it.
1 Like
Exactly. It would be awesome if Glide captured the query parameters and pass them along when navigating throughout the app, but unfortunately they don’t, so we are kind of stuck with these workarounds.
The only really suggestion I would have is to have some sort of Welcome screen with a button to continue. That button would write the parameters to user specific columns and open up the rest of the app. ia visibility conditions. Unfortunately, you would have to do away with tabs to make it work seamlessly.
1 Like
There is one way to do it. Inside of a form container set the default value of a text entry component with get part of url to user specific column. Then take text entry component out of the form container and finally delete form container.
Just make sure source of form container is same as screen.
Its a nice trick
1 Like