From 4a630f0f5348867bdb8843b1768546a189433f15 Mon Sep 17 00:00:00 2001 From: Nikola Ubavic <53820106+ubavic@users.noreply.github.com> Date: Tue, 28 Dec 2021 20:09:43 +0100 Subject: [PATCH] fix: replace `client` and `username` with `email` fix: error handling in lamassu-register --- bin/lamassu-register | 19 +++++++++++-------- .../src/pages/Authentication/LoginState.js | 19 ++++++++++--------- .../src/pages/Authentication/Register.js | 4 ++++ .../src/pages/Authentication/Setup2FAState.js | 11 +++++------ 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/bin/lamassu-register b/bin/lamassu-register index c24a59b6..7d5284bc 100755 --- a/bin/lamassu-register +++ b/bin/lamassu-register @@ -2,6 +2,7 @@ const { asyncLocalStorage, defaultStore } = require('../lib/async-storage') const userManagement = require('../lib/new-admin/graphql/modules/userManagement') +const authErrors = require('../lib/new-admin/graphql/errors/authentication') const options = require('../lib/options') const name = process.argv[2] @@ -14,29 +15,25 @@ if (!domain) { } if (!name || !role) { - console.log('Usage: lamassu-register ') + console.log('Usage: lamassu-register ') + console.log(' must be \'user\' or \'superuser\'') process.exit(2) } const emailRegex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ if (!emailRegex.test(name)) { - console.log('Usage: should be in an email format') + console.log('Usage: must be in an email format') process.exit(2) } if (role !== 'user' && role !== 'superuser') { - console.log('Usage: has two possible values: user | superuser') + console.log('Usage: must be \'user\' or \'superuser\'') process.exit(2) } asyncLocalStorage.run(defaultStore(), () => { userManagement.createRegisterToken(name, role).then(token => { - if (!token) { - console.log(`A user named ${name} already exists!`) - process.exit(2) - } - if (domain === 'localhost') { console.log(`https://${domain}:3001/register?t=${token.token}`) } else { @@ -45,6 +42,12 @@ asyncLocalStorage.run(defaultStore(), () => { process.exit(0) }).catch(err => { + + if (err instanceof authErrors.UserAlreadyExistsError){ + console.log(`A user with email ${name} already exists!`) + process.exit(2) + } + console.log('Error: %s', err) process.exit(3) }) diff --git a/new-lamassu-admin/src/pages/Authentication/LoginState.js b/new-lamassu-admin/src/pages/Authentication/LoginState.js index aaa91fe9..4cc4444b 100644 --- a/new-lamassu-admin/src/pages/Authentication/LoginState.js +++ b/new-lamassu-admin/src/pages/Authentication/LoginState.js @@ -46,23 +46,24 @@ const GET_USER_DATA = gql` ` const validationSchema = Yup.object().shape({ - client: Yup.string() - .required('Client field is required!') - .email('Username field should be in an email format!'), + email: Yup.string() + .label('Email') + .required() + .email(), password: Yup.string().required('Password field is required'), rememberMe: Yup.boolean() }) const initialValues = { - client: '', + email: '', password: '', rememberMe: false } const getErrorMsg = (formikErrors, formikTouched, mutationError) => { if (!formikErrors || !formikTouched) return null - if (mutationError) return 'Invalid login/password combination' - if (formikErrors.client && formikTouched.client) return formikErrors.client + if (mutationError) return 'Invalid email/password combination' + if (formikErrors.email && formikTouched.email) return formikErrors.email if (formikErrors.password && formikTouched.password) return formikErrors.password return null @@ -142,13 +143,13 @@ const LoginState = ({ state, dispatch, strategy }) => { validationSchema={validationSchema} initialValues={initialValues} onSubmit={values => - submitLogin(values.client, values.password, values.rememberMe) + submitLogin(values.email, values.password, values.rememberMe) }> {({ errors, touched }) => (
{ {!loading && state.result === 'failure' && ( <> Link has expired + + To obtain a new link, run the command{' '} + lamassu-register in your server’s terminal. + )} diff --git a/new-lamassu-admin/src/pages/Authentication/Setup2FAState.js b/new-lamassu-admin/src/pages/Authentication/Setup2FAState.js index 410b49e4..618ed89e 100644 --- a/new-lamassu-admin/src/pages/Authentication/Setup2FAState.js +++ b/new-lamassu-admin/src/pages/Authentication/Setup2FAState.js @@ -140,14 +140,13 @@ const Setup2FAState = ({ state, dispatch }) => { <>
- 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. + This account does not yet have two-factor authentication enabled. To + secure the admin, two-factor authentication is required. - 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. + To complete the registration process, scan the following QR code or + insert the secret below on a 2FA app, such as Google Authenticator + or AndOTP.