1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-10 05:13:29 +00:00

EC-265 - SCIM configuration page in org admin (#3065)

* EC-265 - Initial stubs for SCIM config UI

* EC-265 - Scim config screen and plumbing

* EC-265 - Scim config component works! Needs cleanup

* EC-265 - Finalize scim config screen

* EC-265 - Remove  scim url from storage and env urls

* EC-265 - Refactor to use new component library

* EC-265 - Angular warnings on disabled attr resolved

* EC-265 - Continued transition to new components

* EC-265 - Page loading spinner pattern

* EC-265 - final SCIM configuration form changes

* scim cleanup

* use scim urls

* suggested changes

* feedback fixes

* remove return

* Move scimUrl logic to EnvironmentService

* Refactor scim url handling

Co-authored-by: Kyle Spearrin <kyle.spearrin@gmail.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
This commit is contained in:
Chad Scharf
2022-07-15 09:35:30 -04:00
committed by GitHub
parent cb3e991b2b
commit e32c4083f3
28 changed files with 417 additions and 16 deletions

View File

@@ -1,7 +1,8 @@
{
"urls": {
"icons": "https://icons.bitwarden.net",
"notifications": "https://notifications.bitwarden.com"
"notifications": "https://notifications.bitwarden.com",
"scim": "https://scim.bitwarden.com"
},
"stripeKey": "pk_live_bpN0P37nMxrMQkcaHXtAybJk",
"braintreeKey": "production_qfbsv8kc_njj2zjtyngtjmbjd",

View File

@@ -1,6 +1,7 @@
{
"urls": {
"notifications": "http://localhost:61840"
"notifications": "http://localhost:61840",
"scim": "http://localhost:44559"
},
"dev": {
"proxyApi": "http://localhost:4000",

View File

@@ -1,7 +1,8 @@
{
"urls": {
"icons": "https://icons.qa.bitwarden.pw",
"notifications": "https://notifications.qa.bitwarden.pw"
"notifications": "https://notifications.qa.bitwarden.pw",
"scim": "https://scim.qa.bitwarden.pw"
},
"dev": {
"proxyApi": "https://api.qa.bitwarden.pw",

View File

@@ -86,6 +86,9 @@ export class OrganizationLayoutComponent implements OnInit, OnDestroy {
case this.organization.canManageSso:
route = "manage/sso";
break;
case this.organization.canManageScim:
route = "manage/scim";
break;
case this.organization.canAccessEventLogs:
route = "manage/events";
break;

View File

@@ -44,6 +44,14 @@
>
{{ "singleSignOn" | i18n }}
</a>
<a
routerLink="scim"
class="list-group-item"
routerLinkActive="active"
*ngIf="organization.canManageScim && accessScim"
>
{{ "scim" | i18n }}
</a>
<a
routerLink="events"
class="list-group-item"

View File

@@ -14,6 +14,7 @@ export class ManageComponent implements OnInit {
accessGroups = false;
accessEvents = false;
accessSso = false;
accessScim = false;
constructor(private route: ActivatedRoute, private organizationService: OrganizationService) {}
@@ -24,6 +25,7 @@ export class ManageComponent implements OnInit {
this.accessSso = this.organization.useSso;
this.accessEvents = this.organization.useEvents;
this.accessGroups = this.organization.useGroups;
this.accessScim = this.organization.useScim;
});
}
}

View File

@@ -13,6 +13,7 @@ const permissions = {
Permissions.ManageUsers,
Permissions.ManagePolicies,
Permissions.ManageSso,
Permissions.ManageScim,
],
tools: [Permissions.AccessImportExport, Permissions.AccessReports],
settings: [Permissions.ManageOrganization],

View File

@@ -5184,6 +5184,60 @@
}
}
},
"scim": {
"message": "SCIM Provisioning",
"description": "The text, 'SCIM', is an acronymn and should not be translated."
},
"scimDescription": {
"message": "Automatically provision users and groups with your preferred identity provider via SCIM provisioning",
"description": "the text, 'SCIM', is an acronymn and should not be translated."
},
"scimEnabledCheckboxDesc": {
"message": "Enable SCIM",
"description": "the text, 'SCIM', is an acronymn and should not be translated."
},
"scimEnabledCheckboxDescHelpText": {
"message": "Set up your preferred identity provider by configuring the URL and SCIM API Key",
"description": "the text, 'SCIM', is an acronymn and should not be translated."
},
"scimApiKeyHelperText": {
"message": "This API key has access to manage users within your organization. It should be kept secret."
},
"copyScimKey": {
"message": "Copy the SCIM API Key to your clipboard",
"description": "the text, 'SCIM' and 'API', are acronymns and should not be translated."
},
"rotateScimKey": {
"message": "Rotate the SCIM API Key",
"description": "the text, 'SCIM' and 'API', are acronymns and should not be translated."
},
"rotateScimKeyWarning": {
"message": "Are you sure you want to rotate the SCIM API Key? The current key will no longer work for any existing integrations.",
"description": "the text, 'SCIM' and 'API', are acronymns and should not be translated."
},
"rotateKey": {
"message": "Rotate Key"
},
"scimApiKey": {
"message": "SCIM API Key",
"description": "the text, 'SCIM' and 'API', are acronymns and should not be translated."
},
"copyScimUrl": {
"message": "Copy the SCIM endpoint URL to your clipboard",
"description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated."
},
"scimUrl": {
"message": "SCIM URL",
"description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated."
},
"scimApiKeyRotated": {
"message": "The SCIM API Key has been successfully rotated",
"description": "the text, 'SCIM' and 'API', are acronymns and should not be translated."
},
"scimSettingsSaved": {
"message": "SCIM settings have been saved successfully",
"description": "the text, 'SCIM', is an acronymn and should not be translated."
},
"inputRequired": {
"message": "Input is required."
},