Background
Types of Sign UP flows
Different apps will have different signup flows. Here are some few examples:
Signup > Login > Home screen : In this flow after signup the user will be redirected back to the login page to log in before using the app.
Signup > Home screen - Here after signup the user is automatically logged in.
Signup -> Verify Email > Login > Home screen - After signup the user will be sent an email with a link to click to verify their email address. After the verification the user will return to the login page to log into the app.
Signup -> Verify Phone number > Enter phone code > [ Login > ] Home screen : In this flow as part of the signup process the user will enter their phone number which a code will be sent. The user will need to enter the phone code before they can proceed. In this flow after the phone code verification the user may be logged in automatically or will be sent to the login screen.
There may be several variations of this or other different flows. But for the purpose of this tutorial we will look at the first flow whereby after signup the user will be directed back to the login screen to log in.
Persisting login session
When a user logs into your app, you may want to keep them logged in so that even when they close the app or restarts their phone, they can still get into the app without logging in again. Such session may persist for a very long time until the user explicitly logs out, re-install the app or clears the app cache and data.
In order to persist such login session you need to be able to store some info on the user's phone that on app launch you can use to determine if the user should be sent straight into the app or to the login screen.
The ability to write to local storage is one of the features that currently gives AppGyver an urge of competitive tools. A lot of the no/low-code tools don't have this feature making it hard to persist login sessions. Note that there are some workarounds to persist login sessions if a tool doesn't support local storage. You can store such information on a server. But its simple and the app launch is faster if you're using local storage.
Page structure
Below is a screen transition diagram showing the pages and transitions between them.
In this tutorial will have 3 pages, a LOGIN, SIGNUP and HOME pages.
The LOGIN page will be set as the Initial view of the app. This means whenever the app is launched this will be the first page to visit. On this page the will be a button for the user to go to the SIGNUP page if they're a new user. Clicking the back button on the LOGIN page will quite the app.
On the SIGNUP page a user can click on a button to go back to the LOGIN page if they already have an account. Clicking the back button will also return the user the to LOGIN page.
A user will be directed to the HOME page if they're already logged in or after logging in from the LOGIN page.
Data structures
The app will have the follow data structures
Storage
persistedUser
- This will be an object with the fieldstoken
(text),id
(text) andexpires
,(number) to match the login endpoint created in bubble. Whenever a log in is successful the app will store the corresponding response values into this object on the device.
App Variables
authUser
- An object with the fieldstoken
,id
,expires
. This will just be a copy of thepersistedUser
device variable. This variable is used so that instead of always going to the device storage to retrieve the token and user id we can simply reference this object.currentUser
- This is an object that stores the retrieved User from our backend database. In this tutorial we only have the fieldsemail
andname
plus theid
retrieved during the log in.
Page Variables
LOGIN page -
email
andpassword
, bound to the input fields.SIGNUP page -
name
,email
andpassword
, bound to the input fields
Create App Variables
We can now create our app variables like below. Go to any page in your app and click on VARIABLES. Under the APP VARIABLES create to objects variables, authUser
and currentUser
as shown below.
Flow Functions
Install the following flow functions which we will need for the app logic
Last updated