@@ -10,7 +10,7 @@ import { solidLogicSingleton } from '../logic'
1010import utils from '../utils'
1111import { AgentMapMap , AgentMapUnion , ComboList } from './types'
1212import * as debug from '../debug'
13- import { graph , IndexedFormula , NamedNode , serialize , st , sym } from 'rdflib'
13+ import { graph , IndexedFormula , NamedNode , serialize , st , Statement , sym } from 'rdflib'
1414import { LiveStore } from 'pane-registry'
1515import { ACL_LINK } from 'solid-logic'
1616
@@ -36,15 +36,15 @@ export function adoptACLDefault (
3636 . concat ( kb . each ( undefined , ACL ( 'defaultForNew' ) , defaultResource , defaultACLDoc ) )
3737
3838 const proposed = defaults . reduce ( ( accumulatedStatements , da ) => accumulatedStatements
39- . concat ( kb . statementsMatching ( da , ns . rdf ( 'type' ) , ACL ( 'Authorization' ) , defaultACLDoc ) )
40- . concat ( kb . statementsMatching ( da , ACL ( 'agent' ) , undefined , defaultACLDoc ) )
41- . concat ( kb . statementsMatching ( da , ACL ( 'agentClass' ) , undefined , defaultACLDoc ) )
42- . concat ( kb . statementsMatching ( da , ACL ( 'agentGroup' ) , undefined , defaultACLDoc ) )
43- . concat ( kb . statementsMatching ( da , ACL ( 'origin' ) , undefined , defaultACLDoc ) )
44- . concat ( kb . statementsMatching ( da , ACL ( 'originClass' ) , undefined , defaultACLDoc ) )
45- . concat ( kb . statementsMatching ( da , ACL ( 'mode' ) , undefined , defaultACLDoc ) )
46- . concat ( st ( da , ACL ( 'accessTo' ) , doc , defaultACLDoc ) )
47- . concat ( isContainer ? st ( da , ACL ( 'default' ) , doc , defaultACLDoc ) : [ ] ) , [ ] )
39+ . concat ( kb . statementsMatching ( da as NamedNode , ns . rdf ( 'type' ) , ACL ( 'Authorization' ) , defaultACLDoc ) )
40+ . concat ( kb . statementsMatching ( da as NamedNode , ACL ( 'agent' ) , undefined , defaultACLDoc ) )
41+ . concat ( kb . statementsMatching ( da as NamedNode , ACL ( 'agentClass' ) , undefined , defaultACLDoc ) )
42+ . concat ( kb . statementsMatching ( da as NamedNode , ACL ( 'agentGroup' ) , undefined , defaultACLDoc ) )
43+ . concat ( kb . statementsMatching ( da as NamedNode , ACL ( 'origin' ) , undefined , defaultACLDoc ) )
44+ . concat ( kb . statementsMatching ( da as NamedNode , ACL ( 'originClass' ) , undefined , defaultACLDoc ) )
45+ . concat ( kb . statementsMatching ( da as NamedNode , ACL ( 'mode' ) , undefined , defaultACLDoc ) )
46+ . concat ( st ( da as NamedNode , ACL ( 'accessTo' ) , doc , defaultACLDoc ) )
47+ . concat ( isContainer ? st ( da as NamedNode , ACL ( 'default' ) , doc , defaultACLDoc ) : [ ] ) , [ ] as Statement [ ] )
4848
4949 const kb2 = graph ( ) // Potential - derived is kept apart
5050 proposed . forEach ( st => kb2 . add ( move ( st . subject ) , move ( st . predicate ) , move ( st . object ) , sym ( aclDoc . uri ) ) )
@@ -355,7 +355,7 @@ type fixIndividualACLCallback = (ok: boolean, message?: string | NamedNode | Age
355355 * All group files must be loaded first
356356 */
357357export function fixIndividualCardACL ( person : NamedNode , log : Function , callbackFunction : fixIndividualCardACLCallback ) : void {
358- const groups = kb . each ( undefined , ns . vcard ( 'hasMember' ) , person )
358+ const groups = kb . each ( undefined , ns . vcard ( 'hasMember' ) , person ) as NamedNode [ ]
359359 // const doc = person.doc()
360360 if ( groups ) {
361361 fixIndividualACL ( person , groups , log , callbackFunction )
@@ -396,7 +396,7 @@ export function fixIndividualACL (item: NamedNode, subjects: Array<NamedNode>, l
396396 // makeACLString(targetDoc, ac, targetACLDoc))
397397
398398 putACLObject (
399- kb ,
399+ kb as unknown as LiveStore ,
400400 targetDoc as NamedNode ,
401401 union as AgentMapMap | AgentMapUnion ,
402402 targetACLDoc as NamedNode ,
@@ -416,34 +416,44 @@ export function setACL (
416416 callbackFunction : ( ok : boolean , message : string ) => void
417417) : void {
418418 const aclDoc = kb . any (
419- kb . sym ( docURI ) ,
420- kb . sym ( ACL_LINK )
419+ docURI ,
420+ ACL_LINK
421421 ) // @@ check that this get set by web.js
422+ if ( ! kb . fetcher ) {
423+ throw new Error ( 'Store has no fetcher' )
424+ }
422425 if ( aclDoc ) {
423426 // Great we already know where it is
424427 kb . fetcher
425- . webOperation ( 'PUT' , aclDoc . uri , {
428+ . webOperation ( 'PUT' , aclDoc . value , {
426429 data : aclText ,
427430 contentType : 'text/turtle'
428431 } )
429- . then ( callbackFunction ) // @@@ check params
432+ . then ( ( res ) => {
433+ callbackFunction ( res . ok , res . error || '' )
434+ } ) // @@@ check params
430435 } else {
431436 kb . fetcher . nowOrWhenFetched ( docURI , undefined , function ( ok , body ) {
432437 if ( ! ok ) return callbackFunction ( ok , 'Gettting headers for ACL: ' + body )
433438 const aclDoc = kb . any (
434- kb . sym ( docURI ) ,
435- kb . sym ( ACL_LINK )
439+ docURI ,
440+ ACL_LINK
436441 ) // @@ check that this get set by web.js
437442 if ( ! aclDoc ) {
438443 // complainIfBad(false, "No Link rel=ACL header for " + docURI)
439444 callbackFunction ( false , 'No Link rel=ACL header for ' + docURI )
440445 } else {
446+ if ( ! kb . fetcher ) {
447+ throw new Error ( 'Store has no fetcher' )
448+ }
441449 kb . fetcher
442- . webOperation ( 'PUT' , aclDoc . uri , {
450+ . webOperation ( 'PUT' , aclDoc . value , {
443451 data : aclText ,
444452 contentType : 'text/turtle'
445453 } )
446- . then ( callbackFunction )
454+ . then ( ( res ) => {
455+ callbackFunction ( res . ok , res . error || '' )
456+ } )
447457 }
448458 } )
449459 }
@@ -469,7 +479,7 @@ export function getACLorDefault (
469479 d ?: NamedNode
470480 ) => void
471481) : void {
472- getACL ( doc , function ( ok , status , aclDoc , message ) {
482+ getACL ( doc , function ( ok , status , aclDoc , message ) : string | void {
473483 const ACL = ns . acl
474484 if ( ! ok ) return callbackFunction ( false , false , status as number , message as string )
475485
@@ -485,14 +495,14 @@ export function getACLorDefault (
485495 }
486496 uri = uri . slice ( 0 , right + 1 )
487497 const doc2 = sym ( uri )
488- getACL ( doc2 , function ( ok , status , defaultACLDoc ) {
498+ getACL ( doc2 , function ( ok , status , defaultACLDoc : any ) : NamedNode | void {
489499 if ( ! ok ) {
490500 return callbackFunction (
491501 false ,
492502 true ,
493503 status as number ,
494504 `( No ACL pointer ${ uri } ${ status } )${ defaultACLDoc } `
495- )
505+ ) as void
496506 } else if ( status === 403 ) {
497507 return callbackFunction (
498508 false ,
@@ -579,26 +589,32 @@ export function getACL (
579589 message ?: string
580590 ) => void
581591) : void {
592+ if ( ! kb . fetcher ) {
593+ throw new Error ( 'kb has no fetcher' )
594+ }
582595 kb . fetcher . nowOrWhenFetched ( doc , undefined , function ( ok , body ) {
583596 if ( ! ok ) {
584597 return callbackFunction ( ok , `Can't get headers to find ACL for ${ doc } : ${ body } ` )
585598 }
586599 const aclDoc = kb . any (
587600 doc ,
588- kb . sym ( ACL_LINK )
601+ ACL_LINK
589602 ) // @@ check that this get set by web.js
590603 if ( ! aclDoc ) {
591604 callbackFunction ( false , 900 , `No Link rel=ACL header for ${ doc } ` )
592605 } else {
593- if ( kb . fetcher . nonexistent [ aclDoc . uri ] ) {
606+ if ( ! kb . fetcher ) {
607+ throw new Error ( 'kb has no fetcher' )
608+ }
609+ if ( kb . fetcher . nonexistent [ aclDoc . value ] ) {
594610 return callbackFunction (
595611 true ,
596612 404 ,
597- aclDoc ,
613+ aclDoc as NamedNode ,
598614 `ACL file ${ aclDoc } does not exist.`
599615 )
600616 }
601- kb . fetcher . nowOrWhenFetched ( aclDoc , undefined , function (
617+ kb . fetcher . nowOrWhenFetched ( aclDoc as NamedNode , undefined , function (
602618 ok ,
603619 message ,
604620 response
@@ -607,11 +623,11 @@ export function getACL (
607623 callbackFunction (
608624 true ,
609625 response . status ,
610- aclDoc ,
626+ aclDoc as NamedNode ,
611627 `Can't read Access Control File ${ aclDoc } : ${ message } `
612628 )
613629 } else {
614- callbackFunction ( true , 200 , aclDoc )
630+ callbackFunction ( true , 200 , aclDoc as NamedNode )
615631 }
616632 } )
617633 }
0 commit comments