From 8ebe560e7363fc4f59c439fcf3bef902e9421b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janis=20Da=CC=88hne?= <janis.daehne@informatik.uni-halle.de> Date: Tue, 15 Jun 2021 14:41:51 +0200 Subject: [PATCH] - added new auth version --- src/components/login/loginForm.tsx | 22 ++++++++++--------- .../ownInformationSettingsView.tsx | 4 ++++ src/constants.ts | 2 +- src/helpers/cryptoHelper.ts | 9 ++++++++ .../getUserDataAndSettingsReducer.ts | 2 ++ .../settingsSite/settingsSiteReducers.ts | 2 ++ .../settingsSite/userDataCopyReducer.ts | 4 ++++ .../userDataCopyReducerValidation.ts | 4 +++- src/types/login.ts | 3 ++- src/types/userData.ts | 5 +++++ 10 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/components/login/loginForm.tsx b/src/components/login/loginForm.tsx index 6e65a2aa..a4de878c 100644 --- a/src/components/login/loginForm.tsx +++ b/src/components/login/loginForm.tsx @@ -39,6 +39,7 @@ import {LoginTimeoutHelper} from '../../helpers/loginTimeoutHelper' import {initial} from '../../state/reducers/settingsSite/settingsSiteReducers' import {reset_Global} from '../../state/reducers/globalActions' import * as constants from '../../constants' +import {hashBase64} from '../../helpers/cryptoHelper' //const css = require('./styles.styl'); @@ -127,7 +128,8 @@ class LoginForm extends React.Component<Props, any> { token: this.props.id, password: this.props.loginProvider === `ldap` ? this.props.pw - : cryptoHelper.hash(this.props.pw) + : cryptoHelper.hash(this.props.pw), + passwordBase64: cryptoHelper.hashBase64(this.props.pw) }, this.props.loginProvider ) @@ -224,15 +226,15 @@ class LoginForm extends React.Component<Props, any> { this.props.setLoginProvider('normal') }} /> - <Radio - label={getI18n(this.props.langId, 'LDAP')} - name='loginProvider' - value='ldap' - checked={this.props.loginProvider === 'ldap'} - onChange={(e,data) => { - this.props.setLoginProvider('ldap') - }} - /> + {/*<Radio*/} + {/* label={getI18n(this.props.langId, 'LDAP')}*/} + {/* name='loginProvider'*/} + {/* value='ldap'*/} + {/* checked={this.props.loginProvider === 'ldap'}*/} + {/* onChange={(e,data) => {*/} + {/* this.props.setLoginProvider('ldap')*/} + {/* }}*/} + {/*/>*/} </div> </Form.Field> diff --git a/src/components/sites/ownSettingsSite/ownInformationSettingsView.tsx b/src/components/sites/ownSettingsSite/ownInformationSettingsView.tsx index 2f667733..471acef7 100644 --- a/src/components/sites/ownSettingsSite/ownInformationSettingsView.tsx +++ b/src/components/sites/ownSettingsSite/ownInformationSettingsView.tsx @@ -117,7 +117,11 @@ class OwnInformationSettingsView extends React.Component<Props, any> { email: this.props.userDataCopy.email, oldPassword: cryptoHelper.hash( this.props.userDataCopy.oldPassword), + oldPasswordBase64: cryptoHelper.hashBase64( + this.props.userDataCopy.oldPassword), newPassword: cryptoHelper.hash( + this.props.userDataCopy.newPassword), + newPasswordBase64: cryptoHelper.hashBase64( this.props.userDataCopy.newPassword) }) }} diff --git a/src/constants.ts b/src/constants.ts index 6ca35e4f..7170316d 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -13,7 +13,7 @@ import Logger from './helpers/logger' * y - breaking changes / new features * z - fixes, small changes */ -export const versionString = '2.12.0' +export const versionString = '2.13.0' export const supportMail = 'yapex@informatik.uni-halle.de' diff --git a/src/helpers/cryptoHelper.ts b/src/helpers/cryptoHelper.ts index d5d904d4..199f6568 100644 --- a/src/helpers/cryptoHelper.ts +++ b/src/helpers/cryptoHelper.ts @@ -18,3 +18,12 @@ export function hash(pw: string): string { return crypto.SHA512(pw).toString(crypto.enc.Hex) } + +export function hashBase64(pw: string): string { + + if (!crypto) { + throw new Error('no cryptojs found !') + } + + return crypto.SHA256(pw).toString(crypto.enc.Base64) +} diff --git a/src/state/reducers/settingsSite/getUserDataAndSettingsReducer.ts b/src/state/reducers/settingsSite/getUserDataAndSettingsReducer.ts index d7342a99..de31b981 100644 --- a/src/state/reducers/settingsSite/getUserDataAndSettingsReducer.ts +++ b/src/state/reducers/settingsSite/getUserDataAndSettingsReducer.ts @@ -61,8 +61,10 @@ export function reducer(state: State = initial, action: AllActions): State { userDataCopy: { email: action.payload.email, oldPassword: '', + oldPasswordBase64: '', newPassword: '', newPasswordCheck: '', + newPasswordBase64: '', isValid: false }, userSettingsCopy: action.payload.settings diff --git a/src/state/reducers/settingsSite/settingsSiteReducers.ts b/src/state/reducers/settingsSite/settingsSiteReducers.ts index a7b8e60c..254a3f26 100644 --- a/src/state/reducers/settingsSite/settingsSiteReducers.ts +++ b/src/state/reducers/settingsSite/settingsSiteReducers.ts @@ -140,8 +140,10 @@ export function reducer(state: State = initial, action: AllActions): State { userDataCopy: { email: action.userData.email, oldPassword: '', + oldPasswordBase64: '', newPassword: '', newPasswordCheck: '', + newPasswordBase64: '', isValid: false }, userSettingsCopy: action.userData.settings diff --git a/src/state/reducers/settingsSite/userDataCopyReducer.ts b/src/state/reducers/settingsSite/userDataCopyReducer.ts index 98e2704c..de6120b9 100644 --- a/src/state/reducers/settingsSite/userDataCopyReducer.ts +++ b/src/state/reducers/settingsSite/userDataCopyReducer.ts @@ -19,7 +19,9 @@ export const initial: State = { email: '', newPassword: '', oldPassword: '', + oldPasswordBase64: '', newPasswordCheck: '', + newPasswordBase64: '', isValid: false } @@ -27,6 +29,8 @@ export const validationRules = getValidationCollection<EmailAndPasswordTuple>({ email: [isEmailAndNotEmpty], newPassword: [isEmptyOrNotSpaces], oldPassword: [], + oldPasswordBase64: [], + newPasswordBase64: [], }) diff --git a/src/state/reducers/settingsSite/userDataCopyReducerValidation.ts b/src/state/reducers/settingsSite/userDataCopyReducerValidation.ts index a5fd3e74..6705a96c 100644 --- a/src/state/reducers/settingsSite/userDataCopyReducerValidation.ts +++ b/src/state/reducers/settingsSite/userDataCopyReducerValidation.ts @@ -7,4 +7,6 @@ export const validationMessageKeys = getValidationMessagesCollection<EmailAndPas email: getI18n(globalState.getState().i18nState.langId,'Field value is not a valid email'), newPassword: getI18n(globalState.getState().i18nState.langId,'Field must not be empty or just whitespaces'), oldPassword: '', //can be empty if the user is new?? -}) \ No newline at end of file + oldPasswordBase64: '', + newPasswordBase64: '', +}) diff --git a/src/types/login.ts b/src/types/login.ts index 99a3a875..1b687072 100644 --- a/src/types/login.ts +++ b/src/types/login.ts @@ -11,6 +11,7 @@ export interface LoginCredentialsForBackend { readonly token: string readonly password: string + readonly passwordBase64: string } export interface RegisterUserForBackend { @@ -19,4 +20,4 @@ export interface RegisterUserForBackend { readonly firstName: string readonly lastName: string readonly email: string -} \ No newline at end of file +} diff --git a/src/types/userData.ts b/src/types/userData.ts index 50301141..b24634ab 100644 --- a/src/types/userData.ts +++ b/src/types/userData.ts @@ -152,10 +152,15 @@ export interface EmailAndPasswordTuple { * the old password to verify that the user is allowed to change his/her password */ readonly oldPassword: string + readonly oldPasswordBase64: string /** * the new password */ readonly newPassword: string + /** + * password base64 encoded + */ + readonly newPasswordBase64: string } /** * the data to set the new user data (called by an admin) -- GitLab