[Security] Automatically sign out user after certain period of time
**Is your feature request related to a problem? Please describe.**
Currently we have the possibility to configure "timeout_in" time which closes the session at Decidim's side after a certain period of inactivity. This is fine, as long as we don't have any external sign in options which also need their own sign out flows during the sign out from Decidim.
Another issue is that the user is not informed that their session is about to expire and it may come as a surprise that they were signed out.
**Describe the solution you'd like**
We'd like to have these changes to the session termination:
- E.g. 1-2 minutes before the session is about to expire, the user should be shown a session expiration modal which states that their session is about to expire.
- If the user wants, they could extend their session by clicking a button from that window.
- When the session is automatically terminated, send the user to the normal sign out flow so that the user is also signed out from any external services that could be possibly configured for the sign out flow through Omniauth.
- After the user is signed out automatically, show a special message that explains the user what happened, so they are not left wondering what just happened.
**Describe alternatives you've considered**
As mentioned, the alternative to this is already part of Devise but it does not take into consideration the external services' sign out flows. Also, the user experience is not greatest as the user will not get clear information about what happened and why.
Similar concepts to what is proposed can be seen e.g. in online banking. This is an important feature when we provide strong authentication to the users as other people could possibly use their credentials if they did not sign out from the service.
**Does this issue could impact on users private data?**
Yes, this has a positive impact on users private data. Implementing these features keeps the user more secure.
List of Endorsements
Report inappropriate content
Is this content inappropriate?