summaryrefslogtreecommitdiff
path: root/addons/auth_totp/static
AgeCommit message (Collapse)Author
2020-09-25[IMP] base, totp: simplify form layout and improve responsivenessOlivier Dony
Some of the TOTP-related forms contained an attempt at making a centered modal pop-up, using a bootstrap `card` that would also serve to emphasize that the interaction was sensitive and security-related. Some of the "footer buttons" were moved inside the form to make it more obvious that they were part of the interaction flow. However some of this caused breakages of responsiveness and did not yield a really satisfactory result anyway. This commit switches back to using regular non-centered forms. It looks quite ugly because the content is better suited for a narrow modal, but it means less surprises in terms of layout and less responsiveness issues. closes odoo/odoo#58541 Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
2020-09-21[FIX] auth_totp: tour not working on a base installXavier Morel
This is a followup to #57826: turns out discuss isn't necessarily installed (who knew?), so the tour would break if mail was not explicitly installed alongside base, which is not great. So instead of opening discuss to try and fix the profile race condition, reload the *entire web client* by navigating to `/web`. Further discovery: async run functions don't actually do anything in tours, not sure where I got that, maybe used one for the convenience of `await` then the next time around having decided to wipe any knowledge of tours I had, I figured it wasn't possible that tours were so stupid as to not support promises. So yeah, can't just return a "pending" promise in order to force the tour manager to wait until the page has reloaded to carry on, that doesn't work. Instead use marker classes. Also remove the `async run` I had in the rest of the file to avoid being misleading, use a marker class for the one step where it probably matters. closes odoo/odoo#58119 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
2020-09-16[IMP] auth_totp: reliability of tourXavier Morel
On runbot the tour shows transient failures related to race conditions. The issue here is that when a user updates their own TOTP status, if hr is not installed this will close the Preferences dialog requiring reopening the dialog in order to check that everything worked. However if hr is installed there is no dialog ("My Profile" opens as a full action, which will not disappear on TOTP updates). We still reopen the My Profile action, but if the server is a bit too slow the tour may see the "old" version of "My Profile" which has not been unloaded, click the tab to go to the next step, but because it's already there the action has no effect, the next step is triggered when "My Profile" finally (re)loads at which point we're back on the first tab while the tour believes it should be on the second, and the tour breaks. Fix this by forcing a full reload of the action: between updating TOTP status and checking for the status change, navigate to the Discuss application then back to the preferences / profile screen. closes odoo/odoo#57826 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
2020-08-17[FIX] auto_totp: tour & check RPC w/ tokenXavier Morel
* Not sure how the tour passed during merge as it would not be looking for the button in the right tab, it would fail locally, fix this issue by properly switching to the Account Security tab * add the missing test of RPC (which should not work on an account with totp enabled) * also reorder ops & fix comments: turns out `totp_login_enabled` checks that totp is enabled *then disables it* closes odoo/odoo#55979 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
2020-08-14[ADD] auth_totpXavier Morel
New module for supporting two-factor authentication via time-base one-time-password (TOTP). Users (including portal users) can choose to enable two-factor auth in their user account settings, by scanning a QR code and adding it to an authenticator app, such as Google Auth, 1Password, etc. When two-factor is enabled, password-based non-interactive RPC is only possible by using API keys. Co-authored-by: Olivier Dony <odo@odoo.com>