@@ -3,8 +3,10 @@ import solid from 'solid-auth-client';
33import * as N3 from 'n3' ;
44import { isEqual } from 'lodash' ;
55import ldflex from '@solid/query-ldflex' ;
6+ import { FOAF , RDF , VCARD } from '@inrupt/lit-generated-vocab-common' ;
7+ import { ACL } from '@inrupt/lit-generated-vocab-solid-common' ;
68import { SolidError } from '@utils' ;
7- import { PERMISSIONS , ACL_PREFIXES } from '@constants' ;
9+ import { PERMISSIONS } from '@constants' ;
810
911type Permissions = {
1012 agents : null | String | Array ,
@@ -45,30 +47,29 @@ export default class AccessControlList {
4547 * @param {Array<String> | null } agents Array of webId or null if for everyone
4648 */
4749 createQuadList = ( modes : Array < String > , agents : Array < String > | null ) => {
48- const { acl, foaf, rdf } = ACL_PREFIXES ;
4950 const subject = `${ this . aclUri } #${ modes . join ( '' ) } ` ;
5051 const { documentUri } = this ;
5152 const originalPredicates = [
52- this . createQuad ( subject , ` ${ rdf } type` , namedNode ( ` ${ acl } Authorization` ) ) ,
53- this . createQuad ( subject , ` ${ acl } accessTo` , namedNode ( documentUri ) ) ,
54- this . createQuad ( subject , ` ${ acl } default` , namedNode ( documentUri ) )
53+ this . createQuad ( subject , RDF . type . iriAsString , ACL . Authorization ) ,
54+ this . createQuad ( subject , ACL . accessTo . iriAsString , namedNode ( documentUri ) ) ,
55+ this . createQuad ( subject , ACL . default_ . iriAsString , namedNode ( documentUri ) )
5556 ] ;
5657 let predicates = [ ] ;
5758 if ( agents ) {
5859 const agentsArray = Array . isArray ( agents ) ? agents : [ agents ] ;
5960 const agentsQuads = agentsArray . map ( agent =>
60- this . createQuad ( subject , ` ${ acl } agent` , namedNode ( agent ) )
61+ this . createQuad ( subject , ACL . agent . iriAsString , namedNode ( agent ) )
6162 ) ;
6263 predicates = [ ...originalPredicates , ...agentsQuads ] ;
6364 } else {
64- const publicQuad = this . createQuad ( subject , ` ${ acl } agentClass` , namedNode ( ` ${ foaf } Agent` ) ) ;
65+ const publicQuad = this . createQuad ( subject , ACL . agentClass . iriAsString , FOAF . Agent ) ;
6566 predicates = [ ...originalPredicates , publicQuad ] ;
6667 }
6768
6869 const quadList = modes . reduce (
6970 ( array , mode ) => [
7071 ...array ,
71- this . createQuad ( subject , ` ${ acl } mode` , namedNode ( `${ acl } ${ mode } ` ) )
72+ this . createQuad ( subject , ACL . mode . iriAsString , namedNode ( `${ ACL . NAMESPACE } ${ mode } ` ) )
7273 ] ,
7374 predicates
7475 ) ;
@@ -83,7 +84,16 @@ export default class AccessControlList {
8384 */
8485 createPermissionsTurtle = ( permissions : Array < Permissions > ) => {
8586 const { DataFactory } = N3 ;
86- const prefixes = { ...ACL_PREFIXES , '' : `${ this . aclUri } #` , me : this . owner } ;
87+
88+ const prefixes = {
89+ ...ACL . PREFIX_AND_NAMESPACE ,
90+ ...FOAF . PREFIX_AND_NAMESPACE ,
91+ ...RDF . PREFIX_AND_NAMESPACE ,
92+ ...VCARD . PREFIX_AND_NAMESPACE ,
93+ '' : `${ this . aclUri } #` ,
94+ me : this . owner
95+ } ;
96+
8797 const { namedNode, quad } = DataFactory ;
8898 const writer = new N3 . Writer ( { prefixes } ) ;
8999 const quadPermissions = permissions . map ( ( { modes, agents } ) =>
@@ -185,10 +195,10 @@ export default class AccessControlList {
185195 for await ( const subject of document . subjects ) {
186196 let agents = [ ] ;
187197 let modes = [ ] ;
188- for await ( const agent of subject [ 'acl: agent' ] ) {
198+ for await ( const agent of subject [ ACL . agent ] ) {
189199 agents = [ ...agents , agent . value ] ;
190200 }
191- for await ( const mode of subject [ 'acl: mode' ] ) {
201+ for await ( const mode of subject [ ACL . mode ] ) {
192202 const modeName = mode . value ? mode . value . split ( '#' ) [ 1 ] : '' ;
193203 modes = [ ...modes , modeName ] ;
194204 }
@@ -243,9 +253,8 @@ export default class AccessControlList {
243253 */
244254 createMode = async ( { modes, agents } ) => {
245255 try {
246- const { acl, foaf } = ACL_PREFIXES ;
247256 const subject = `${ this . aclUri } #${ modes . join ( '' ) } ` ;
248- await ldflex [ subject ] . type . add ( namedNode ( ` ${ acl } Authorization` ) ) ;
257+ await ldflex [ subject ] . type . add ( ACL . Authorization ) ;
249258 const path = namedNode ( this . documentUri ) ;
250259 await ldflex [ subject ] [ 'acl:accessTo' ] . add ( path ) ;
251260 await ldflex [ subject ] [ 'acl:default' ] . add ( path ) ;
@@ -255,11 +264,11 @@ export default class AccessControlList {
255264 await ldflex [ subject ] [ 'acl:agent' ] . add ( namedNode ( agent ) ) ;
256265 }
257266 } else {
258- await ldflex [ subject ] [ 'acl:agentClass' ] . add ( namedNode ( ` ${ foaf } Agent` ) ) ;
267+ await ldflex [ subject ] [ 'acl:agentClass' ] . add ( FOAF . Agent ) ;
259268 }
260269
261270 for await ( const mode of modes ) {
262- await ldflex [ subject ] [ 'acl:mode' ] . add ( namedNode ( `${ acl } ${ mode } ` ) ) ;
271+ await ldflex [ subject ] [ 'acl:mode' ] . add ( namedNode ( `${ ACL . NAMESPACE } ${ mode } ` ) ) ;
263272 }
264273 return { modes, agents } ;
265274 } catch ( e ) {
0 commit comments