feat: Change permission interface to store identifiers

This commit is contained in:
Joachim Van Herwegen
2022-06-29 10:54:04 +02:00
parent b5d5071403
commit 23f0b37c28
11 changed files with 84 additions and 45 deletions

View File

@@ -63,15 +63,15 @@ export class AuthorizingHttpHandler extends OperationHttpHandler {
const credentials: CredentialSet = await this.credentialsExtractor.handleSafe(request);
this.logger.verbose(`Extracted credentials: ${JSON.stringify(credentials)}`);
const modes = await this.modesExtractor.handleSafe(operation);
this.logger.verbose(`Required modes are read: ${[ ...modes ].join(',')}`);
const requestedModes = await this.modesExtractor.handleSafe(operation);
this.logger.verbose(`Retrieved required modes: ${[ ...requestedModes ].join(',')}`);
const permissionSet = await this.permissionReader.handleSafe({ credentials, identifier: operation.target, modes });
this.logger.verbose(`Available permissions are ${JSON.stringify(permissionSet)}`);
const availablePermissions = await this.permissionReader.handleSafe({ credentials, requestedModes });
this.logger.verbose(`Available permissions are ${JSON.stringify(availablePermissions)}`);
try {
await this.authorizer.handleSafe({ credentials, identifier: operation.target, modes, permissionSet });
operation.permissionSet = permissionSet;
await this.authorizer.handleSafe({ credentials, requestedModes, availablePermissions });
operation.availablePermissions = availablePermissions;
} catch (error: unknown) {
this.logger.verbose(`Authorization failed: ${(error as any).message}`);
throw error;