From 5ba720af4eba3c278aaeb525d830a0b71aeb335b Mon Sep 17 00:00:00 2001 From: Liran Cohen Date: Tue, 13 Aug 2024 23:03:15 -0400 Subject: [PATCH] PermissionsApi for Agent, `permissions` API for `Web5` (#833) This refactors a lot of what's in https://github.com/TBD54566975/web5-js/pull/824 with regards to creating/fetching grants. Satisfies: https://github.com/TBD54566975/web5-js/issues/827 Introduces a `PermissionsApi` interface and an `AgentPermissionsApi` concrete implementation. The interface implements the following methods `fetchGrants`, `fetchRequests`, `isGrantRevoked`, `createGrant`, `createRequest`, `createRevocation` as convenience methods for dealing with the built-in permission protocol records. The `AgentPermissionsApi` implements an additional static method `matchGrantFromArray` which was moved from a `PermissionsUtil` class, which is used to find the appropriate grant to use when authoring a message. A Private API usedin a connected state to find and cache the correct grants to use for the request. A Permissions API which implements `request`, `grant`, `queryRequests`, and `queryGrants` that a user can utilize The `Web5` permissions api introduces 3 helper classes to represent permissions: Class to represent a permission request record. It implements convenience methods similar to the `Record` class where you can `store()`, `import()` or `send()` the underlying request record. Additionally a `grant()` method will create a `PermissionGrant` object. Class to represent a grant record. It implements convenience methods similar to the `Record` class where you can `store()`, `import()` or `send()` the underlying grant record. Additionally a `revoke()` method will create a `GrantRevocation` object, and `isRevoked()` will check if the underlying grant has been revoked. Class to represent a permission grant revocation record. It implements convenience methods similar to the `Record` class where you can `store()` or `send()` the underlying revocation record. --- packages/api/tests/dwn-api.spec.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/api/tests/dwn-api.spec.ts b/packages/api/tests/dwn-api.spec.ts index 870b0caa5..16ae2f8bc 100644 --- a/packages/api/tests/dwn-api.spec.ts +++ b/packages/api/tests/dwn-api.spec.ts @@ -46,10 +46,6 @@ describe('DwnApi', () => { // Instantiate DwnApi for both test identities. dwnAlice = new DwnApi({ agent: testHarness.agent, connectedDid: aliceDid.uri }); dwnBob = new DwnApi({ agent: testHarness.agent, connectedDid: bobDid.uri }); - - // clear cached permissions between test runs - dwnAlice['cachedPermissions'].clear(); - dwnBob['cachedPermissions'].clear(); }); after(async () => {