Skip to content

Commit b32e884

Browse files
committed
Added optional param to checkAccess as well
Is now aligned with accessDenied again
1 parent f4e05cd commit b32e884

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/acl-check.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ async function query (queryString, store) {
7878
** @param kb A quadstore
7979
** @param doc the resource (A named node) or directory for which ACL applies
8080
*/
81-
function checkAccess (kb, doc, directory, aclDoc, agent, modesRequired, origin, trustedOrigins) {
82-
return !accessDenied(kb, doc, directory, aclDoc, agent, modesRequired, origin, trustedOrigins)
81+
function checkAccess (kb, doc, directory, aclDoc, agent, modesRequired, origin, trustedOrigins, originTrustedModes) {
82+
return !accessDenied(kb, doc, directory, aclDoc, agent, modesRequired, origin, trustedOrigins, originTrustedModes)
8383
}
8484

8585
function modesAllowed (kb, doc, directory, aclDoc, agent, origin, trustedOrigins, originTrustedModes = []) {

test/unit/check-access-test.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const $rdf = require('rdflib')
99

1010
const ACL = $rdf.Namespace('http://www.w3.org/ns/auth/acl#')
1111
const FOAF = $rdf.Namespace('http://xmlns.com/foaf/0.1/')
12+
const ALICE = $rdf.Namespace('https://alice.example.com/')
1213

1314
const prefixes = `@prefix acl: <http://www.w3.org/ns/auth/acl#> .
1415
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@@ -327,3 +328,35 @@ test('acl-check checkAccess() test - default/inherited', function (t) {
327328

328329
t.end()
329330
})
331+
332+
test('aclCheck checkAccess() test - with use of originTrustedModes', t => {
333+
const resource = ALICE('docs/file1')
334+
const aclDoc = ALICE('docs/.acl')
335+
const aclUrl = aclDoc.uri
336+
337+
const origin = $rdf.sym('https://apps.example.com')
338+
const aclStore = $rdf.graph()
339+
// grants read, write and control access to Alice
340+
const ACLtext = `${prefixes}
341+
<#auth> a acl:Authorization;
342+
acl:mode acl:Read, acl:Write, acl:Control;
343+
acl:agent alice:me;
344+
acl:accessTo ${resource} .
345+
`
346+
$rdf.parse(ACLtext, aclStore, aclUrl, 'text/turtle')
347+
348+
const agent = alice
349+
const directory = null
350+
const trustedOrigins = []
351+
const originTrustedModes = [ACL('Read'), ACL('Write')]
352+
353+
const readWriteModeRequired = [ACL('Read'), ACL('Write')]
354+
const readWriteModeResult = aclLogic.checkAccess(aclStore, resource, directory, aclDoc, agent, readWriteModeRequired, origin, trustedOrigins, originTrustedModes)
355+
t.ok(readWriteModeResult, 'Should get access to modes when origin is listed as trusted app')
356+
357+
const controlModeRequired = [ACL('Control')]
358+
const controlModeResult = aclLogic.checkAccess(aclStore, resource, directory, aclDoc, agent, controlModeRequired, origin, trustedOrigins, originTrustedModes)
359+
t.ok(!controlModeResult, 'All Required Access Modes Not Granted', 'Correct reason')
360+
361+
t.end()
362+
})

0 commit comments

Comments
 (0)