Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SM-1159: Rename Service Accounts to Machine Accounts #8444

Merged
merged 14 commits into from Apr 5, 2024
Merged
Expand Up @@ -154,7 +154,7 @@ export class EventsComponent extends BaseEventsComponent implements OnInit, OnDe

if (r.serviceAccountId) {
return {
name: this.i18nService.t("serviceAccount") + " " + this.getShortId(r.serviceAccountId),
name: this.i18nService.t("machineAccount") + " " + this.getShortId(r.serviceAccountId),
};
}

Expand Down
Expand Up @@ -33,7 +33,7 @@
</bit-hint>
</bit-form-field>
<bit-form-field class="tw-w-2/3">
<bit-label>{{ "additionalServiceAccounts" | i18n }}</bit-label>
<bit-label>{{ "additionalMachineAccounts" | i18n }}</bit-label>
<input
bitInput
id="additionalServiceAccountCount"
Expand All @@ -44,8 +44,8 @@
/>
<bit-hint>
<div>
cyprain-okeke marked this conversation as resolved.
Show resolved Hide resolved
{{ "includedServiceAccounts" | i18n: options.baseServiceAccountCount }}
{{ "addAdditionalServiceAccounts" | i18n: (monthlyServiceAccountPrice | currency: "$") }}
{{ "includedMachineAccounts" | i18n: options.baseServiceAccountCount }}
{{ "addAdditionalMachineAccounts" | i18n: (monthlyServiceAccountPrice | currency: "$") }}
</div>
<div>
<strong>{{ "total" | i18n }}:</strong>
Expand All @@ -56,19 +56,19 @@
</bit-hint>
</bit-form-field>
<bit-form-control>
<bit-label>{{ "limitServiceAccounts" | i18n }}</bit-label>
<bit-label>{{ "limitMachineAccounts" | i18n }}</bit-label>
<input
type="checkbox"
bitCheckbox
id="limitServiceAccounts"
formControlName="limitServiceAccounts"
/>
<bit-hint>
{{ "limitServiceAccountsDesc" | i18n }}
{{ "limitMachineAccountsDesc" | i18n }}
</bit-hint>
</bit-form-control>
<bit-form-field class="tw-w-2/3" *ngIf="formGroup.value.limitServiceAccounts">
<bit-label>{{ "serviceAccountLimit" | i18n }}</bit-label>
<bit-label>{{ "machineAccountLimit" | i18n }}</bit-label>
<input
bitInput
id="additionalServiceAccountLimit"
Expand All @@ -79,9 +79,9 @@
/>
<bit-hint>
<div>
{{ "includedServiceAccounts" | i18n: options.baseServiceAccountCount }}
{{ "includedMachineAccounts" | i18n: options.baseServiceAccountCount }}
</div>
<strong>{{ "maxServiceAccountCost" | i18n }}:</strong>
<strong>{{ "maxMachineAccountCost" | i18n }}:</strong>
{{ maxAdditionalServiceAccounts }} &times;
{{ options.additionalServiceAccountPrice | currency: "$" }} =
{{ maxServiceAccountTotalCost | currency: "$" }} / {{ options.interval | i18n }}
Expand Down
10 changes: 5 additions & 5 deletions apps/web/src/app/billing/shared/sm-subscribe.component.html
Expand Up @@ -20,10 +20,10 @@ <h4 bitTypography="h4">{{ "secretsManagerForPlan" | i18n: planName }}</h4>
<ng-template #unlimitedProjects>
<li>{{ "unlimitedProjects" | i18n }}</li>
</ng-template>
<li>{{ "serviceAccountsIncluded" | i18n: serviceAccountsIncluded }}</li>
<li>{{ "machineAccountsIncluded" | i18n: serviceAccountsIncluded }}</li>
<li *ngIf="product != productTypes.Free">
{{
"additionalServiceAccountCost" | i18n: (monthlyCostPerServiceAccount | currency: "$")
"additionalMachineAccountCost" | i18n: (monthlyCostPerServiceAccount | currency: "$")
cturnbull-bitwarden marked this conversation as resolved.
Show resolved Hide resolved
}}
</li>
</ul>
Expand Down Expand Up @@ -54,12 +54,12 @@ <h4 bitTypography="h4">{{ "secretsManagerForPlan" | i18n: planName }}</h4>
</div>
<div *ngIf="selectedPlan.SecretsManager.hasAdditionalServiceAccountOption" class="tw-w-1/2">
<bit-form-field>
<bit-label>{{ "additionalServiceAccounts" | i18n }}</bit-label>
<bit-label>{{ "additionalMachineAccounts" | i18n }}</bit-label>
<input bitInput formControlName="additionalServiceAccounts" type="number" />
<bit-hint>
{{ "includedServiceAccounts" | i18n: serviceAccountsIncluded }}
{{ "includedMachineAccounts" | i18n: serviceAccountsIncluded }}
{{
"addAdditionalServiceAccounts" | i18n: (monthlyCostPerServiceAccount | currency: "$")
"addAdditionalMachineAccounts" | i18n: (monthlyCostPerServiceAccount | currency: "$")
}}
</bit-hint>
</bit-form-field>
Expand Down
Expand Up @@ -39,7 +39,7 @@ const Template: Story = (args) => ({
template: `
<app-onboarding title="Get started">
<app-onboarding-task
[title]="'createServiceAccount' | i18n"
[title]="'createMachineAccount' | i18n"
icon="bwi-cli"
[completed]="createServiceAccount"
>
Expand Down
170 changes: 170 additions & 0 deletions apps/web/src/locales/en/messages.json
Expand Up @@ -7642,5 +7642,175 @@
},
"items": {
"message": "Items"
},
"machineAccountsCannotCreate": {
"message": "Machine accounts cannot be created in suspended organizations. Please contact your organization owner for assistance."
},
"machineAccount": {
"message": "Machine account",
"description": "A machine user which can be used to automate processes and access secrets in the system."
},
"machineAccounts": {
"message": "Machine accounts",
"description": "The title for the section that deals with machine accounts."
},
"newMachineAccount": {
"message": "New machine account",
"description": "Title for creating a new machine account."
},
"machineAccountsNoItemsMessage": {
"message": "Create a new machine account to get started automating secret access.",
"description": "Message to encourage the user to start creating machine accounts."
},
"machineAccountsNoItemsTitle": {
"message": "Nothing to show yet",
"description": "Title to indicate that there are no machine accounts to display."
},
"deleteMachineAccounts": {
"message": "Delete machine accounts",
"description": "Title for the action to delete one or multiple machine accounts."
},
"deleteMachineAccount": {
"message": "Delete machine account",
"description": "Title for the action to delete a single machine account."
},
"viewMachineAccount": {
"message": "View machine account",
"description": "Action to view the details of a machine account."
},
"deleteMachineAccountsDialogMessage": {
"message": "Deleting machine accounts is permanent and irreversible."
},
"deleteMachineAccountsConfirmMessage": {
"message": "Delete $COUNT$ machine accounts",
"placeholders": {
"count": {
"content": "$1",
"example": "2"
}
}
},
"deleteMachineAccountsToast": {
"message": "Machine accounts deleted"
},
"searchMachineAccounts": {
"message": "Search machine accounts",
"description": "Placeholder text for searching machine accounts."
},
"projectMachineAccountsDescription": {
"message": "Grant machine accounts access to this project."
},
"projectMachineAccountsSelectHint": {
"message": "Type or select machine accounts"
},
"projectEmptyMachineAccountAccessPolicies": {
"message": "Add machine accounts to grant access"
},
"machineAccountsIncluded": {
"message": "$COUNT$ machine accounts included",
"placeholders": {
"count": {
"content": "$1",
"example": "3"
}
}
},
"additionalMachineAccountCost": {
"message": "$COST$ per month for additional machine accounts",
"placeholders": {
"cost": {
"content": "$1",
"example": "$0.50"
}
}
},
"additionalMachineAccounts": {
"message": "Additional machine accounts"
},
"includedMachineAccounts": {
"message": "Your plan comes with $COUNT$ machine accounts.",
"placeholders": {
"count": {
"content": "$1",
"example": "50"
}
}
},
"addAdditionalMachineAccounts": {
"message": "You can add additional machine accounts for $COST$ per month.",
"placeholders": {
"cost": {
"content": "$1",
"example": "$0.50"
}
}
},
"limitMachineAccounts": {
"message": "Limit machine accounts (optional)"
},
"limitMachineAccountsDesc": {
"message": "Set a limit for your machine accounts. Once this limit is reached, you will not be able to create new machine accounts."
},
"editMachineAccount": {
"message": "Edit machine account",
"description": "Title for editing a machine account."
},
"deleteMachineAccountDialogMessage": {
"message": "Deleting machine account $MACHINE_ACCOUNT$ is permanent and irreversible.",
"placeholders": {
"machine_account": {
"content": "$1",
"example": "Machine account name"
}
}
},
"deleteMachineAccountToast": {
"message": "machine account deleted"
},
"machineAccountName": {
"message": "Machine account name",
"description": "Label for the name of a machine account"
},
"machineAccountPeopleDescription": {
"message": "Grant groups or people access to this machine account."
},
"machineAccountProjectsDescription": {
"message": "Assign projects to this machine account. "
},
"machineAccountEmptyProjectAccessPolicies": {
"message": "Add projects to grant access"
},
"machineAccountLimit": {
"message": "Machine account limit (optional)"
},
"maxMachineAccountCost": {
"message": "Max potential machine account cost"
},
"createMachineAccount": {
"message": "Create a machine account"
},
"machineAccountAccessUpdated": {
"message": "Machine account access updated"
},
"machineAccountCreated": {
"message": "Machine account created",
"description": "Notifies that a new machine account has been created"
},
"machineAccountUpdated": {
"message": "Machine account updated",
"description": "Notifies that a machine account has been updated"
},
"newMaSelectAccess": {
"message": "Type or select projects or secrets",
"description": "Instructions for selecting projects or secrets for a new machine account"
},
"maPeopleWarningMessage": {
"message": "Removing people from a machine account does not remove the access tokens they created. For security best practice, it is recommended to revoke access tokens created by people removed from a machine account."
},
"smAccessRemovalWarningMaTitle": {
"message": "Remove access to this machine account"
},
"smAccessRemovalWarningMaMessage": {
"message": "This action will remove your access to the machine account."
}
}
Expand Up @@ -18,7 +18,7 @@
></bit-nav-item>
<bit-nav-item
icon="bwi-wrench"
[text]="'serviceAccounts' | i18n"
[text]="'machineAccounts' | i18n"
route="service-accounts"
[relativeTo]="route.parent"
></bit-nav-item>
Expand Down
Expand Up @@ -5,7 +5,7 @@
<div *ngIf="!loading && view$ | async as view; else spinner">
<app-onboarding [title]="'getStarted' | i18n" *ngIf="showOnboarding" (dismiss)="hideOnboarding()">
<app-onboarding-task
[title]="'createServiceAccount' | i18n"
[title]="'createMachineAccount' | i18n"
(click)="openServiceAccountDialog()"
icon="bwi-cli"
[completed]="view.tasks.createServiceAccount"
Expand Down
@@ -1,14 +1,14 @@
<div class="tw-w-2/5">
<p class="tw-mt-8">
{{ "projectServiceAccountsDescription" | i18n }}
{{ "projectMachineAccountsDescription" | i18n }}
</p>
<sm-access-selector
[rows]="rows$ | async"
granteeType="serviceAccounts"
[label]="'serviceAccounts' | i18n"
[hint]="'projectServiceAccountsSelectHint' | i18n"
[columnTitle]="'serviceAccounts' | i18n"
[emptyMessage]="'projectEmptyServiceAccountAccessPolicies' | i18n"
[label]="'machineAccounts' | i18n"
[hint]="'projectMachineAccountsSelectHint' | i18n"
[columnTitle]="'machineAccounts' | i18n"
[emptyMessage]="'projectEmptyMachineAccountAccessPolicies' | i18n"
(onCreateAccessPolicies)="handleCreateAccessPolicies($event)"
(onDeleteAccessPolicy)="handleDeleteAccessPolicy($event)"
(onUpdateAccessPolicy)="handleUpdateAccessPolicy($event)"
Expand Down
Expand Up @@ -6,7 +6,7 @@
<bit-tab-link [route]="['secrets']">{{ "secrets" | i18n }}</bit-tab-link>
<ng-container *ngIf="project.write">
<bit-tab-link [route]="['people']">{{ "people" | i18n }}</bit-tab-link>
<bit-tab-link [route]="['service-accounts']">{{ "serviceAccounts" | i18n }}</bit-tab-link>
<bit-tab-link [route]="['service-accounts']">{{ "machineAccounts" | i18n }}</bit-tab-link>
</ng-container>
</bit-tab-nav-bar>
<sm-new-menu></sm-new-menu>
Expand Down
Expand Up @@ -8,7 +8,7 @@
</ng-container>
<ng-container *ngIf="data.serviceAccounts.length > 1">
{{ data.serviceAccounts.length }}
{{ "serviceAccounts" | i18n }}
{{ "machineAccounts" | i18n }}
</ng-container>
</span>
</ng-container>
Expand Down
Expand Up @@ -43,14 +43,14 @@ export class ServiceAccountDeleteDialogComponent {

get title() {
return this.data.serviceAccounts.length === 1
? this.i18nService.t("deleteServiceAccount")
: this.i18nService.t("deleteServiceAccounts");
? this.i18nService.t("deleteMachineAccount")
: this.i18nService.t("deleteMachineAccounts");
}

get dialogContent() {
return this.data.serviceAccounts.length === 1
? this.i18nService.t("deleteServiceAccountDialogMessage", this.data.serviceAccounts[0].name)
: this.i18nService.t("deleteServiceAccountsDialogMessage");
? this.i18nService.t("deleteMachineAccountDialogMessage", this.data.serviceAccounts[0].name)
: this.i18nService.t("deleteMachineAccountsDialogMessage");
}

get dialogConfirmationLabel() {
Expand Down Expand Up @@ -79,17 +79,17 @@ export class ServiceAccountDeleteDialogComponent {

const message =
this.data.serviceAccounts.length === 1
? "deleteServiceAccountToast"
: "deleteServiceAccountsToast";
? "deleteMachineAccountToast"
: "deleteMachineAccountsToast";
this.platformUtilsService.showToast("success", null, this.i18nService.t(message));
}

openBulkStatusDialog(bulkStatusResults: BulkOperationStatus[]) {
this.dialogService.open<unknown, BulkStatusDetails>(BulkStatusDialogComponent, {
data: {
title: "deleteServiceAccounts",
subTitle: "serviceAccounts",
columnTitle: "serviceAccountName",
title: "deleteMachineAccounts",
subTitle: "machineAccounts",
columnTitle: "machineAccountName",
message: "bulkDeleteProjectsErrorMessage",
details: bulkStatusResults,
},
Expand All @@ -100,7 +100,7 @@ export class ServiceAccountDeleteDialogComponent {
return this.data.serviceAccounts?.length === 1
? this.i18nService.t("deleteProjectConfirmMessage", this.data.serviceAccounts[0].name)
: this.i18nService.t(
"deleteServiceAccountsConfirmMessage",
"deleteMachineAccountsConfirmMessage",
this.data.serviceAccounts?.length.toString(),
);
}
Expand Down
Expand Up @@ -7,7 +7,7 @@
</div>
<div *ngIf="!loading">
<bit-form-field>
<bit-label>{{ "serviceAccountName" | i18n }}</bit-label>
<bit-label>{{ "machineAccountName" | i18n }}</bit-label>
<input appAutofocus formControlName="name" bitInput />
</bit-form-field>
</div>
Expand Down