Skip to content

Commit 13bad52

Browse files
committed
feat: separated auth context methods
1 parent 7b389a9 commit 13bad52

File tree

6 files changed

+245
-198
lines changed

6 files changed

+245
-198
lines changed

packages/auth-helpers/src/lib/recap/resource-builder.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import {
55
LitPaymentDelegationResource,
66
LitPKPResource,
77
} from '../resources';
8-
import { ResourceAbilityRequestBuilder } from './resource-builder';
8+
import { createResourceBuilder } from './resource-builder';
99

10-
describe('ResourceAbilityRequestBuilder', () => {
11-
let builder: ResourceAbilityRequestBuilder;
10+
describe('createResourceBuilder', () => {
11+
let builder: ReturnType<typeof createResourceBuilder>;
1212

1313
beforeEach(() => {
14-
builder = new ResourceAbilityRequestBuilder();
14+
builder = createResourceBuilder();
1515
});
1616

1717
it('should build an array of resource ability requests', () => {
@@ -21,7 +21,7 @@ describe('ResourceAbilityRequestBuilder', () => {
2121
.addPKPSigningRequest(resourceId1)
2222
.addLitActionExecutionRequest(resourceId2);
2323

24-
const requests = builder.build();
24+
const requests = builder.requests;
2525
expect(JSON.stringify(requests)).toBe(
2626
JSON.stringify([
2727
{
@@ -44,7 +44,7 @@ describe('ResourceAbilityRequestBuilder', () => {
4444
.addAccessControlConditionDecryptionRequest('abc') // ACC Decryption
4545
.addPaymentDelegationRequest('def'); // Payment Delegation
4646

47-
const requests = builder.build();
47+
const requests = builder.requests;
4848
expect(JSON.stringify(requests)).toBe(
4949
JSON.stringify([
5050
{

packages/auth-helpers/src/lib/recap/resource-builder.ts

Lines changed: 78 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import {
88
} from '../resources';
99

1010
/**
11-
* Lit resrouce ability request builder for creating resource ability requests.
11+
* Creates a resource ability request builder for creating resource ability requests.
1212
*
1313
* @example
14-
* import { ResourceAbilityRequestBuilder } from '@lit-protocol/auth-helpers';
14+
* import { createResourceBuilder } from '@lit-protocol/auth-helpers';
1515
16-
const builder = new ResourceAbilityRequestBuilder();
16+
const builder = createResourceBuilder();
1717
1818
builder
1919
.addPKPSigningRequest('*') // PKP Signing
@@ -25,82 +25,87 @@ builder
2525
const requests = builder.build();
2626
2727
*/
28-
export class ResourceAbilityRequestBuilder {
29-
private requests: Array<{
28+
export const createResourceBuilder = () => {
29+
const requests: Array<{
3030
resource: ILitResource;
3131
ability: LIT_ABILITY_VALUES;
3232
}> = [];
3333

34-
/**
35-
* Adds a PKP signing request to the builder.
36-
* @param resourceId - The ID of the resource.
37-
* @returns The builder instance.
38-
*/
39-
addPKPSigningRequest(resourceId: string): this {
40-
this.requests.push({
41-
resource: new LitPKPResource(resourceId),
42-
ability: LIT_ABILITY.PKPSigning,
43-
});
44-
return this;
45-
}
34+
return {
35+
/**
36+
* Adds a PKP signing request to the builder.
37+
* @param resourceId - The ID of the resource.
38+
* @returns The builder instance.
39+
*/
40+
addPKPSigningRequest(resourceId: string) {
41+
requests.push({
42+
resource: new LitPKPResource(resourceId),
43+
ability: LIT_ABILITY.PKPSigning,
44+
});
45+
return this;
46+
},
4647

47-
/**
48-
* Adds a Lit action execution request to the builder.
49-
* @param resourceId - The ID of the resource.
50-
* @returns The builder instance.
51-
*/
52-
addLitActionExecutionRequest(resourceId: string): this {
53-
this.requests.push({
54-
resource: new LitActionResource(resourceId),
55-
ability: LIT_ABILITY.LitActionExecution,
56-
});
57-
return this;
58-
}
48+
/**
49+
* Adds a Lit action execution request to the builder.
50+
* @param resourceId - The ID of the resource.
51+
* @returns The builder instance.
52+
*/
53+
addLitActionExecutionRequest(resourceId: string) {
54+
requests.push({
55+
resource: new LitActionResource(resourceId),
56+
ability: LIT_ABILITY.LitActionExecution,
57+
});
58+
return this;
59+
},
5960

60-
/**
61-
* Adds an access control condition signing request to the builder.
62-
* @param resourceId - The ID of the resource.
63-
* @returns The builder instance.
64-
*/
65-
addAccessControlConditionSigningRequest(resourceId: string): this {
66-
this.requests.push({
67-
resource: new LitAccessControlConditionResource(resourceId),
68-
ability: LIT_ABILITY.AccessControlConditionSigning,
69-
});
70-
return this;
71-
}
61+
/**
62+
* Adds an access control condition signing request to the builder.
63+
* @param resourceId - The ID of the resource.
64+
* @returns The builder instance.
65+
*/
66+
addAccessControlConditionSigningRequest(resourceId: string) {
67+
requests.push({
68+
resource: new LitAccessControlConditionResource(resourceId),
69+
ability: LIT_ABILITY.AccessControlConditionSigning,
70+
});
71+
return this;
72+
},
7273

73-
/**
74-
* Adds an access control condition decryption request to the builder.
75-
* @param resourceId - The ID of the resource.
76-
* @returns The builder instance.
77-
*/
78-
addAccessControlConditionDecryptionRequest(resourceId: string): this {
79-
this.requests.push({
80-
resource: new LitAccessControlConditionResource(resourceId),
81-
ability: LIT_ABILITY.AccessControlConditionDecryption,
82-
});
83-
return this;
84-
}
74+
/**
75+
* Adds an access control condition decryption request to the builder.
76+
* @param resourceId - The ID of the resource.
77+
* @returns The builder instance.
78+
*/
79+
addAccessControlConditionDecryptionRequest(resourceId: string) {
80+
requests.push({
81+
resource: new LitAccessControlConditionResource(resourceId),
82+
ability: LIT_ABILITY.AccessControlConditionDecryption,
83+
});
84+
return this;
85+
},
8586

86-
/**
87-
* Adds a rate limit increase authentication request to the builder.
88-
* @param resourceId - The ID of the resource.
89-
* @returns The builder instance.
90-
*/
91-
addPaymentDelegationRequest(resourceId: string): this {
92-
this.requests.push({
93-
resource: new LitPaymentDelegationResource(resourceId),
94-
ability: LIT_ABILITY.PaymentDelegation,
95-
});
96-
return this;
97-
}
87+
/**
88+
* Adds a rate limit increase authentication request to the builder.
89+
* @param resourceId - The ID of the resource.
90+
* @returns The builder instance.
91+
*/
92+
addPaymentDelegationRequest(resourceId: string) {
93+
requests.push({
94+
resource: new LitPaymentDelegationResource(resourceId),
95+
ability: LIT_ABILITY.PaymentDelegation,
96+
});
97+
return this;
98+
},
9899

99-
/**
100-
* Builds the array of resource ability requests.
101-
* @returns The array of resource ability requests.
102-
*/
103-
build(): Array<{ resource: ILitResource; ability: LIT_ABILITY_VALUES }> {
104-
return this.requests;
105-
}
106-
}
100+
/**
101+
* Return the array of resource ability requests.
102+
* @returns The array of resource ability requests.
103+
*/
104+
get requests(): Array<{
105+
resource: ILitResource;
106+
ability: LIT_ABILITY_VALUES;
107+
}> {
108+
return requests;
109+
},
110+
};
111+
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { LitNodeClient } from '@lit-protocol/lit-node-client';
2+
import { AuthSig, LitResourceAbilityRequest } from '@lit-protocol/types';
3+
4+
export interface BaseIdentity {
5+
pkpPublicKey: string;
6+
}
7+
8+
/**
9+
* Any auth context type must implement this interface.
10+
*/
11+
export interface BaseAuthContextType<T extends BaseIdentity> {
12+
litNodeClient: LitNodeClient;
13+
resources: LitResourceAbilityRequest[];
14+
capabilityAuthSigs?: AuthSig[];
15+
identity: T;
16+
}

packages/auth/src/lib/AuthManager/authContexts/getEoaAuthContext.ts renamed to packages/auth/src/lib/AuthManager/authContexts/prepareEoaAuthContext.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
11
import {
22
createSiweMessageWithRecaps,
3-
generateAuthSig
3+
generateAuthSig,
44
} from '@lit-protocol/auth-helpers';
55
import { LitNodeClient } from '@lit-protocol/lit-node-client';
66
import {
77
AuthCallbackParams,
88
AuthSig,
99
LitResourceAbilityRequest,
1010
} from '@lit-protocol/types';
11+
import { BaseAuthContextType, BaseIdentity } from './BaseAuthContextType';
1112

12-
interface GetEoaAuthContextParams {
13-
litNodeClient: LitNodeClient;
14-
identity: {
15-
pkpPublicKey: string;
16-
signer: {
17-
signMessage: (message: any) => Promise<string>;
18-
getAddress?: () => Promise<string>;
19-
};
20-
signerAddress: `0x${string}`;
13+
interface EoaIdentity extends BaseIdentity {
14+
signer: {
15+
signMessage: (message: any) => Promise<string>;
16+
getAddress?: () => Promise<string>;
2117
};
22-
resources: LitResourceAbilityRequest[];
23-
capabilityAuthSigs?: AuthSig[];
18+
signerAddress: `0x${string}`;
2419
}
2520

26-
export const getEoaAuthContext = (params: GetEoaAuthContextParams) => {
21+
export interface PrepareEoaAuthContextParams
22+
extends BaseAuthContextType<EoaIdentity> {
23+
identity: EoaIdentity;
24+
}
25+
26+
export const prepareEoaAuthContext = async (
27+
params: PrepareEoaAuthContextParams
28+
) => {
2729
return {
2830
pkpPublicKey: params.identity.pkpPublicKey,
2931
chain: 'ethereum',
@@ -79,7 +81,7 @@ export const getEoaAuthContext = (params: GetEoaAuthContextParams) => {
7981

8082
// console.log('resourceRequests', JSON.stringify(resourceRequests, null, 2));
8183

82-
// const authContext = getEoaAuthContext({
84+
// const authContext = prepareEoaAuthContext({
8385
// litNodeClient: litNodeClient,
8486
// identity: {
8587
// pkpPublicKey: '0x123',

packages/auth/src/lib/AuthManager/authContexts/getPkpAuthContext.ts renamed to packages/auth/src/lib/AuthManager/authContexts/preparePkpAuthContext.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,19 @@ import {
66
LitResourceAbilityRequest,
77
} from '@lit-protocol/types';
88
import { Hex } from 'viem';
9+
import { BaseIdentity } from './BaseAuthContextType';
10+
11+
interface PkpIdentity extends BaseIdentity {
12+
pkpPublicKey: Hex;
13+
authMethods: AuthMethod[];
14+
}
915

1016
/**
1117
* Interface for parameters required to get the native auth context.
1218
*/
13-
interface GetNativeAuthContextParams {
19+
export interface PreparePkpAuthContextParams {
1420
litNodeClient: LitNodeClient;
15-
identity: {
16-
pkpPublicKey: Hex;
17-
authMethods: AuthMethod[];
18-
};
21+
identity: PkpIdentity;
1922
resources: LitResourceAbilityRequest[];
2023
capabilityAuthSigs?: AuthSig[];
2124
expiration?: string;
@@ -25,11 +28,11 @@ interface GetNativeAuthContextParams {
2528
* Get the auth context for a Lit supported native auth method (eg. WebAuthn, Discord, Google).
2629
* This context is needed for requesting session signatures with PKP-based authentication.
2730
*
28-
* @param {GetNativeAuthContextParams} params - Parameters for getting the native auth context.
31+
* @param {PreparePkpAuthContextParams} params - Parameters for getting the native auth context.
2932
* @returns {AuthenticationContext} The authentication context object.
3033
*/
31-
export const getPkpAuthContext = (
32-
params: GetNativeAuthContextParams
34+
export const preparePkpAuthContext = (
35+
params: PreparePkpAuthContextParams
3336
): AuthenticationContext => {
3437
const authContext = params.litNodeClient.getPkpAuthContext({
3538
pkpPublicKey: params.identity.pkpPublicKey,

0 commit comments

Comments
 (0)