Hi @jools ,
To use specifically Adalo you can do the following if fully automated, but of course, you can do steps,1,2 if codes are to be allocated manually.
Use the Random function with custom action to create a code in the User collection. Then use another action to send the code to user via Email or SMS.
User enters the code in an input text, and you use action to check if the number is validated, if so next action, if not retrieves error.
Add users levels when to the user when they enter a specific code. Ex, code X gives X level, code Y gives Y level. Register that in a user specific field.
This can take two steps, you can use the level “XXX” to redirect to certain pages, or when a user tries to enter a certain page, you can use the “when user enters screen”, if user level does not match, you can redirect to a screen “Your level does not allow” and with a countdown action redirect back for example, if code is the same, user enters screen.
In this case, 2 ways, you have a specific level, if user is X but has level Y, then there is no match, so cannot be shareable. Other option is to register a special id like “userid+code” and then also compare that when going a certain screen/part of the app
For this, then in the beginning of the checks, I would make app check level first, if it already registered as a certain level, it ignores the code, so the app is fully unlocked.
The original developer for this app issued the owner of the app 1000 pass codes to distribute as needed to her students.