mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
fix: Make sure locker allows reentrant lock acquisition
This commit is contained in:
@@ -64,10 +64,14 @@ export class AuthorizingHttpHandler extends OperationHttpHandler {
|
||||
this.logger.verbose(`Extracted credentials: ${JSON.stringify(credentials)}`);
|
||||
|
||||
const requestedModes = await this.modesExtractor.handleSafe(operation);
|
||||
this.logger.verbose(`Retrieved required modes: ${[ ...requestedModes.entrySets() ]}`);
|
||||
this.logger.verbose(`Retrieved required modes: ${
|
||||
[ ...requestedModes.entrySets() ].map(([ id, set ]): string => `{ ${id.path}: ${[ ...set ]} }`)
|
||||
}`);
|
||||
|
||||
const availablePermissions = await this.permissionReader.handleSafe({ credentials, requestedModes });
|
||||
this.logger.verbose(`Available permissions are ${[ ...availablePermissions.entries() ]}`);
|
||||
this.logger.verbose(`Available permissions are ${
|
||||
[ ...availablePermissions.entries() ].map(([ id, map ]): string => `{ ${id.path}: ${JSON.stringify(map)} }`)
|
||||
}`);
|
||||
|
||||
try {
|
||||
await this.authorizer.handleSafe({ credentials, requestedModes, availablePermissions });
|
||||
|
||||
@@ -71,6 +71,8 @@ export class WacAllowHttpHandler extends OperationHttpHandler {
|
||||
} else {
|
||||
// Need to determine public permissions
|
||||
this.logger.debug('Determining public permissions');
|
||||
// Note that this call can potentially create a new lock on a resource that is already locked,
|
||||
// so a locker that allows multiple read locks on the same resource is required.
|
||||
const permissionMap = await this.permissionReader.handleSafe({ credentials: {}, requestedModes });
|
||||
everyone = permissionMap.get(operation.target) ?? {};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user