diff --git a/new-lamassu-admin/src/pages/UserManagement/UserManagement.js b/new-lamassu-admin/src/pages/UserManagement/UserManagement.js index 0215e3bc..0e6b89c8 100644 --- a/new-lamassu-admin/src/pages/UserManagement/UserManagement.js +++ b/new-lamassu-admin/src/pages/UserManagement/UserManagement.js @@ -16,11 +16,13 @@ import { ReactComponent as WhiteLockIcon } from 'src/styling/icons/button/lock/w import { ReactComponent as LockIcon } from 'src/styling/icons/button/lock/zodiac.svg' import { ReactComponent as WhiteUserRoleIcon } from 'src/styling/icons/button/user-role/white.svg' import { ReactComponent as UserRoleIcon } from 'src/styling/icons/button/user-role/zodiac.svg' +import { IP_CHECK_REGEX } from 'src/utils/constants' import styles from './UserManagement.styles' import ChangeRoleModal from './modals/ChangeRoleModal' import CreateUserModal from './modals/CreateUserModal' import EnableUserModal from './modals/EnableUserModal' +import FIDOModal from './modals/FIDOModal' import Reset2FAModal from './modals/Reset2FAModal' import ResetPasswordModal from './modals/ResetPasswordModal' @@ -194,13 +196,20 @@ const Users = () => { InverseIcon={WhiteUserRoleIcon} color="primary" onClick={() => { - setUserInfo(u) - generateAttestationOptions({ - variables: { - userID: u.id, - domain: window.location.hostname - } - }) + if (IP_CHECK_REGEX.test(window.location.hostname)) { + dispatch({ + type: 'open', + payload: 'showFIDOModal' + }) + } else { + setUserInfo(u) + generateAttestationOptions({ + variables: { + userID: u.id, + domain: window.location.hostname + } + }) + } }}> Add FIDO @@ -276,6 +285,7 @@ const Users = () => { user={userInfo} requiresConfirmation={userInfo?.role === 'superuser'} /> + ) } diff --git a/new-lamassu-admin/src/pages/UserManagement/modals/FIDOModal.js b/new-lamassu-admin/src/pages/UserManagement/modals/FIDOModal.js new file mode 100644 index 00000000..cb167af1 --- /dev/null +++ b/new-lamassu-admin/src/pages/UserManagement/modals/FIDOModal.js @@ -0,0 +1,47 @@ +import { makeStyles } from '@material-ui/core/styles' +import React from 'react' + +import Modal from 'src/components/Modal' +import { Button } from 'src/components/buttons' +import { Info2, P } from 'src/components/typography' + +import styles from '../UserManagement.styles' + +const useStyles = makeStyles(styles) + +const ChangeRoleModal = ({ state, dispatch }) => { + const classes = useStyles() + + const handleClose = () => { + dispatch({ + type: 'close', + payload: 'showFIDOModal' + }) + } + + return ( + + About FIDO authentication +

+ This feature is only available for websites with configured domains, and + we detected that a domain is not configured at the moment. +

+

+ Make sure that a domain is configured for this website and try again + later. +

+
+ +
+
+ ) +} + +export default ChangeRoleModal diff --git a/new-lamassu-admin/src/utils/constants.js b/new-lamassu-admin/src/utils/constants.js index a17f6fa0..6b828dfd 100644 --- a/new-lamassu-admin/src/utils/constants.js +++ b/new-lamassu-admin/src/utils/constants.js @@ -6,11 +6,14 @@ const WALLET_SCORING_DEFAULT_THRESHOLD = 9 const AUTOMATIC = 'automatic' const MANUAL = 'manual' +const IP_CHECK_REGEX = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ + export { CURRENCY_MAX, MIN_NUMBER_OF_CASSETTES, MAX_NUMBER_OF_CASSETTES, AUTOMATIC, MANUAL, - WALLET_SCORING_DEFAULT_THRESHOLD + WALLET_SCORING_DEFAULT_THRESHOLD, + IP_CHECK_REGEX }