From 74d29376e35ed16a39330776d9ce80b1b3e76ff1 Mon Sep 17 00:00:00 2001 From: Davis Raymond Muro Date: Fri, 30 Sep 2022 14:22:13 +0300 Subject: [PATCH 01/47] Add PyJWT requirement --- dependencies/pip/requirements.in | 3 +++ dependencies/pip/requirements.txt | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/dependencies/pip/requirements.in b/dependencies/pip/requirements.in index 720ee4b84d..31d954f9d7 100644 --- a/dependencies/pip/requirements.in +++ b/dependencies/pip/requirements.in @@ -90,3 +90,6 @@ django-trench==0.2.3 # Python 3.8 support backports.zoneinfo; python_version < '3.9' + +# OnaData support +PyJWT diff --git a/dependencies/pip/requirements.txt b/dependencies/pip/requirements.txt index ecfa7cf48c..c5931273aa 100644 --- a/dependencies/pip/requirements.txt +++ b/dependencies/pip/requirements.txt @@ -243,7 +243,9 @@ pycparser==2.21 pygments==2.11.2 # via -r dependencies/pip/requirements.in pyjwt==2.3.0 - # via twilio + # via + # -r dependencies/pip/requirements.in + # twilio pymongo==3.12.3 # via -r dependencies/pip/requirements.in pyopenssl==22.0.0 From 0652ef5cb834a620e946c2b4c016fb429c39ca85 Mon Sep 17 00:00:00 2001 From: Davis Raymond Muro Date: Fri, 30 Sep 2022 15:00:36 +0300 Subject: [PATCH 02/47] Add OnaData authentication functionality to the jsapp --- jsapp/js/actions.es6 | 34 ++-- .../account/accountSettingsRoute.es6 | 3 +- jsapp/js/components/reports/reports.es6 | 3 +- jsapp/js/components/searchcollectionlist.es6 | 3 +- jsapp/js/editorMixins/editableForm.es6 | 147 ++++++++++-------- jsapp/js/ona/config.ts | 6 + jsapp/js/utils.ts | 10 ++ 7 files changed, 120 insertions(+), 86 deletions(-) create mode 100644 jsapp/js/ona/config.ts diff --git a/jsapp/js/actions.es6 b/jsapp/js/actions.es6 index 5391c81bf5..c9ea3f9dc6 100644 --- a/jsapp/js/actions.es6 +++ b/jsapp/js/actions.es6 @@ -23,6 +23,8 @@ import dataShareActions from './actions/dataShareActions'; import { notify, replaceSupportEmail, + checkIfCookieExists, + redirectForOnaDataAuth, } from 'utils'; // Configure Reflux @@ -201,20 +203,24 @@ actions.resources.listTags.completed.listen(function(results){ }); actions.resources.updateAsset.listen(function(uid, values, params={}) { - dataInterface.patchAsset(uid, values) - .done((asset) => { - actions.resources.updateAsset.completed(asset); - if (typeof params.onComplete === 'function') { - params.onComplete(asset, uid, values); - } - notify(t('successfully updated')); - }) - .fail(function(resp){ - actions.resources.updateAsset.failed(resp); - if (params.onFailed) { - params.onFailed(resp); - } - }); + if (checkIfCookieExists("__kpi_formbuilder")) { + redirectForOnaDataAuth() + } else { + dataInterface.patchAsset(uid, values) + .done((asset) => { + actions.resources.updateAsset.completed(asset); + if (typeof params.onComplete === 'function') { + params.onComplete(asset, uid, values); + } + notify(t('successfully updated')); + }) + .fail(function(resp){ + actions.resources.updateAsset.failed(resp); + if (params.onFailed) { + params.onFailed(resp); + } + }); + } }); actions.resources.deployAsset.listen(function(asset, redeployment, params={}){ diff --git a/jsapp/js/components/account/accountSettingsRoute.es6 b/jsapp/js/components/account/accountSettingsRoute.es6 index 3a72040efb..490d48e124 100644 --- a/jsapp/js/components/account/accountSettingsRoute.es6 +++ b/jsapp/js/components/account/accountSettingsRoute.es6 @@ -15,6 +15,7 @@ import { addRequiredToLabel, stringToColor, } from 'utils'; +import { TITLE } from '../../ona/config'; import {ROUTES} from 'js/router/routerConstants'; import envStore from 'js/envStore'; import './accountSettings.scss'; @@ -207,7 +208,7 @@ export default class AccountSettings extends React.Component { const metaFields = this.getDisplayMetaFields(); return ( - + + {this.renderReportButtons()} diff --git a/jsapp/js/components/searchcollectionlist.es6 b/jsapp/js/components/searchcollectionlist.es6 index ce2961ccf7..37230fe28f 100644 --- a/jsapp/js/components/searchcollectionlist.es6 +++ b/jsapp/js/components/searchcollectionlist.es6 @@ -14,6 +14,7 @@ import DocumentTitle from 'react-document-title'; import Dropzone from 'react-dropzone'; import {validFileTypes} from 'utils'; import {redirectToLogin} from 'js/router/routerUtils'; +import { TITLE } from '../ona/config'; import { ASSET_TYPES, COMMON_QUERIES, @@ -211,7 +212,7 @@ class SearchCollectionList extends Reflux.Component { docTitle = t('Library'); } return ( - + + + + ); + } - if (!this.state.isNewAsset && !this.state.asset) { return ( - - - - ); - } + + + + {this.renderAside()} - return ( - - - - {this.renderAside()} + + {this.renderFormBuilderHeader()} - - {this.renderFormBuilderHeader()} - - - {this.state.asset && - - } - - {this.hasBackgroundAudio() && - this.renderBackgroundAudioWarning() - } - -
- {!this.state.surveyAppRendered && - this.renderNotLoadedMessage() + + {this.state.asset && + } -
-
-
- - {this.state.enketopreviewOverlay && - - -
-