Skip to content

Commit b14e707

Browse files
committed
Make public access
1 parent f4b7761 commit b14e707

File tree

3 files changed

+46
-24
lines changed

3 files changed

+46
-24
lines changed

lib/actions/makePublic.js

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,22 @@
11
const {
22
getCollectionMetaData
33
} = require('../query/collection')
4-
5-
var pug = require('pug')
6-
4+
const pug = require('pug')
75
const {
86
fetchSBOLObjectRecursive
97
} = require('../fetch/fetch-sbol-object-recursive')
10-
118
const serializeSBOL = require('../serializeSBOL')
12-
13-
var config = require('../config')
14-
15-
var loadTemplate = require('../loadTemplate')
16-
17-
var extend = require('xtend')
18-
19-
var getUrisFromReq = require('../getUrisFromReq')
20-
21-
var sparql = require('../sparql/sparql')
22-
9+
const config = require('../config')
10+
const loadTemplate = require('../loadTemplate')
11+
const extend = require('xtend')
12+
const getUrisFromReq = require('../getUrisFromReq')
13+
const sparql = require('../sparql/sparql')
2314
const tmp = require('tmp-promise')
24-
25-
var fs = require('mz/fs')
26-
15+
const fs = require('mz/fs')
2716
const prepareSubmission = require('../prepare-submission')
17+
const access = require('../auth/access')
18+
const db = require('../db')
19+
const generateGraph = require('../generateGraph')
2820

2921
module.exports = function (req, res) {
3022
req.setTimeout(0) // no timeout
@@ -74,7 +66,7 @@ module.exports = function (req, res) {
7466
var citations = []
7567
var collectionUri
7668

77-
const { graphUri, uri } = getUrisFromReq(req, res)
69+
const { graphUri, baseUri, uri } = getUrisFromReq(req, res)
7870

7971
if (req.method === 'POST') {
8072
overwriteMerge = req.body.tabState === 'new' ? '0' : '2'
@@ -233,6 +225,9 @@ module.exports = function (req, res) {
233225
})
234226
}).then((result) => {
235227
const { success, errorLog, resultFilename } = result
228+
let publicPrefix = config.get('databasePrefix') + 'public/' + collectionId
229+
let privatePrefix = baseUri
230+
access.makePublic(publicPrefix, privatePrefix, uri)
236231

237232
if (!success) {
238233
if (!req.accepts('text/html')) {
@@ -251,7 +246,14 @@ module.exports = function (req, res) {
251246

252247
console.log('upload')
253248

254-
return sparql.uploadFile(null, resultFilename, 'application/rdf+xml').then(function removeSubmission (next) {
249+
return sparql.uploadFile(null, resultFilename, 'application/rdf+xml').then(async function removeSubmission (next) {
250+
let user = await db.model.User.findOne({ where: { graphUri: graphUri } })
251+
let rootCollectionIdentity = config.get('databasePrefix') + `public/${collectionId}/${collectionId}_collection/${version}`
252+
253+
let graph = { }
254+
graph[rootCollectionIdentity] = generateGraph(rootCollectionIdentity, { graphUri: null }) // second param should be a user, but no user owns public graph
255+
access.grant(user, graph, 3, 'owner from make public')
256+
255257
if (req.params.version !== 'current') {
256258
console.log('remove')
257259

lib/actions/updateShare.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ module.exports = function updateShare (req, res) {
1010
let authId = req.body.authId
1111
let desiredPrivilege = req.body.newPrivilege
1212

13-
access.update(authId, desiredPrivilege)
13+
access.updatePrivilege(authId, desiredPrivilege)
1414
res.sendStatus(200).end()
1515
}

lib/auth/access.js

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ function grant (user, uriGraph, privilege, notes) {
4949
return accessionUrl
5050
}
5151

52-
async function update (auth, privilege, isChild) {
52+
async function updatePrivilege (auth, privilege, isChild) {
5353
console.debug(`Updating auth ${auth}`)
5454
if (!isChild) {
5555
db.model.Auth.update({ privilege: privilege },
@@ -62,10 +62,29 @@ async function update (auth, privilege, isChild) {
6262
child.privilege = privilege
6363
child.save()
6464

65-
update(child.id, privilege, true)
65+
updatePrivilege(child.id, privilege, true)
6666
})
6767
}
6868

69+
async function makePublic (userPrefix, publicPrefix, uri) {
70+
console.debug(`makePublic(${userPrefix}, ${publicPrefix}, ${uri})`)
71+
72+
let auths = await db.model.Auth.findAll({ where: { uri: uri } })
73+
let children = await db.model.Auth.findAll({ where: { rootAuth: auths } })
74+
for (let child of children) {
75+
await makePublic(userPrefix, publicPrefix, child.uri)
76+
}
77+
78+
for (let auth of auths) {
79+
if (auth.privilege < 2) {
80+
auth.destroy()
81+
} else {
82+
auth.uri = auth.uri.replace(userPrefix, publicPrefix)
83+
auth.save()
84+
}
85+
}
86+
}
87+
6988
async function getPrivilege (userIds, path) {
7089
let databasePrefix = config.get('databasePrefix')
7190
let uri = databasePrefix + path.substring(1)
@@ -179,5 +198,6 @@ module.exports = {
179198
grant: grant,
180199
getPrivilege: getPrivilege,
181200
getShared: getShared,
182-
update: update
201+
updatePrivilege: updatePrivilege,
202+
makePublic: makePublic
183203
}

0 commit comments

Comments
 (0)