CE-3140: Ping refresh user flow
After some discussions with Imre this is how the re-auth flow works.
- User logs in
- Every third minute a request is sent to get user info.
- If user is logged in, user token is refreshed on every request to backend, which then will be at least every third minute.
- If user token expires, protected endpoints and user info endpoint responds with a 401 status code.
- An interceptor is added to rtk query to catch all 401:s and when that happens, a login process is initiated.
I couldn't make the context api to work nicely with the interceptor so I switched user global state from context api to redux state manager. Since both rtk query and redux is a part of redux-toolkit, it was very easy and no additional dependencies were needed.
Also to make sure that the state manager is loaded before the UI I moved the provider one step out to index and renamed it to a more generic StateProvider.
To test, use BE merge request dependency. Login -> kill internet -> wait for 1 hour 5 min -> turn on internet -> either wait for the user info request or make a request to a protected endpoint (use one migrated to rtk query) -> you should be prompted to login.
Edited by Johanna Szepanski