Skip to content

Commit 58437fb

Browse files
authored
YDA-6336: check permission before loading metadata
1 parent 16a210a commit 58437fb

File tree

3 files changed

+70
-13
lines changed

3 files changed

+70
-13
lines changed

themes/uu_dag/vault/static/vault/js/vault.js

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ $(document).ajaxSend(function (e, request, settings) {
1111
})
1212

1313
let currentFolder
14-
const hasReadRights = true
14+
let hasReadRights = true
1515

1616
$(function () {
1717
// Extract current location from query string (default to '').
@@ -48,7 +48,6 @@ $(function () {
4848
function browse (dir = '', changeHistory = false) {
4949
currentFolder = dir
5050
makeBreadcrumb(dir)
51-
metadataInfo(dir)
5251
topInformation(dir, true) // only here topInformation should show its alertMessage
5352
buildFileBrowser(dir)
5453
}
@@ -352,16 +351,36 @@ window.addEventListener('popstate', function (e) {
352351
browse('dir' in query ? query.dir : '')
353352
})
354353

355-
function topInformation (dir, showAlert) {
354+
function topInformation (dir) {
356355
if (typeof dir !== 'undefined') {
357356
Yoda.call('vault_collection_details',
358357
{ path: Yoda.basePath + dir }).then((data) => {
359358
const vaultStatus = data.status
360359
const vaultActionPending = data.vault_action_pending
361360
const hasWriteRights = 'yes'
361+
const userType = data.member_type
362362
const isDatamanager = data.is_datamanager
363363
const actions = []
364364

365+
if (userType !== 'none' || isDatamanager) {
366+
// Datamanager, Researcher, normal, groupmanager cases
367+
hasReadRights = true
368+
} else {
369+
// Anyone else case
370+
hasReadRights = false
371+
}
372+
373+
if (hasReadRights) {
374+
metadataInfo(dir)
375+
} else {
376+
$('.metadata-info').show()
377+
$('.metadata-title').text(dir)
378+
$('.metadata-description').text('N/A')
379+
$('.metadata-access').text('N/A')
380+
$('.metadata-data-classification').text('N/A')
381+
$('.metadata-license').text('N/A')
382+
}
383+
365384
$('.btn-group button.metadata-form').hide()
366385
$('.top-information').hide()
367386
$('.top-info-buttons').hide()
@@ -426,7 +445,7 @@ function metadataInfo (dir) {
426445
{ coll: Yoda.basePath + dir },
427446
{ rawResult: true })
428447
.then((result) => {
429-
if (!result || Object.keys(result.data).length === 0) { return console.info('No result data from meta_form_load') }
448+
if (!result || !result.data || Object.keys(result.data).length === 0) { return console.info('No result data from meta_form_load') }
430449

431450
const metadata = result.data.metadata
432451
$('.metadata-info').show()

vault/static/vault/js/datapackage.js

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ let group
1515
let bounds = [[1, 1], [1, 1]]
1616
let mymap = null
1717
let maplayer = null
18+
let hasReadRights = true
1819

1920
let metadata // Make it global so functions on different levels can access it without having to pass it as a parameter entirely
2021
// mfunction contains specific presentation functions that are initiated from the template on the base of dpAttr (datapackage attribute)
@@ -180,13 +181,41 @@ $(function () {
180181
}, 10)
181182
})
182183

183-
if (dpIsRestricted) {
184-
handleRestrictedMetadataInfo()
184+
metadataInfo(currentFolder)
185+
})
186+
187+
function metadataInfo (dir) {
188+
if (typeof dir !== 'undefined') {
189+
Yoda.call('vault_collection_details',
190+
{ path: Yoda.basePath + dir },
191+
{ quiet: true, rawResult: true }).then((dataRaw) => {
192+
const data = dataRaw.data
193+
const userType = data.member_type
194+
const isDatamanager = data.is_datamanager
195+
196+
if (userType !== 'none' || isDatamanager) {
197+
// Datamanager, Researcher, normal, groupmanager cases
198+
hasReadRights = true
199+
} else {
200+
// Anyone else case
201+
hasReadRights = false
202+
}
203+
204+
if (dpIsRestricted) {
205+
handleRestrictedMetadataInfo()
206+
} else {
207+
if (hasReadRights) {
208+
// First collect the information, then present it
209+
handleOpenMetadataInfo(currentFolder)
210+
} else {
211+
$('.metadata-title').text(currentFolder)
212+
}
213+
}
214+
})
185215
} else {
186-
// First collect the information, then present it
187-
handleOpenMetadataInfo(currentFolder)
216+
handleRestrictedMetadataInfo()
188217
}
189-
})
218+
}
190219

191220
async function handleRestrictedMetadataInfo () {
192221
/* Collect and present restricted datapackage metadata through the search api based upon a uuid of 1 single datapackage. */
@@ -246,7 +275,7 @@ function handleOpenMetadataInfo (dir) {
246275
{ coll: Yoda.basePath + dir },
247276
{ rawResult: true })
248277
.then((result) => {
249-
if (!result || Object.keys(result.data).length === 0) { return console.info('No result data from meta_form_load') }
278+
if (!result || !result.data || Object.keys(result.data).length === 0) { return console.info('No result data from meta_form_load') }
250279

251280
metadata = result.data.metadata
252281
// bring separately delivered deposit_date into the metadata dict for ease of reference

vault/static/vault/js/vault.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ window.addEventListener('popstate', function (e) {
711711
browse('dir' in query ? query.dir : '')
712712
})
713713

714-
function topInformation (dir, showAlert, rebuildFileBrowser = false) {
714+
function topInformation (dir, rebuildFileBrowser = false) {
715715
if (typeof dir !== 'undefined') {
716716
Yoda.call('vault_collection_details',
717717
{ path: Yoda.basePath + dir },
@@ -849,7 +849,16 @@ function topInformation (dir, showAlert, rebuildFileBrowser = false) {
849849
if (vaultStatus === '' || vaultStatus === 'INCOMPLETE') {
850850
$('.alert.is-processing').show()
851851
} else {
852-
metadataInfo(dir)
852+
if (hasReadRights) {
853+
metadataInfo(dir)
854+
} else {
855+
$('.metadata-info').show()
856+
$('.metadata-title').text(dir)
857+
$('.metadata-description').text('N/A')
858+
$('.metadata-access').text('N/A')
859+
$('.metadata-data-classification').text('N/A')
860+
$('.metadata-license').text('N/A')
861+
}
853862
if (vaultStatus === 'PUBLISHED' || vaultStatus === 'PENDING_DEPUBLICATION' || vaultStatus === 'PENDING_REPUBLICATION' || vaultStatus === 'DEPUBLISHED') {
854863
$('.metadata-form-size').addClass('col-lg-8')
855864
$('.meta-title-size').removeClass('col-lg-2').addClass('col-lg-3')
@@ -1146,7 +1155,7 @@ function metadataInfo (dir) {
11461155
{ coll: Yoda.basePath + dir },
11471156
{ quiet: true, rawResult: true })
11481157
.then((result) => {
1149-
if (!result || Object.keys(result.data).length === 0) { return console.info('No result data from meta_form_load') }
1158+
if (!result || !result.data || Object.keys(result.data).length === 0) { return console.info('No result data from meta_form_load') }
11501159

11511160
const metadata = result.data.metadata
11521161
$('.metadata-info').show()

0 commit comments

Comments
 (0)