diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-01-06 09:00:21 -0500 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2017-01-06 09:00:21 -0500 |
commit | 38f89cb1441376da77b35b08158db9405aad738b (patch) | |
tree | a7958225dfd50bc5ac9eb7edeeb4ba3ecb427ca0 /webapp/routes/route_utils.jsx | |
parent | ff127bbaa343026a55429acf37f2c95186d07ac5 (diff) | |
download | chat-38f89cb1441376da77b35b08158db9405aad738b.tar.gz chat-38f89cb1441376da77b35b08158db9405aad738b.tar.bz2 chat-38f89cb1441376da77b35b08158db9405aad738b.zip |
Fix MFA enforcement redirect loop (#4991)
Diffstat (limited to 'webapp/routes/route_utils.jsx')
-rw-r--r-- | webapp/routes/route_utils.jsx | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/webapp/routes/route_utils.jsx b/webapp/routes/route_utils.jsx index f3a159cbc..f36d7bcd8 100644 --- a/webapp/routes/route_utils.jsx +++ b/webapp/routes/route_utils.jsx @@ -2,6 +2,7 @@ // See License.txt for license information. import * as Utils from 'utils/utils.jsx'; +import UserStore from 'stores/user_store.jsx'; export function importComponentSuccess(callback) { return (comp) => callback(null, comp.default); @@ -18,3 +19,28 @@ export const notFoundParams = { linkmessage: Utils.localizeMessage('error.not_found.link_message', 'Back to Mattermost') }; +const mfaPaths = [ + '/mfa/setup', + '/mfa/confirm' +]; + +const mfaAuthServices = [ + '', + 'email', + 'ldap' +]; + +export function checkIfMFARequired(state) { + if (window.mm_license.MFA === 'true' && + window.mm_config.EnableMultifactorAuthentication === 'true' && + window.mm_config.EnforceMultifactorAuthentication === 'true' && + mfaPaths.indexOf(state.location.pathname) === -1) { + const user = UserStore.getCurrentUser(); + if (user && !user.mfa_active && + mfaAuthServices.indexOf(user.auth_service) !== -1) { + return true; + } + } + + return false; +} |