Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,10 @@
# token TTL (5 minutes) has elapsed.
# PROBOD_IDENTITY_FEDERATION_PREVIOUS_SIGNING_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"
# PROBOD_IDENTITY_FEDERATION_PREVIOUS_SIGNING_KEY_KID=previous
# Install artifacts for the AWS audit role. Defaults point at the public
# CloudFormation template and the Terraform Registry module.
# PROBOD_IDENTITY_FEDERATION_CLOUDFORMATION_TEMPLATE_URL=https://probo-cloudformation-template.s3.us-east-2.amazonaws.com/aws-audit-role.yaml
# PROBOD_IDENTITY_FEDERATION_TERRAFORM_MODULE_SOURCE=getprobo/audit-role/aws

# ── Custom domains (step-ca ACME via compose, direct TLS mode only) ───
# PROBOD_CUSTOM_DOMAINS_CNAME_TARGET=custom.getprobo.com
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/release-terraform-aws-audit-role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ jobs:

\`\`\`hcl
module "probo_audit" {
source = "github.com/getprobo/terraform-aws-audit-role?ref=v${VERSION}"
source = "getprobo/audit-role/aws"
version = "${VERSION}"
}
\`\`\`
EOF
Expand Down
41 changes: 40 additions & 1 deletion apps/console/src/_locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -1851,7 +1851,6 @@
},
"addAccessReviewSourceDialog": {
"actions": { "connectWithOAuth": "OAuth", "connectWithGitHubApp": "GitHub App", "connectWithApiKey": "API Key", "connectWithClientCredentials": "Client Credentials", "connectWithWorkloadIdentity": "Workload Identity", "chooseAnotherMethod": "Choose another connection method", "open": "Open" },
"comingSoon": "Coming soon!",
"csv": { "title": "CSV", "description": "Upload CSV data directly as an access source." }
},
"addCampaignSourceDialog": {
Expand Down Expand Up @@ -1897,6 +1896,46 @@
"region": { "placeholder": "Select a region", "us": "United States (US)", "ca": "Canada (CA)", "eu": "Europe (EU)" },
"actions": { "connect": "Connect", "connecting": "Connecting..." }
},
"createAwsAccessReviewSourcePage": {
"pageTitle": "Connect AWS",
"title": "Connect AWS",
"description": "Deploy the audit role. Then enter its ARN.",
"permissionDenied": "You do not have permission to create access sources.",
"fields": {
"roleArn": "Role ARN",
"issuer": "Issuer",
"audience": "Audience",
"subject": "Subject",
"roleArnPlaceholder": "arn:aws:iam::123456789012:role/ProboAudit"
},
"messages": {
"copyFailed": "Copy failed",
"copied": "Copied to clipboard",
"copiedIssuer": "Issuer copied.",
"copiedAudience": "Audience copied.",
"copiedSubject": "Subject copied.",
"copiedTerraform": "Terraform snippet copied.",
"error": "Error",
"success": "Success",
"created": "Access source created successfully."
},
"errors": {
"roleArn": "Enter a valid IAM role ARN.",
"create": "Could not create the connector. Check the role ARN and try again.",
"disconnected": "Probo could not assume the audit role. Confirm the stack is deployed in this account and that the issuer and subject match the values shown during setup.",
"delete": "Could not delete the connector. Try again.",
"source": "Failed to create access source",
"copy": "Copy the value manually."
},
"actions": {
"copy": "Copy",
"connect": "Connect",
"back": "Back",
"installViaCloudFormation": "Install via CloudFormation",
"installViaTerraform": "Install via Terraform",
"chooseAnotherInstallMethod": "Choose another install method"
}
},
"oauthExtraDialog": {
"actions": { "continue": "Continue" },
"datadog": { "title": "Connect Datadog", "description": "Select your Datadog site, then continue to authorize access.", "siteLabel": "Datadog site", "sitePlaceholder": "Select a site" },
Expand Down
41 changes: 40 additions & 1 deletion apps/console/src/_locales/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -3227,7 +3227,6 @@
"chooseAnotherMethod": "Choisir une autre méthode de connexion",
"open": "Ouvrir"
},
"comingSoon": "Bientôt disponible !",
"csv": {
"title": "CSV",
"description": "Téléversez des données CSV directement comme source d’accès."
Expand Down Expand Up @@ -3344,6 +3343,46 @@
"connecting": "Connexion..."
}
},
"createAwsAccessReviewSourcePage": {
"pageTitle": "Connecter AWS",
"title": "Connecter AWS",
"description": "Déployez le rôle d’audit. Saisissez ensuite son ARN.",
"permissionDenied": "Vous n’avez pas la permission de créer des sources d’accès.",
"fields": {
"roleArn": "ARN du rôle",
"issuer": "Émetteur",
"audience": "Audience",
"subject": "Sujet",
"roleArnPlaceholder": "arn:aws:iam::123456789012:role/ProboAudit"
},
"messages": {
"copyFailed": "Échec de la copie",
"copied": "Copié dans le presse-papiers",
"copiedIssuer": "Émetteur copié.",
"copiedAudience": "Audience copiée.",
"copiedSubject": "Sujet copié.",
"copiedTerraform": "Extrait Terraform copié.",
"error": "Erreur",
"success": "Succès",
"created": "Source d’accès créée avec succès."
},
"errors": {
"roleArn": "Saisissez un ARN de rôle IAM valide.",
"create": "Échec de la création du connecteur. Vérifiez l’ARN du rôle et réessayez.",
"disconnected": "Probo n’a pas pu endosser le rôle d’audit. Vérifiez que la stack est déployée dans ce compte et que l’émetteur et le sujet correspondent aux valeurs affichées lors de la configuration.",
"delete": "Impossible de supprimer le connecteur. Réessayez.",
"source": "Échec de la création de la source d’accès",
"copy": "Copiez la valeur manuellement."
},
"actions": {
"copy": "Copier",
"connect": "Connecter",
"back": "Retour",
"installViaCloudFormation": "Installer via CloudFormation",
"installViaTerraform": "Installer via Terraform",
"chooseAnotherInstallMethod": "Choisir une autre méthode d’installation"
}
},
"oauthExtraDialog": {
"actions": {
"continue": "Continuer"
Expand Down
41 changes: 40 additions & 1 deletion apps/console/src/_locales/nl-NL.json
Original file line number Diff line number Diff line change
Expand Up @@ -3231,7 +3231,6 @@
"chooseAnotherMethod": "Kies een andere verbindingsmethode",
"open": "Open"
},
"comingSoon": "Binnenkort beschikbaar!",
"csv": {
"title": "CSV",
"description": "Upload CSV-gegevens direct als toegangsbron."
Expand Down Expand Up @@ -3348,6 +3347,46 @@
"connecting": "Verbinden..."
}
},
"createAwsAccessReviewSourcePage": {
"pageTitle": "AWS verbinden",
"title": "AWS verbinden",
"description": "Implementeer de auditrol. Voer daarna de ARN in.",
"permissionDenied": "U heeft geen rechten om toegangsbronnen aan te maken.",
"fields": {
"roleArn": "Rol-ARN",
"issuer": "Uitgever",
"audience": "Audience",
"subject": "Subject",
"roleArnPlaceholder": "arn:aws:iam::123456789012:role/ProboAudit"
},
"messages": {
"copyFailed": "Kopiëren mislukt",
"copied": "Gekopieerd naar klembord",
"copiedIssuer": "Uitgever gekopieerd.",
"copiedAudience": "Audience gekopieerd.",
"copiedSubject": "Subject gekopieerd.",
"copiedTerraform": "Terraform-fragment gekopieerd.",
"error": "Fout",
"success": "Succes",
"created": "Toegangsbron succesvol aangemaakt."
},
"errors": {
"roleArn": "Voer een geldige IAM-rol-ARN in.",
"create": "Aanmaken van de connector mislukt. Controleer de rol-ARN en probeer het opnieuw.",
"disconnected": "Probo kon de auditrol niet aannemen. Controleer of de stack in dit account is uitgerold en of de issuer en het subject overeenkomen met de waarden die tijdens de installatie zijn getoond.",
"delete": "Kan de connector niet verwijderen. Probeer het opnieuw.",
"source": "Aanmaken van toegangsbron mislukt",
"copy": "Kopieer de waarde handmatig."
},
"actions": {
"copy": "Kopiëren",
"connect": "Verbinden",
"back": "Terug",
"installViaCloudFormation": "Installeren via CloudFormation",
"installViaTerraform": "Installeren via Terraform",
"chooseAnotherInstallMethod": "Kies een andere installatiemethode"
}
},
"oauthExtraDialog": {
"actions": {
"continue": "Doorgaan"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,45 +25,64 @@ import {
IconChevronDown,
} from "@probo/ui";

import type { ConnectMethod } from "../_lib/connectMethods";

export interface ConnectMethodAction {
id: ConnectMethod;
export interface ActionSplitButtonAction {
id: string;
label: string;
onSelect: () => void;
href?: string;
onSelect?: () => void;
}

interface ConnectMethodSplitButtonProps {
actions: ReadonlyArray<ConnectMethodAction>;
interface ActionSplitButtonProps {
actions: ReadonlyArray<ActionSplitButtonAction>;
chooseAnotherMethodLabel: string;
}

export function ConnectMethodSplitButton({
export function ActionSplitButton({
actions,
chooseAnotherMethodLabel,
}: ConnectMethodSplitButtonProps) {
}: ActionSplitButtonProps) {
const [preferredAction, ...alternativeActions] = actions;
if (!preferredAction) {
return null;
}

const splitClassName
= alternativeActions.length > 0 ? "rounded-r-none" : undefined;
const preferredButton = preferredAction.href
? (
<Button
type="button"
variant="primary"
className={splitClassName}
asChild
>
<a
href={preferredAction.href}
target="_blank"
rel="noopener noreferrer"
>
{preferredAction.label}
</a>
</Button>
)
: (
<Button
type="button"
variant="primary"
className={splitClassName}
onClick={preferredAction.onSelect}
>
{preferredAction.label}
</Button>
);

if (alternativeActions.length === 0) {
return (
<Button type="button" variant="primary" onClick={preferredAction.onSelect}>
{preferredAction.label}
</Button>
);
return preferredButton;
}

return (
<div className="flex items-center">
<Button
type="button"
variant="primary"
className="rounded-r-none"
onClick={preferredAction.onSelect}
>
{preferredAction.label}
</Button>
{preferredButton}
<Dropdown
className="min-w-40"
toggle={(
Expand All @@ -77,9 +96,23 @@ export function ConnectMethodSplitButton({
)}
>
{alternativeActions.map(action => (
<DropdownItem key={action.id} onSelect={action.onSelect}>
{action.label}
</DropdownItem>
action.href
? (
<DropdownItem key={action.id} asChild>
<a
href={action.href}
target="_blank"
rel="noopener noreferrer"
>
{action.label}
</a>
</DropdownItem>
)
: (
<DropdownItem key={action.id} onSelect={action.onSelect}>
{action.label}
</DropdownItem>
)
))}
</Dropdown>
</div>
Expand Down
Loading
Loading