Skip to content

Commit 8d29f3a

Browse files
committed
feat: add importing of a VyCognitoProvider
1 parent bef6143 commit 8d29f3a

File tree

2 files changed

+81
-1
lines changed

2 files changed

+81
-1
lines changed

src/vy-cognito-provider-base.ts

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import type { IConstruct } from "constructs"
2+
import type { VyEnvironment } from "./shared/types"
3+
4+
export interface VyCognitoProviderAttributes {
5+
/**
6+
* The Vy Cognito environment to connect to (e.g., VyEnvironment.PROD, VyEnvironment.STAGE, VyEnvironment.TEST)
7+
*/
8+
readonly environment: VyEnvironment
9+
10+
/**
11+
* Base domain for Cognito service
12+
*/
13+
readonly cognitoBaseDomain: string
14+
15+
/**
16+
* Static App Client provider service token
17+
*/
18+
readonly appClientProviderServiceToken: string
19+
20+
/**
21+
* Static Resource Server provider service token
22+
*/
23+
readonly resourceServerProviderServiceToken: string
24+
}
25+
26+
export interface IVyCognitoProvider extends IConstruct {
27+
/**
28+
* The Vy Cognito environment to connect to (e.g., VyEnvironment.PROD, VyEnvironment.STAGE, VyEnvironment.TEST)
29+
*/
30+
readonly environment: VyEnvironment
31+
32+
/**
33+
* Base domain for Cognito service
34+
*/
35+
readonly cognitoBaseDomain: string
36+
37+
/**
38+
* Static Cognito details for this VyCognitoProvider
39+
*/
40+
readonly details: any
41+
42+
/**
43+
* Static App Client provider
44+
*/
45+
readonly appClientProvider: any
46+
47+
/**
48+
* Static Resource Server provider
49+
*/
50+
readonly resourceServerProvider: any
51+
}

src/vy-cognito-provider.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import * as logs from "aws-cdk-lib/aws-logs"
99
import * as cr from "aws-cdk-lib/custom-resources"
1010
import { Construct } from "constructs"
1111
import type { CognitoDetails, VyEnvironment } from "./shared/types"
12+
import type {
13+
IVyCognitoProvider,
14+
VyCognitoProviderAttributes,
15+
} from "./vy-cognito-provider-base"
1216

1317
const require = createRequire(import.meta.url)
1418
const __filename = fileURLToPath(import.meta.url)
@@ -43,13 +47,38 @@ export interface ResourceServerProvider {
4347
serviceToken: string
4448
}
4549

46-
export class VyCognitoProvider extends Construct {
50+
export class VyCognitoProvider extends Construct implements IVyCognitoProvider {
4751
public readonly environment: VyEnvironment
4852
public readonly cognitoBaseDomain: string
4953
public readonly details: CognitoDetails
5054
public readonly appClientProvider: AppClientProvider
5155
public readonly resourceServerProvider: ResourceServerProvider
5256

57+
public static fromVyCognitoProviderAttributes(
58+
scope: Construct,
59+
id: string,
60+
attrs: VyCognitoProviderAttributes,
61+
): IVyCognitoProvider {
62+
class Import extends Construct implements IVyCognitoProvider {
63+
public readonly environment = attrs.environment
64+
public readonly cognitoBaseDomain = attrs.cognitoBaseDomain
65+
public readonly details = getCognitoDetailsForEnvironment(
66+
attrs.environment,
67+
)
68+
public readonly appClientProvider = {
69+
environment: attrs.environment,
70+
serviceToken: attrs.appClientProviderServiceToken,
71+
auth_url: getCognitoDetailsForEnvironment(attrs.environment).authUrl,
72+
}
73+
public readonly resourceServerProvider = {
74+
environment: attrs.environment,
75+
serviceToken: attrs.resourceServerProviderServiceToken,
76+
}
77+
}
78+
79+
return new Import(scope, id)
80+
}
81+
5382
constructor(scope: Construct, id: string, props: VyCognitoProviderProps) {
5483
super(scope, id)
5584

0 commit comments

Comments
 (0)