fix: review requests

This commit is contained in:
Sérgio Salgado 2021-01-29 13:16:21 +00:00 committed by Josh Harvey
parent 6e7794bfc6
commit 7166559d19
11 changed files with 310 additions and 324 deletions

View file

@ -84,17 +84,15 @@ const LoginCard = () => {
}
return (
<div>
<Paper elevation={1}>
<div className={classes.wrapper}>
<div className={classes.titleWrapper}>
<Logo className={classes.icon} />
<H2 className={classes.title}>Lamassu Admin</H2>
</div>
{renderState()}
<Paper elevation={1}>
<div className={classes.wrapper}>
<div className={classes.titleWrapper}>
<Logo className={classes.icon} />
<H2 className={classes.title}>Lamassu Admin</H2>
</div>
</Paper>
</div>
{renderState()}
</div>
</Paper>
)
}

View file

@ -81,77 +81,73 @@ const Setup2FAState = ({
}
return (
<>
{secret && otpauth ? (
<>
<div className={classes.infoWrapper}>
<Label2 className={classes.info2}>
We detected that this account does not have its two-factor
authentication enabled. In order to protect the resources in the
system, a two-factor authentication is enforced.
</Label2>
<Label2 className={classes.info2}>
To finish this process, please scan the following QR code or
insert the secret further below on an authentication app of your
choice, such as Google Authenticator or Authy.
</Label2>
</div>
<div className={classes.qrCodeWrapper}>
<QRCode size={240} fgColor={primaryColor} value={otpauth} />
</div>
<div className={classes.secretWrapper}>
<Label2 className={classes.secretLabel}>Your secret:</Label2>
<Label2
className={isShowing ? classes.secret : classes.hiddenSecret}>
{secret}
</Label2>
<ActionButton
disabled={!secret && !otpauth}
color="primary"
onClick={() => {
setShowing(!isShowing)
}}>
{isShowing ? 'Hide' : 'Show'}
</ActionButton>
</div>
<div className={classes.confirm2FAInput}>
<CodeInput
name="2fa"
value={twoFAConfirmation}
onChange={handle2FAChange}
numInputs={6}
error={invalidToken}
shouldAutoFocus
/>
</div>
<div className={classes.twofaFooter}>
{getErrorMsg() && (
<P className={classes.errorMessage}>{getErrorMsg()}</P>
)}
<Button
onClick={() => {
if (twoFAConfirmation.length !== 6) {
setInvalidToken(true)
return
secret &&
otpauth && (
<>
<div className={classes.infoWrapper}>
<Label2 className={classes.info2}>
We detected that this account does not have its two-factor
authentication enabled. In order to protect the resources in the
system, a two-factor authentication is enforced.
</Label2>
<Label2 className={classes.info2}>
To finish this process, please scan the following QR code or insert
the secret further below on an authentication app of your choice,
such as Google Authenticator or Authy.
</Label2>
</div>
<div className={classes.qrCodeWrapper}>
<QRCode size={240} fgColor={primaryColor} value={otpauth} />
</div>
<div className={classes.secretWrapper}>
<Label2 className={classes.secretLabel}>Your secret:</Label2>
<Label2 className={isShowing ? classes.secret : classes.hiddenSecret}>
{secret}
</Label2>
<ActionButton
disabled={!secret && !otpauth}
color="primary"
onClick={() => {
setShowing(!isShowing)
}}>
{isShowing ? 'Hide' : 'Show'}
</ActionButton>
</div>
<div className={classes.confirm2FAInput}>
<CodeInput
name="2fa"
value={twoFAConfirmation}
onChange={handle2FAChange}
numInputs={6}
error={invalidToken}
shouldAutoFocus
/>
</div>
<div className={classes.twofaFooter}>
{getErrorMsg() && (
<P className={classes.errorMessage}>{getErrorMsg()}</P>
)}
<Button
onClick={() => {
if (twoFAConfirmation.length !== 6) {
setInvalidToken(true)
return
}
setup2FA({
variables: {
username: clientField,
password: passwordField,
secret: secret,
codeConfirmation: twoFAConfirmation
}
setup2FA({
variables: {
username: clientField,
password: passwordField,
secret: secret,
codeConfirmation: twoFAConfirmation
}
})
}}
buttonClassName={classes.loginButton}>
Done
</Button>
</div>
</>
) : (
<div></div>
)}
</>
})
}}
buttonClassName={classes.loginButton}>
Done
</Button>
</div>
</>
)
)
}

View file

@ -100,7 +100,7 @@ const styles = {
overflowX: 'auto',
width: '92.5%'
},
test1: {
linkWrapper: {
width: '100%',
height: '100%',
overflow: 'hidden',

View file

@ -24,43 +24,41 @@ const ChangeRoleModal = ({
}
return (
<>
{showModal && (
<Modal
closeOnBackdropClick={true}
width={450}
height={250}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>
Change {user.username}'s role?
</Info2>
<P className={classes.info}>
You are about to alter {user.username}'s role. This will change this
user's permission to access certain resources.
</P>
<P className={classes.info}>Do you wish to proceed?</P>
<div className={classes.footer}>
<Button
className={classes.submit}
onClick={() => {
setAction(() =>
confirm.bind(null, {
variables: {
id: user.id,
newRole: user.role === 'superuser' ? 'user' : 'superuser'
}
})
)
inputConfirmToggle()
handleClose()
}}>
Confirm
</Button>
</div>
</Modal>
)}
</>
showModal && (
<Modal
closeOnBackdropClick={true}
width={450}
height={250}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>
Change {user.username}'s role?
</Info2>
<P className={classes.info}>
You are about to alter {user.username}'s role. This will change this
user's permission to access certain resources.
</P>
<P className={classes.info}>Do you wish to proceed?</P>
<div className={classes.footer}>
<Button
className={classes.submit}
onClick={() => {
setAction(() =>
confirm.bind(null, {
variables: {
id: user.id,
newRole: user.role === 'superuser' ? 'user' : 'superuser'
}
})
)
inputConfirmToggle()
handleClose()
}}>
Confirm
</Button>
</div>
</Modal>
)
)
}

View file

@ -10,7 +10,7 @@ import ErrorMessage from 'src/components/ErrorMessage'
import Modal from 'src/components/Modal'
import { Button } from 'src/components/buttons'
import { TextInput, RadioGroup } from 'src/components/inputs/formik'
import { H1, H2, H3, Info3, Mono } from 'src/components/typography'
import { H1, H3, Info2, P, Mono } from 'src/components/typography'
import CopyToClipboard from 'src/pages/Transactions/CopyToClipboard'
import styles from '../UserManagement.styles'
@ -139,19 +139,24 @@ const CreateUserModal = ({ showModal, toggleModal }) => {
{showModal && createUserURL && (
<Modal
closeOnBackdropClick={true}
width={600}
height={275}
width={500}
height={200}
handleClose={handleClose}
open={true}>
<H2 className={classes.modalTitle}>Creating {usernameField}...</H2>
<Info3 className={classes.info}>
<Info2 className={classes.modalTitle}>
Creating {usernameField}...
</Info2>
<P className={classes.info}>
Safely share this link with {usernameField} to finish the
registration process.
</Info3>
</P>
<div className={classes.addressWrapper}>
<Mono className={classes.address}>
<strong>
<CopyToClipboard buttonClassname={classes.copyToClipboard}>
<CopyToClipboard
className={classes.link}
buttonClassname={classes.copyToClipboard}
wrapperClassname={classes.linkWrapper}>
{createUserURL}
</CopyToClipboard>
</strong>

View file

@ -24,50 +24,48 @@ const DeleteUserModal = ({
}
return (
<>
{showModal && (
<Modal
closeOnBackdropClick={true}
width={600}
height={275}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>Delete {user.username}?</Info2>
<P className={classes.info}>
You are about to delete {user.username}. This will remove existent
sessions and revoke this user's permissions to access the system.
</P>
<P className={classes.info}>
This is a <b>PERMANENT</b> operation. Do you wish to proceed?
</P>
<div className={classes.footer}>
<Button
className={classes.submit}
onClick={() => {
if (user.role === 'superuser') {
setAction(() =>
confirm.bind(null, {
variables: {
id: user.id
}
})
)
inputConfirmToggle()
} else {
confirm({
showModal && (
<Modal
closeOnBackdropClick={true}
width={600}
height={275}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>Delete {user.username}?</Info2>
<P className={classes.info}>
You are about to delete {user.username}. This will remove existent
sessions and revoke this user's permissions to access the system.
</P>
<P className={classes.info}>
This is a <b>PERMANENT</b> operation. Do you wish to proceed?
</P>
<div className={classes.footer}>
<Button
className={classes.submit}
onClick={() => {
if (user.role === 'superuser') {
setAction(() =>
confirm.bind(null, {
variables: {
id: user.id
}
})
}
handleClose()
}}>
Confirm
</Button>
</div>
</Modal>
)}
</>
)
inputConfirmToggle()
} else {
confirm({
variables: {
id: user.id
}
})
}
handleClose()
}}>
Confirm
</Button>
</div>
</Modal>
)
)
}

View file

@ -24,68 +24,66 @@ const EnableUserModal = ({
}
return (
<>
{showModal && (
<Modal
closeOnBackdropClick={true}
width={450}
height={275}
handleClose={handleClose}
open={true}>
{!user.enabled && (
<>
<Info2 className={classes.modalTitle}>
Enable {user.username}?
</Info2>
<P className={classes.info}>
You are about to enable {user.username} into the system,
activating previous eligible sessions and grant permissions to
access the system.
</P>
<P className={classes.info}>Do you wish to proceed?</P>
</>
)}
{user.enabled && (
<>
<Info2 className={classes.modalTitle}>
Disable {user.username}?
</Info2>
<P className={classes.info}>
You are about to disable {user.username} from the system,
deactivating previous eligible sessions and removing permissions
to access the system.
</P>
<P className={classes.info}>Do you wish to proceed?</P>
</>
)}
<div className={classes.footer}>
<Button
className={classes.submit}
onClick={() => {
if (user.role === 'superuser') {
setAction(() =>
confirm.bind(null, {
variables: {
id: user.id
}
})
)
inputConfirmToggle()
} else {
confirm({
showModal && (
<Modal
closeOnBackdropClick={true}
width={450}
height={275}
handleClose={handleClose}
open={true}>
{!user.enabled && (
<>
<Info2 className={classes.modalTitle}>
Enable {user.username}?
</Info2>
<P className={classes.info}>
You are about to enable {user.username} into the system,
activating previous eligible sessions and grant permissions to
access the system.
</P>
<P className={classes.info}>Do you wish to proceed?</P>
</>
)}
{user.enabled && (
<>
<Info2 className={classes.modalTitle}>
Disable {user.username}?
</Info2>
<P className={classes.info}>
You are about to disable {user.username} from the system,
deactivating previous eligible sessions and removing permissions
to access the system.
</P>
<P className={classes.info}>Do you wish to proceed?</P>
</>
)}
<div className={classes.footer}>
<Button
className={classes.submit}
onClick={() => {
if (user.role === 'superuser') {
setAction(() =>
confirm.bind(null, {
variables: {
id: user.id
}
})
}
handleClose()
}}>
Confirm
</Button>
</div>
</Modal>
)}
</>
)
inputConfirmToggle()
} else {
confirm({
variables: {
id: user.id
}
})
}
handleClose()
}}>
Confirm
</Button>
</div>
</Modal>
)
)
}

View file

@ -55,47 +55,45 @@ const Input2FAModal = ({ showModal, toggleModal, action, vars }) => {
}
return (
<>
{showModal && (
<Modal
closeOnBackdropClick={true}
width={500}
height={350}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>Confirm action</Info2>
<P className={classes.info}>
To make changes on this user, please confirm this action by entering
your two-factor authentication code below.
</P>
<CodeInput
name="2fa"
value={twoFACode}
onChange={handleCodeChange}
numInputs={6}
error={invalidCode}
containerStyle={classes.codeContainer}
shouldAutoFocus
/>
{getErrorMsg() && (
<P className={classes.errorMessage}>{getErrorMsg()}</P>
)}
<div className={classes.footer}>
<Button
className={classes.submit}
onClick={() => {
if (twoFACode.length !== 6) {
setInvalidCode(true)
return
}
confirm2FA({ variables: { code: twoFACode } })
}}>
Confirm
</Button>
</div>
</Modal>
)}
</>
showModal && (
<Modal
closeOnBackdropClick={true}
width={500}
height={350}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>Confirm action</Info2>
<P className={classes.info}>
To make changes on this user, please confirm this action by entering
your two-factor authentication code below.
</P>
<CodeInput
name="2fa"
value={twoFACode}
onChange={handleCodeChange}
numInputs={6}
error={invalidCode}
containerStyle={classes.codeContainer}
shouldAutoFocus
/>
{getErrorMsg() && (
<P className={classes.errorMessage}>{getErrorMsg()}</P>
)}
<div className={classes.footer}>
<Button
className={classes.submit}
onClick={() => {
if (twoFACode.length !== 6) {
setInvalidCode(true)
return
}
confirm2FA({ variables: { code: twoFACode } })
}}>
Confirm
</Button>
</div>
</Modal>
)
)
}

View file

@ -17,36 +17,34 @@ const Reset2FAModal = ({ showModal, toggleModal, reset2FAURL, user }) => {
}
return (
<>
{showModal && (
<Modal
closeOnBackdropClick={true}
width={500}
height={200}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>
Reset 2FA for {user.username}
</Info2>
<P className={classes.info}>
Safely share this link with {user.username} for a two-factor
authentication reset.
</P>
<div className={classes.addressWrapper}>
<Mono className={classes.address}>
<strong>
<CopyToClipboard
className={classes.link}
buttonClassname={classes.copyToClipboard}
wrapperClassname={classes.test1}>
{reset2FAURL}
</CopyToClipboard>
</strong>
</Mono>
</div>
</Modal>
)}
</>
showModal && (
<Modal
closeOnBackdropClick={true}
width={500}
height={200}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>
Reset 2FA for {user.username}
</Info2>
<P className={classes.info}>
Safely share this link with {user.username} for a two-factor
authentication reset.
</P>
<div className={classes.addressWrapper}>
<Mono className={classes.address}>
<strong>
<CopyToClipboard
className={classes.link}
buttonClassname={classes.copyToClipboard}
wrapperClassname={classes.linkWrapper}>
{reset2FAURL}
</CopyToClipboard>
</strong>
</Mono>
</div>
</Modal>
)
)
}

View file

@ -22,35 +22,33 @@ const ResetPasswordModal = ({
}
return (
<>
{showModal && (
<Modal
closeOnBackdropClick={true}
width={500}
height={180}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>
Reset password for {user.username}
</Info2>
<P className={classes.info}>
Safely share this link with {user.username} for a password reset.
</P>
<div className={classes.addressWrapper}>
<Mono className={classes.address}>
<strong>
<CopyToClipboard
className={classes.link}
buttonClassname={classes.copyToClipboard}
wrapperClassname={classes.test1}>
{resetPasswordURL}
</CopyToClipboard>
</strong>
</Mono>
</div>
</Modal>
)}
</>
showModal && (
<Modal
closeOnBackdropClick={true}
width={500}
height={180}
handleClose={handleClose}
open={true}>
<Info2 className={classes.modalTitle}>
Reset password for {user.username}
</Info2>
<P className={classes.info}>
Safely share this link with {user.username} for a password reset.
</P>
<div className={classes.addressWrapper}>
<Mono className={classes.address}>
<strong>
<CopyToClipboard
className={classes.link}
buttonClassname={classes.copyToClipboard}
wrapperClassname={classes.linkWrapper}>
{resetPasswordURL}
</CopyToClipboard>
</strong>
</Mono>
</div>
</Modal>
)
)
}

View file

@ -21,7 +21,6 @@ import ResetPassword from 'src/pages/Authentication/ResetPassword'
import Blacklist from 'src/pages/Blacklist'
import Cashout from 'src/pages/Cashout'
import Commissions from 'src/pages/Commissions'
// import ConfigMigration from 'src/pages/ConfigMigration'
import { Customers, CustomerProfile } from 'src/pages/Customers'
import Dashboard from 'src/pages/Dashboard'
import Funding from 'src/pages/Funding'