packages/@aws-cdk/cloudformation-diff/lib/iam/iam-identity-center.ts (94 lines of code) (raw):
// namespace object imports won't work in the bundle for function exports
// eslint-disable-next-line @typescript-eslint/no-require-imports
const deepEqual = require('fast-deep-equal');
/**
* This namespace should be a subset of the L1 CfnPermissionSet, other than
* capitalization, since the values come from from a parsed CFN template.
*/
export namespace ISsoPermissionSet {
export interface Props {
readonly name: string | undefined;
readonly cfnLogicalId: string | undefined;
readonly ssoInstanceArn: string | undefined;
readonly ssoPermissionsBoundary: ISsoPermissionSet.PermissionsBoundary | undefined;
readonly ssoCustomerManagedPolicyReferences: ISsoPermissionSet.CustomerManagedPolicyReference[] | undefined;
}
export interface PermissionsBoundary {
readonly CustomerManagedPolicyReference?: CustomerManagedPolicyReference;
readonly ManagedPolicyArn?: string;
}
export interface CustomerManagedPolicyReference {
readonly Name: string | undefined;
readonly Path: string | undefined;
}
}
export class SsoPermissionSet implements ISsoPermissionSet.Props {
public readonly name: string | undefined;
public readonly cfnLogicalId: string | undefined;
public readonly ssoInstanceArn: string | undefined;
public readonly ssoPermissionsBoundary: ISsoPermissionSet.PermissionsBoundary | undefined;
public readonly ssoCustomerManagedPolicyReferences: ISsoPermissionSet.CustomerManagedPolicyReference[] | undefined;
constructor(props: ISsoPermissionSet.Props) {
this.cfnLogicalId = props.cfnLogicalId;
this.name = props.name;
this.ssoInstanceArn = props.ssoInstanceArn;
this.ssoPermissionsBoundary = props.ssoPermissionsBoundary;
this.ssoCustomerManagedPolicyReferences = props.ssoCustomerManagedPolicyReferences;
}
public equal(other: SsoPermissionSet): boolean {
return deepEqual(this, other);
}
}
export namespace ISsoAssignment {
export interface Props {
readonly ssoInstanceArn: string | undefined;
readonly cfnLogicalId: string | undefined;
readonly permissionSetArn: string | undefined;
readonly principalId: string | undefined;
readonly principalType: string | undefined;
readonly targetId: string | undefined;
readonly targetType: string | undefined;
}
}
export class SsoAssignment implements ISsoAssignment.Props {
public readonly cfnLogicalId: string | undefined;
public readonly ssoInstanceArn: string | undefined;
public readonly permissionSetArn: string | undefined;
public readonly principalId: string | undefined;
public readonly principalType: string | undefined;
public readonly targetId: string | undefined;
public readonly targetType: string | undefined;
constructor(props: ISsoAssignment.Props) {
this.cfnLogicalId = props.cfnLogicalId;
this.ssoInstanceArn = props.ssoInstanceArn;
this.permissionSetArn = props.permissionSetArn;
this.principalId = props.principalId;
this.principalType = props.principalType;
this.targetId = props.targetId;
this.targetType = props.targetType;
}
public equal(other: SsoAssignment): boolean {
return deepEqual(this, other);
}
}
/**
* AWS::SSO::InstanceAccessControlAttributeConfiguration
*/
export interface ISsoInstanceACAConfigProps {
ssoInstanceArn: string;
}
export namespace ISsoInstanceACAConfig {
export type AccessControlAttribute = {
Key: string | undefined;
Value: { Source: string[] } | undefined;
} | undefined;
export interface Props {
readonly ssoInstanceArn: string | undefined;
readonly cfnLogicalId: string | undefined;
readonly accessControlAttributes?: AccessControlAttribute[] | undefined;
}
}
export class SsoInstanceACAConfig implements ISsoInstanceACAConfig.Props {
public readonly cfnLogicalId: string | undefined;
public readonly ssoInstanceArn: string | undefined;
public readonly accessControlAttributes?: ISsoInstanceACAConfig.AccessControlAttribute[] | undefined;
constructor(props: ISsoInstanceACAConfig.Props) {
this.cfnLogicalId = props.cfnLogicalId;
this.ssoInstanceArn = props.ssoInstanceArn;
this.accessControlAttributes = props.accessControlAttributes;
}
public equal(other: SsoInstanceACAConfig): boolean {
return deepEqual(this, other);
}
}